如何使 Access 中的新自动编号跟随上一个自动编号

Posted

技术标签:

【中文标题】如何使 Access 中的新自动编号跟随上一个自动编号【英文标题】:how to make the new Autonumber in Access follow the last Autonumber 【发布时间】:2016-01-05 21:09:56 【问题描述】:

我有一个小学校项目,我创建了一个包含 30 个问题的考试,我从一个包含 70 个问题的数据库表中显示这些问题(这是我预先创建的)。 我使用 1 和 MaxID(在问题表中)之间的随机唯一整数数组来使用它们的 ID(自动编号,也是主键)来处理这些问题并显示它们。 我的老师告诉我创建一个页面,管理员可以在其中添加我所做的问题。

当我添加一个问题(ID==71)然后删除问题并添加另一个问题(ID==72)时问题开始,如果最后一个 ID 是 72(例如)并且之前是 70,那么如果数字 71 包含在随机唯一整数数组中,这会产生问题,因为访问表中没有包含 71 的行。

我的问题是: 我可以让自动编号列中的 ID 始终比表中的最后一个 ID +1 吗?

我知道这有点长,但我真的很烦,如果有不清楚的地方,请告诉我,以便我说清楚。

【问题讨论】:

与您的问题无关:使用随机函数 (1-70 +1) 会产生重复的结果。你有没有想过这个?理想情况下,您的数组应该只包含现有的问题 ID 和尚未选择的问题。 我已经解决了。 那部分很棒:还应该涵盖仅初始化现有 ID,这将消除您当前的问题,并赋予您的管理员添加/删除问题的全部权利 【参考方案1】:

不,自动编号将是最后使用的 +1。完成此操作的唯一方法是将您自己的值分配给 ID,但如果您删除中间的记录,您仍然会遇到类似的问题。

【讨论】:

你确定吗?如果是这样,那么我想我不能让管理员删除任何行,这将解决它。 绝对积极。我知道 SQL Server 也是如此,据我所知,所有数据库都是如此。您将删除自动编号并将您的 ID 设置为“从 TableName 中选择 Max(Id)+1”,但如果有人删除,您仍然会遇到问题,假设 ID 的值为 35。您是下一个 ID 71岁,但你35岁就会有一个洞……【参考方案2】:

作为一种解决方法,您可以使用INSERT SQL 添加新记录。当您使用表单或表格数据编辑器时,您无法控制自动编号字段中的编号,但直接 SQL 允许将所需的值插入自动编号字段。在此访问后作为下一个数字将生成数字 = 插入值 +1。因此,如果您添加然后删除了 #71,您仍然可以使用 insert into Table1 (id,data) select 71,"text" 插入所需的数据。

但在您的情况下,我建议使用不同的原则来选择随机问题。例如,每次在问题列表中进行更改时,添加带有问题索引的新列并在此字段中重新生成后续数字

【讨论】:

【参考方案3】:

您的问题是您滥用了 自动编号 - 它仅用于识别单个记录。在任何情况下,它都没有意义,也不应该有意义。

因此,当您创建问题时,请在另一个字段 (QuestionId) 中填写“否”。 1到n。然后从这个数字中随机选择。

【讨论】:

以上是关于如何使 Access 中的新自动编号跟随上一个自动编号的主要内容,如果未能解决你的问题,请参考以下文章

如何重置 Access 表的自动编号字段? (它不是从 1 开始的)[重复]

从 MS Access 中的表中获取自动编号字段值

access数据库怎么设置自动编号从1开始?

从 Access VBA 自动增量创建的文件夹名称

MS Access 主键自动编号变得混乱

如何防止 WebClient 类自动跟随标头中的位置?