【发布时间】:2011-03-08 00:49:34
【问题描述】:
我在 Access 数据库中丢失了我的数据,我设法将它们找回来,但是当我使用自动编号列复制表中的值时,它会增加数字。 有什么办法可以将其更改为 int,然后将其带回 AutoNumber?
【问题讨论】:
标签: database ms-access database-design autonumber
我在 Access 数据库中丢失了我的数据,我设法将它们找回来,但是当我使用自动编号列复制表中的值时,它会增加数字。 有什么办法可以将其更改为 int,然后将其带回 AutoNumber?
【问题讨论】:
标签: database ms-access database-design autonumber
这是我在 Access 2010 中如何做到这一点的:
对于大表来说,这可能不是一个可行的解决方案。我认为 Excel 不能处理超过 65K 行。
【讨论】:
不要使用用户界面复制数据,而是将其附加到查询中。因为自动编号字段只是一个具有特殊默认值的长整数,所以您可以将已经存在的值附加到它上面。这在 UI 中不起作用,而仅在 SQL 中起作用。
Autonumber 字段还有一些其他属性与普通的 Long Integer 字段不同,但在附加数据方面,这些属性并不相关。其中一个属性是它一旦填充就不可编辑,另一个是每个表中只能有一个。
【讨论】:
UPDATE 将默认值更改为其他值(不能对具有 Autonumber 属性的列执行此操作)。通过使用 SQL DLL 中的IDENTITY(<seed>, <step>) 创建自动编号列可以具有 1 以外的步长值,但不能对列“特殊默认值”执行相同操作。我需要继续...吗?
insert into <tablename> (<column 1>, <column2> ...) values ( <value 1>, <value 2>, ...) 这很乏味,但有效
DoCmd.RunSQL "INSERT INTO ..."
我已经设法通过 c# 中的代码插入自动编号字段。 我把我需要的所有数据都插入到一个空表中。
【讨论】:
您如何恢复数据?应该可以附加表格中的数据并保留现有数字。
但是,您必须从整数字段粘贴到自动编号字段。一旦字段中有数据,您无法将字段从整数更改为自动编号,但您可以将自动编号更改为整数。
【讨论】:
备份您的数据表。删除原始表中的所有数据,然后压缩和修复您的数据库。通过这样做,自动编号字段将重置为 1。您现在可以从备份表中追加数据。
【讨论】:
类似的SQL代码
insert into <tablename>
(<column 1>, <column2>, ...)
values
( <value 1>, <value 2>, ...);
如果您在查询中包含自动编号列,则可以解决问题。这很乏味,但有效。您可以为任何旧查询切换到 SQL 模式以输入此文本(通常在文本编辑器中准备好之后),或者正如 @Dominic P 指出的那样,您可以打开一个 VBA 即时窗口并运行 DoCmd.RunSQL "INSERT INTO ..." 这将为您提供Access 中更好的编辑器体验。
【讨论】: