【问题标题】:Can I edit AutoNumber Column in Access?我可以在 Access 中编辑自动编号列吗?
【发布时间】:2011-03-08 00:49:34
【问题描述】:

我在 Access 数据库中丢失了我的数据,我设法将它们找回来,但是当我使用自动编号列复制表中的值时,它会增加数字。 有什么办法可以将其更改为 int,然后将其带回 AutoNumber?

【问题讨论】:

    标签: database ms-access database-design autonumber


    【解决方案1】:

    这是我在 Access 2010 中如何做到这一点的:

    1. 备份您的数据库。 (为了安全起见。)
    2. 右键单击表格列表中的表格,然后选择导出->Excel。接受所有默认值。
    3. 在 Excel 中打开表格并对自动编号字段进行所需的更改。
    4. 打开表格并删除所有行
    5. 右击表格列表中的表格,选择导入->Excel
      • 在选项中,选择“附加到表格”并选择表格。接受所有其他选项的默认值

    对于大表来说,这可能不是一个可行的解决方案。我认为 Excel 不能处理超过 65K 行。

    【讨论】:

    • 为我工作。谢谢!
    【解决方案2】:

    不要使用用户界面复制数据,而是将其附加到查询中。因为自动编号字段只是一个具有特殊默认值的长整数,所以您可以将已经存在的值附加到它上面。这在 UI 中不起作用,而仅在 SQL 中起作用。

    Autonumber 字段还有一些其他属性与普通的 Long Integer 字段不同,但在附加数据方面,这些属性并不相关。其中一个属性是它一旦填充就不可编辑,另一个是每个表中只能有一个。

    【讨论】:

    • 有人请解释一下否决票,即为什么这是一个错误的答案。
    • "自动编号字段只是一个具有特殊默认值的长整数" = 错误陈述。我可以在表中添加两个这样的“特殊默认值”列(只有一列可能具有 Autonumber 属性)。我可以使用UPDATE 将默认值更改为其他值(不能对具有 Autonumber 属性的列执行此操作)。通过使用 SQL DLL 中的IDENTITY(<seed>, <step>) 创建自动编号列可以具有 1 以外的步长值,但不能对列“特殊默认值”执行相同操作。我需要继续...吗?
    • 好的。我已经改变了它。我的回答与追加数据的问题有关,但不完整。
    • SQL 代码如:insert into <tablename> (<column 1>, <column2> ...) values ( <value 1>, <value 2>, ...) 这很乏味,但有效
    • @charlesdeb SQL 是我的解决方案。谢谢。可能值得发布作为答案,因为它比许多替代方案侵入性更小且更容易。我刚刚弹出一个 VBA 即时窗口并运行 DoCmd.RunSQL "INSERT INTO ..."
    【解决方案3】:

    我已经设法通过 c# 中的代码插入自动编号字段。 我把我需要的所有数据都插入到一个空表中。

    【讨论】:

      【解决方案4】:

      您如何恢复数据?应该可以附加表格中的数据并保留现有数字。

      但是,您必须从整数字段粘贴到自动编号字段。一旦字段中有数据,您无法将字段从整数更改为自动编号,但您可以将自动编号更改为整数。

      【讨论】:

      • 我已将具有相似内容的不同表格组合在一起,并将数据重新写入该表格。但是当我插入记录时,自动编号字段会自动增加,而忽略我的输入。
      • 您输入的数据是自动编号吗?
      • 是的,我已经成功实现了自动编号,但坦率地说,我不知道怎么做,因为我昨天所做的一切都是一样的。只需处理表中的数据,它就可以管理。
      【解决方案5】:

      备份您的数据表。删除原始表中的所有数据,然后压缩和修复您的数据库。通过这样做,自动编号字段将重置为 1。您现在可以从备份表中追加数据。

      【讨论】:

        【解决方案6】:

        类似的SQL代码

           insert into <tablename> 
           (<column 1>, <column2>, ...) 
           values
           ( <value 1>, <value 2>, ...);
        

        如果您在查询中包含自动编号列,则可以解决问题。这很乏味,但有效。您可以为任何旧查询切换到 SQL 模式以输入此文本(通常在文本编辑器中准备好之后),或者正如 @Dominic P 指出的那样,您可以打开一个 VBA 即时窗口并运行 DoCmd.RunSQL "INSERT INTO ..." 这将为您提供Access 中更好的编辑器体验。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-23
          • 2018-10-14
          • 1970-01-01
          • 1970-01-01
          • 2020-10-25
          • 2021-09-08
          • 2013-10-30
          • 2019-10-08
          相关资源
          最近更新 更多