【问题标题】:Sequential numbering in database (MSACCESS)数据库中的顺序编号 (MSACCESS)
【发布时间】:2010-10-05 18:12:53
【问题描述】:

总结:

我有一个表,它有一个唯一的主键来标识每条记录。我还有另外三个可以识别记录的字段:

  • 类别
  • 类别编号
  • 重复号码

当我添加新记录并选择类别时,如何让 CategoryNumber 根据是否重复正确递增。

请注意,这是一张大桌子。这只是从 excel 到 access 的升级。

tldr:

昨天我问了如何处理Access中的多个键。可能是我没有问对问题,因为我的问题今天更加令人费解。

这是我正在尝试做的事情以及我遇到困难的地方。

我正在创建一个数据库来跟踪我使用不同相机拍摄的各种不同胶卷和格式的胶卷照片(每张照片共有 18 条不同的独立信息),这些胶卷可以追溯到近 15 年。多年前,我将数据保存在 MS Excel 中,并对输入表单进行了编程,以完成我将要解释的内容。

我想以两种方式跟踪照片。第一个是主照片编号,它可以让我知道我的文件中有多少张照片。这是一个序列号,我从未打算删除该序列中的某些内容。这将是一个唯一标识每张照片的数字。我将其视为整个数据库的主键。

但我还想根据一般组或类别归档幻灯片、底片和透明胶片,以便在需要提交照片或寻找特定内容时快速提取它们。所以我还添加了一个类别标识符(例如,风景也附有“LS”名称,日落时也附有“SS”等)。我还想为每个类别中的每张幻灯片保留一个连续的序列号。所以例如我的数据库中的第一张照片有 PhotoID = 3、Category = LS 和 CategoryID = 1。再往下我有 PhotoID = 14、Category = LS 和 CategoryID = 2。

现在除了这些,我还有另一个需要跟踪的数字,那就是如果我对同一场景进行了重复曝光。为此,我只是为每张照片添加了一个 DuplicateNumber。如果没有重复,则 DuplicatNumber 为 0,如果有一个重复,则 DuplicateNumber 为 1、2 个重复、DuplicateNumber 为 2,以此类推。

所以我有两种方法可以在我的文件中查找任何照片。通过在数据库中连续但不在我的物理文件中的 PhotoID,或者通过 Category、CategoryID 和 DuplicateNumber 的组合,这是我物理归档照片的方式。

现在在 Excel 中,当我打开表单时,我首先必须通过表单上的单选按钮选择将照片放入的类别。然后我会填写照片的所有相关数据。当我执行表单时,它会在主表中找到最后一个数字,将其递增并将所有数据添加到新记录中。然后它将激活我选择的类别的类别表,确定该表中的最后一个数字,增加它并在那里添加新数据。

重要的一点是,DuplicateNumber 默认始终为 0,除非我将其设为 1、2 等。它从未被计算过,但我输入了它。

当我创建幻灯片标签(“报告”)时,我会以这种格式(1LS1.0、14LS45.0、15LS45.1)包含主要的 PhotoID、CategoryName、CategoryID 和 DuplicateNumber,以及位置和日期采取了。

但现在我不想再使用 Excel 并尝试将数据库迁移到 MS Access。所以我有一个名为 PhotoDetails 的主表。

PhotoID 是此表中的主键。它有一个 PhotoCategory 字段,该字段是一个与另一个名为 Category 的表相关的数字。它的主键是 PhotoCategoryID,也是 PhotoDetails 中的外键。 PhotoCategoryID 是一个标识每个类别的数字。在我所有类别的列表中,LS 排在第 11 位。但这是我卡住的地方。

我在 PhotoDetal 表中有 CategoryNumber,它是标识每个类别中照片的编号,以及 DuplicateNumber,标识重复的数量。我想不通的是,当我添加新照片时,如何增加 CategoryNumber?我现在拥有的表格允许我输入所有数据,当我单击输入下一个时,它会自动调整 PhotoID 键,但是 CategoryNumber 呢?我不记得每个类别的最后一个数字是什么,以便我自己输入那个数字。除非我通过将所有数据存储两次来模仿我在 Excel 中所做的事情,一次是在 PhotoDetails(又名 Excel 中的 Master Sheet)中,另一次是在多个类别表中。我希望 Access 可以为我提供一种解决方法。

目前我拥有的关系是类别表链接到 1-M 关系中的 PhotoDetails。我还有几个其他表都以 1-M 关系链接(例如,表 Film 存储我使用过的不同电影,1-M 关系让我可以将什么电影链接到每张幻灯片,并且大多数其他数据都存储在其中方式)。

我有 31 个不同的类别。每张照片都有一个类别和一个类别 ID 编号,以及一个重复编号。我将选择数据输入中的类别和 DuplicateNumber,但我希望 CategoryID 编号和 PhotoID 自动递增。进行此操作的正确方法是什么,我只需要保留一个 PhotoDetail 表,该表不会像在 Excel 中那样为每个类别重复。

【问题讨论】:

  • 非常大的问题/故事。最后我忘了你到底想要什么! :)
  • 我有一个表,它有一个唯一的主键来标识每张照片。我还有另外三个字段可以识别照片,Category、CategoryNumber 和 DuplicateNumber。当我添加一张新照片时,选择第一个类别,如果它是重复的,我怎样才能让 CategoryNumber 正确增加。
  • 您可能还想使用实际提出问题的标题。我只是费心阅读这个问题,因为我认为它与访问控制列表有关。

标签: ms-access key database-relations


【解决方案1】:

好的,所以基本上你要做的是“规范化”你的数据

通常你会有两张桌子

照片
PhotoID(数据类型:自动编号 - 用户通常看不到 - 主键)
PhotoRefID(DT:可能是数字或文本 - 引用物理编号)
CategoryID(DT:数字 - 长整数 - 类别表的键)
重复(DT:数字 - 也可能很长 - 如果这只是一个计数)
- 要么 - DuplicateOf (DT: Number - Long Integer - 引用它的副本)

类别
CategoryID(DT:自动编号 - 主键)
说明(DT:文本)

您将使用关系(工具->关系)将两个类别 ID 一起点赞。

然后您就可以使用这些表来构建您正在寻找的表单和查询。

注意:如果您可以将照片归入多个类别,那么您将需要第三张中间表将它们连接起来。类似的东西:

照片类别
PhotoCategoryID(DT:自动编号,主键)
PhotoID (DT: Number Long Integer)
CategoryID (DT: Number Long Integer)

【讨论】:

    【解决方案2】:

    我会考虑通过添加代码来廉价地做到这一点,这样当您尝试添加新记录时,它会在数据库中搜索具有类别/重复/等的最高数字,然后您可以在代码中增加它在添加新记录之前。

    没有简单的方法可以在 Access 中自动获取此功能,除非您将表格分成更多表格。

    -亚当

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-09
      相关资源
      最近更新 更多