7

我有一个 VB6/Access 应用程序,它偶尔会遇到自动编号字段种子错误的问题。

假设有一个带有自动编号字段 ID 的表 MYTABLE(这也是主键)。假设目前 ID 的最大值为 1000。当应用程序插入新记录(未明确提供 ID 值)时,由于某种原因,它决定下一个自动编号字段值为 950(而不是应为的 1001 ) - 因此发生主键违规错误。

我找到了一篇描述我的症状的知识库文章:http: //support.microsoft.com/kb/884185。简而言之,他们建议运行查询:

ALTER TABLE MYTABLE ALTER COLUMN ID COUNTER(1001,1)

当我尝试这样做时,它会因“无效的字段数据类型”而失败

如果我在 Access 中打开数据库并进行压缩/修复,问题就会得到解决,但我需要能够在应用程序内部修复此类问题:它安装在全球数千台 PC 上,并要求人们进行压缩/repair with Access 不是一个选项。

我使用 DAODBEngine.CompactDatabase在应用程序内部执行压缩/修复,但它不能解决种子问题,并且需要一些额外的技巧。

任何解决方案的想法?

4

3 回答 3

4

请参考以下文章,它包含一个您可以添加到您的访问项目以执行重置种子的方法。过去,它曾多次为我节省过:

http://allenbrowne.com/ser-40.html

除此之外,它还对此类问题的原因和潜在解决方案进行了解释和洞察。

于 2010-02-18T18:42:34.930 回答
0

您可能还需要确保您的数据库设置为使用 ANSI 92,以便将 COUNTER 识别为合法数据类型。

在 Access 2007 中,转到Access 选项、对象设计器、SQL Server 兼容性语法 (ANSI 92)进行设置。

于 2010-02-18T22:07:54.737 回答
0

您可以通过紧凑/修复来解决问题:

In Access 2010:  Compact and Repair Database on the Database Tools ribbon.
In Access 2007:  Office Button | Manage.
In earlier versions:  Tools | Database Utilities.
于 2013-02-28T12:32:20.757 回答