【问题标题】:MS Access AutoNumber on Import导入时的 MS Access 自动编号
【发布时间】:2009-06-04 21:32:19
【问题描述】:

只是好奇,当我将包含 519 行的电子表格中的数据导入一个空表时,为什么我的自动编号键从 56,557,618 开始?这能有多大?我不想让我的主键字段的数字用完,因为我什至还没有开始这个项目,而且我希望经常转储电子表格。

【问题讨论】:

    标签: database ms-access-2007 overflow containers autonumber


    【解决方案1】:

    您可以在不压缩和修复的情况下重置自动编号:

     CurrentDb.Execute "ALTER TABLE tblTable ALTER COLUMN ID COUNTER(1,1)"
    

    在运行 SQL 之前,您必须确保表为空,否则您将让 Access 尝试创建重复的自动编号。

    【讨论】:

    • 这需要在 VBA 中运行吗?我以为 ALTER TABLE 是一个 SQL 命令,但它不会为我运行。
    • 正如上面写的,它可以在 VBA 中运行,但是你可以将 ALTER TABLE tblTable ALTER COLUMN ID COUNTER(1,1) 粘贴到查询设计窗口的 SQL 视图中,它就会运行。您不必使用 Counter(1,1),除非您希望从 1 重新开始,否则 100,1 就可以了。
    【解决方案2】:

    即使在空表上,Access 也会记住它给出的最后一个 ID。要重置自动编号,您必须在清空表后压缩/修复数据库

    此外,自动编号是一个长整数,在 Access 中可以达到 2,147,483,647

    【讨论】:

    • 有空表吗?这个电子表格转储是第一次命中该表。
    • 您的意思是每次都删除并创建表?还是你在重复使用这张桌子?
    • 第一次用table,我的key是5600万。看到之后,我杀了表,重新创建它,再次转储,得到了类似的结果。当我压缩和修复时,我会取回“删除”的密钥吗?
    • 你有自动编号生成顺序或随机键吗?
    • 您可以使用查询覆盖自动编号字段,新编号将使用覆盖值开始。即使您删除记录,编号也不会重置。是这样的吗?
    【解决方案3】:

    您还可以通过创建包含自动编号列的附加查询来重置自动编号。追加一行后,数字将设置为追加的值 + 1。

    这样做你必须小心该值不小于当前的最高值。

    例如

    INSERT INTO tblName ( id )
    SELECT [tblName]![id]+1 AS [New Value]
    FROM tblName
    GROUP BY [tblName]![id]+1, tblName.id
    HAVING (((tblName.id)=(Select max(id) from tblName)));
    

    会将自动编号重置为最后一个数字的 + 2。请注意,您必须包含所有必填列,然后删除新行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-10
      • 2013-12-17
      • 2018-11-25
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 2021-04-21
      相关资源
      最近更新 更多