如何在Access中设置AutoNumber的第一个值?


8

我不需要像这个问题一样重设AutoNumber值,而是想先将数字设置为:

1001

然后按正常方式递增:

1001

1002

1003

...

如何在Access 2010中执行此操作?


5
不是答案,而是警告:自动编号并非旨在以这种方式进行管理。我见过无数人尝试。它永远不会起作用,因为DB有时会做一些奇怪的事情(例如,失败的写操作仍会增加数字)。自动编号不能保证记录号将是连续的。确实,在极少数情况下,它甚至无法保证该数字是唯一的。这对于为小型表创建主键非常有用。大桌子有一点风险。用作实际数据字段绝对可怕。他
培根片,

@BaconBits ...那么AutoNumber打算用来做什么?
詹姆斯·默兹

@BaconBits的其余评论:因为人们希望自动编号不是,所以您会看到类似梨形的文章。如果您需要以这种方式生成数字,请在数据库中编写查询等以自行完成。
BloodPhilia 2011年

Answers:


14

尽管Access本身没有提供此功能,但是可以通过查询来实现,如下所示:

CREATE TABLE TableThatIncrements
(
Id AUTOINCREMENT(1001,1)
)

这将创建一个名为“ TableThatIncrements”的表,其中包含一个名为“ Id”的列。现在,您可以使用表编辑器添加属性和/或其他列。

更改

AUTOINCREMENT(x,y)

满足您的需要,其中x初始增量编号y是,是要递增的编号。因此AUTOINCREMENT(100,5)将产生:100、105、110、115等

如果要更改现有表,请使用以下查询。确保关闭了特定表的选项卡,以便Access可以将其锁定并进行更改。

ALTER TABLE TableThatIncrements
   ALTER COLUMN Id AUTOINCREMENT(1001,1)

您可以通过执行以下操作在Access中运行查询:

  1. 转到“创建”标签,然后单击“查询设计”
    在此处输入图片说明

  2. 只需关闭出现的要求您选择表格的窗口,我们就不需要了。

  3. 转到“设计”选项卡,然后单击带有箭头的按钮,直到出现文本输入屏幕。(默认情况下为SELECT;)。
    在此处输入图片说明

  4. 删除默认文本并粘贴以上查询。

  5. 点击“运行”。
    在此处输入图片说明


好的答案,但这会创建一个新表...还是我错了?可以在已经创建的表中完成吗?
詹姆斯·默兹

@KronoS更新了我的答案
BloodPhilia,2011年

1

您必须欺骗Access,因为它假定您对与其提供的自动编号不同的自动编号不感兴趣。

您需要使用自定义自动编号开始表格,这需要进行一些设置。但是一旦完成,您就可以从那里继续添加。

Google“访问权限更改自动编号开始”,您将找到几个选项。大多数依赖于创建追加查询来修改字段。

创建第一个表,其中包含要从另一个数字开始的计数器类型字段。不要输入任何记录,请创建第二个表,该表的单个长整数类型字段的名称与第一个表中的计数器字段的名称相同。在第二个表中创建一个记录,方法是输入一个比您要在第一个表中启动计数器的数字小一的数字。创建一个追加查询,以将第二个表中的一个记录追加到第一个表,并运行它。删除第二个表,删除您追加到第一个表的记录,然后开始输入数据。

从MVPS.org: http://access.mvps.org/access/tables/tbl0005.htm

如果您不想建立一个追加查询,则可以始终设置表并从excel复制并粘贴1000行虚拟数据,删除记录,直到达到数字1001,然后从那里继续。

更新:添加原因说明

自动编号仅设置为从1开始的原因是,自动编号字段旨在用作内部参考字段,并且在良好的数据库实践中,通常不应以任何公开可见的形式使用自动编号字段。在给定表中没有唯一项的情况下,可以使用它来创建一个唯一条目,通过该条目可以搜索该表并为其建立索引。


有一定有在做这样一个简单的方法....
詹姆斯默茨

我想这是一个好消息,如果您需要使用自动编号来创建多个表,则可以简单地创建一个表,将其保存在“模板”数据库文件中,然后根据需要将其复制到新的数据库文件中。
music2myear11年

1

该网站提供了一种非常简单的方法来以您希望的任何数字开头您的自动编号:http : //www.fmsinc.com/microsoftaccess/AutoNumber%20Field/Creating.asp

您创建一个带有表达式的查询,该表达式告诉自动编号字段进行更改

“首先,运行以下查询:

插入tblName(ID)选择999 AS Expr1

其中,tblName是表名,ID是“自动编号”字段的名称。

然后,运行第二个查询以删除您插入的行:

从tblName删除,ID = 999;

(或者,您可以简单地打开表并手动删除插入的行。)

现在,添加到表中的下一条记录被分配值为1000。

此方法适用于新表或自动编号尚未达到种子值的表。(当然,现有行的ID字段不会更改,但后续行将从1000开始。)”


1

1-创建表1 2-转到创建------->设计查询。3-关闭表格4-从上方转到SQ1。5-过去的代码。

ALTER TABLE [TABLE1] ALTER COLUMN [Id]计数器(8982,1)


这似乎与接受的答案相同,只是使用了不同的关键字(而另一个关键字的格式好得多)。您的答案真的不同吗?你能解释一下吗?你的答案更好吗?为什么?请不要在评论中回复;编辑您的答案,使其更清晰,更完整。
斯科特(Scott)

0

这是一个很老的话题,但仍然弹出,成为Google搜索结果的前三名。

用户可能想要更改自动编号字段的值的一个原因是纠正由数据库编辑引起的错误。当管理员可能要对数据库的前端进行一些重大更改时,该管理员可能会制作所有相关表的副本,并将前端的开发副本重定向到这些后端。如果更改足够,他可以用他的副本替换前端的生产副本,并在测试后重定向所有链接的表。

没问题吧?好吧,自动编号的增量保持在前端。因此,如果在管理员处理副本时,生产方仅将自动编号增加了50或500或5000个数字,则新的生产副本将通过重试这些相同的编号而无法在这些字段中输入项目,一次,直到它变得“清晰”。复制50、500或5000行的excel数据,然后尝试将其粘贴。每行都会出错(请确保在弹出时不再显示其他消息),但是自动编号会增加该数量,这很好再去一次。如果您以这种方式使用自动编号,建议您将数字递增到生产数据库所在的位置,然后再用开发副本覆盖它。

这也是一种将自动编号设置为高于1的方法。就像过去在Geocities主页上将页面访问计数器设置为17479时,实际上它只被访问过16次。由你。


0

一种实现类似目的的简单方法是拥有一个自动编号字段(例如“ ID”)和另一个计算字段(例如“ ItemID”),然后为计算字段输入公式“ 1000+ [ID]”。现在,此新字段将自动跟踪“自动编号”字段,但将从1001而不是1开始。


0

我相信可以通过首先创建一个隐藏表来达到您的自定义增量范围,该表将使自动增量的初始间隔从零开始到您的选择,例如。该表将保留0到1050。然后以1055、1060、1065等增量开始。然后,您将从表中隐藏这部分数据。希望这可以帮助。似乎Access被设计为从零开始看,因为会出现冲突。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.