【发布时间】:2015-07-06 14:19:32
【问题描述】:
之前有人问过类似的问题,我进行了很多搜索,但没有找到合适的解决方案。
上下文:我有一个访问数据库,其中包含大量用于处理按钮按下、表单等的 VBA。该数据库是一个多用户系统,以前 SharePoint 列表用于在两者之间同步数据所有不同的实例。
我们已经从 SharePoint 迁移到 MySQL 数据库,因为我们打算将其他应用程序与不能很好地与 SharePoint 配合使用的数据库集成。
注意:此代码并非唯一一次出现。因此,能够全局修复它而不是实现存储过程等会更好:
守则:
Private Sub Command102_Click()
Dim myID As Long
Dim R As Recordset
Set R = CurrentDb.OpenRecordset("SELECT * FROM `Awesome Table`") 'An Access Linked Table
R.AddNew
R![DateField 3] = Now
R.Update
R.Bookmark = R.LastModified
myID = R!ID ' Causes Error
R.Close
Set R = Nothing
DoCmd.OpenForm "awesomeForm", acNormal, , "[ID] = " & myID, acFormEdit
End Sub
错误:
运行时错误'3167':记录被删除
Access 似乎没有提交插入记录并正确获取新 ID。
系统详情:
客户
- 视窗 7
- 访问 2013
- ODBC 驱动程序版本 5.3
服务器
- MySQL 5.5
- Ubuntu 14.01.1
在 Access 上的链接表的配置中启用 SQL_AUTO_IS_NULL
不必编辑代码将是一个巨大的好处,因为这是一个大型数据库,许多插入语句都依赖于此。
【问题讨论】:
-
那么,为了澄清,'AwesomeTable'实际上是一个通过Access连接到MySQL的表?
-
是的 - 更新操作
-
ID 和 DateField 3 是表中唯一的关键字段吗? ID 是自增字段吗?您是否尝试选择最大 ID,然后向其添加 1?
-
PK是ID,还有很多其他字段; DateField 3 不是键
-
“记录被删除”究竟是什么时候触发的?当您访问 LastModified 属性或 ID 属性时?