我可以在 Access 中编辑自动编号列吗?
我在 Access 库中丢失了数据,并且已设法将它们恢复,但是当我使用自动编号列复制表中的值时,它会增加数字。 有没有办法将其更改为 int,然后将其恢复为 AutoNumber?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我在 Access 库中丢失了数据,并且已设法将它们恢复,但是当我使用自动编号列复制表中的值时,它会增加数字。 有没有办法将其更改为 int,然后将其恢复为 AutoNumber?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
以下是我在 Access 2010 中设法做到这一点的方法:
对于大型表来说这可能不是一个可行的解决方案。我认为 Excel 无法处理超过 65K 行。
Here is how I managed to do this in Access 2010:
This might not be a viable solution for a large table. I don't think Excel can handle more than around 65K rows.
不要使用用户界面复制数据,而是使用查询附加数据。由于自动编号字段只是一个具有特殊默认值的长整数,因此您可以向其附加已存在的值。这在 UI 中不起作用,只能在 SQL 中起作用。
自动编号字段具有一些与普通长整型字段不同的其他属性,但就附加数据而言,这些属性并不相关。其中一个属性是一旦填充后就不可编辑,另一个属性是每个表中只能有一个。
Don't copy the data with the user interface, but append it with a query. Because an Autonumber field is just a long integer with a special default value, you can append to it values that already exist. That doesn't work in the UI, but only in SQL.
An Autonumber field has a few other properties that are different from a normal Long Integer field, but in terms of appending data, those are not relevant. One of those properties is that it is not editable once it's populated, and another is that you can have only one in each table.
我已设法通过 c# 代码插入自动编号字段。
我获取了所需的所有数据并将其插入到空表中。
I've manage to insert the AutoNumber fields by code from c#.
I take all the data I need and just inserted in an empty table.
备份您的数据表。删除原表中的所有数据,然后进行压缩&修复你的数据库。通过执行此操作,自动编号字段将重置为 1。您现在可以从备份表追加数据。
Make backup of your data table. Delete all data form original table and then do compact & repair your database. By doing this, auto number field will be reset at 1. You may now append your data from backup table.
你如何把数据带回来?应该可以附加表中的数据并保留现有数字。
但是,您必须从整数字段粘贴到自动编号字段。一旦字段中有数据,您就无法将字段从整数更改为自动编号,但可以从自动编号更改为整数。
How are you bringing the data back? It should be possible to append the data from your table and to keep the existing numbers.
It is necessary however, that you paste from an integer field to the autonumber field. You cannot change a field to autonumber from integer once there is data in the field, but you can change to integer from autonumber.
类似的 SQL 代码
如果您在查询中包含自动编号列, 就可以解决问题。这很乏味,但很有效。您可以切换到 SQL 模式,让任何旧查询输入此文本(通常在文本编辑器中准备好之后),或者正如 @Dominic P 指出的那样,您可以打开 VBA 立即窗口并运行 DoCmd.RunSQL ” INSERT INTO ...” 这将为您在 Access 中提供更好的编辑器体验。
SQL code like
will do the trick if you include the autonumber column in your query. It's pretty tedious, but works. You can switch to SQL mode for any old query to enter this text (usually after preparing it in a text editor), or as @Dominic P points out, you can bring up a VBA immediate window and run
DoCmd.RunSQL "INSERT INTO ..."
which will give you a better editor experience within Access.