0

几年前,我在 MS Excel 中创建了一个数据库来跟踪我的照片。我设计它的方式如下。我有一个主表,其中有一个主键,每张照片都有一个序号 ID。然后我在工作簿中有几张包含同一主题的特定照片的工作表,例如风景(LS)、海景(SC)、日落(SS)等。这些工作表中的每一张都有一个主键,用于对照片 ID 进行排序那个主题。我编写了一个表单,以便在我需要输入新照片时打开。当表单打开时,它将确定主表中的最后一条记录,并将主键增加到序列中的下一个数字。然后我会选择什么表(照片类型 - LS,SC,SS 等),它将确定该特定工作表上的最后一个记录号,并将其输入到表格中。然后我可以输入有关该照片的详细信息,例如曝光设置、位置、拍摄日期、关键词等。然后它将所有这些信息写入主表和特定主题表中。不是最优雅的,但它对我有用。

我想在 MS Access 中复制它,但在打开主表单时,我无法弄清楚如何同时增加主照片编号和主题照片编号。

在 MS Access 中,我创建了一个主表,其中包含 Excel 工作簿主表中存在的所有字段。母版和主题表之间的唯一区别是母版有两列,一列用于主键(主照片编号),另一列用于特定照片的主题。下一列包含特定主题的照片编号。因此,例如,主工作表中的两个连续记录可能如下 slideID = 1245 subject = LS subjectID = 245,然后 slideID = 1246 subject = SS subjectID = 127。在主题工作表中 subjectID 是唯一的唯一标识符。有关照片的所有其他相关信息都复制在主表和主题表中。

所以在 MS Access 中,我有一张主表。我有一个用于输入照片信息的表格。一旦我从表格中选择了主题,如何让它增加主照片 ID 号,目前是表的主键,并增加主题 ID 号?

4

3 回答 3

2

由于您是唯一输入数据的人,因此使用 DMax 是安全的,因为没有其他人可以获取相同的数字。您甚至可以在文本框的默认值中使用 DMax,这意味着每次创建新记录时都会建议该号码,如果创建了记录,建议的号码将变为实际号码。

=DMax("[slideID]","TableNameHere")+1

如果您打算学习数据库设计,还有更多工作要做,因为您的表需要规范化,您不妨阅读关系数据库设计基础,Paul Litwin,2003

于 2009-02-04T10:53:25.143 回答
1

您的主照片表应该包含任何给定照片所需的所有信息。如果您只想查看“风景”,只需创建一个按主题过滤主表的查询。这消除了重复条目。主题表中有关照片的任何字段/数据都可以移动到主表中。

如果您希望您的照片有多个主题,则需要一个 Photo_Subject 表。它需要的唯一字段是:Photo_Subject_ID(自动编号)、PhotoID(来自主表)、SubjectID(或者只是输入主题的名称)。这样,您可以根据需要多次输入同一张照片,并将其与任意数量的主题相关联。您可以在 PhotoID 和 SubjectID 上添加一个索引,以避免重复输入。(是的,我建议避免使用复合主键)。

于 2009-02-04T13:56:05.447 回答
0

你有没有研究过你可以形成的不同类型的关系?例如,一对多关系。您目前在 Access 中建立了哪些关系?

于 2009-02-04T08:58:52.520 回答