Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 综合其它

压缩access数据库后不重置自动编号字段

时 间:2007-06-06 00:00:00
作 者:UMVsoft整理   ID:8  城市:上海  QQ:2851379730点击这里给张志发消息
摘 要:添加新记录时不当删除最后一个记录或表中记录或窗体中具有 AutoNumber 字段, 并压缩数据库, 然后 AutoNumber 字段不发生作用,使用以下两种方法之一可解决此问题。
正 文:

原因: 您有安装 Microsoft Jet 4.0 Service Pack 4 (Msjet 40 .dll 版本 4.00.2927.4) 或更高版本。


一、解决方案如下:
方法 1
创建新表并追加现有记录到新表。 除非将递增值编程新记录添加到此表将开头的 AutoNumber 值为一个。

注意 如果不再需要记录, 可以也将 AutoNumber 字段通过从表, 删除所有记录和再压缩数据库。 但是, 如果您使用此方法, 您能得到删除记录。

要创建新表并现有记录追加到新表在 MicrosoftAccess 数据库 (.mdb), 请按照下列步骤:
1. 单击数据库窗口中您表。 
2. 按 CTRL + C 
3. 按 Ctrl + V。 
4. 单击 结构只 粘贴表方式 对话框中, 键入名称 tblNewTable , 然后单击 确定 。 
5. 在 Microsoft Office Access 2003 或 Microsoft Access 2002, 中 数据库对象 指向 视图 菜单上, 单击 查询 , 依次 设计视图中创建查询 。

其他 组中 Microsoft Office Access 2007年, 中 创建 选项卡, 依次 查询设计 。 
6. 添加 , 单击旧表, 然后和 Close , 对话框中 显示表 。
7. Access 2003 中或在 Access 2002, 单击 查询 菜单上 追加查询 。

在 Access 2007年, 单击 设计 选项卡上 查询类型 组中 追加 。 
8. 追加 对话框中, tblNewTable 在 表名称 框中, 单击, 然后单击 确定 。
9. 所有字段添加到查询设计网格除 AutoNumber 字段。 
10. 在 Access 2003 或在 Access 2002, 在 查询 菜单上, 单击 运行 到记录追加到新表。

在 Access 2007年, 单击 设计 选项卡上将记录追加到新表 结果 组中 运行 。 
11. 打开 tblNewTable 表, 然后添加记录。

注意 AutoNumber 是下一个高编号。

方法 2
您在 MicrosoftAccess 数据库 (.mdb) 使用下列函数重置种子值将 AutoNumber 字段编程。 可添加到模块, 函数, 然后在调试窗口运行它。 或从一个命令按钮或宏中调用函数。

注意 对于此代码以运行正确, 必须引用 MicrosoftActiveX 数据对象 x 和 Microsoft ADO Ext x 对于 DDL 和安全库 (其中 x 是 2.1 或更高。 可以进行, 单击 工具 菜单在 VisualBasic 编辑器上 引用 。 确保 MicrosoftActiveX 数据对象 x 和 Microsoft ADO Ext x 为 DDL 和安全库 复选框被选中。

Function ChangeSeed(strTbl As String, strCol As String, lngSeed As Long) As Boolean
'You must pass the following variables to this function.
'strTbl = Table containing autonumber field
'strCol = Name of the autonumber field
'lngSeed = Long integer value you want to use for next AutoNumber.

Dim cnn As ADODB.Connection
Dim cat As New ADOX.Catalog
Dim col As ADOX.Column

'Set connection and catalog to current database.
Set cnn = CurrentProject.Connection
cat.ActiveConnection = cnn

Set col = cat.Tables(strTbl).Columns(strCol)

col.Properties("Seed") = lngSeed
cat.Tables(strTbl).Columns.Refresh
If col.Properties("seed") = lngSeed Then
    ChangeSeed = True
Else
    ChangeSeed = False
End If
Set col = Nothing
Set cat = Nothing
Set cnn = Nothing

End Function

 

二、本文摘自:http://support.microsoft.com/kb/287756/zh-cn#top



Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助