Access 2013-VBA-记录集插入获取ID

生姜怪胎

之前曾问过类似的问题,我做了很多搜索,但没有找到合适的解决方案。

上下文:我有一个访问数据库,其中包含许多用于处理按钮按下,表单等的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。

系统详细信息:
客户端
-Windows 7
-Access 2013
-ODBC驱动程序版本5.3 Server-MySQL 5.5-Ubuntu 14.01.1

在Access上针对链接表的配置中启用了SQL_AUTO_IS_NULL

不必编辑代码将是一个巨大的好处,因为这是一个大型数据库,许多插入语句都依赖于此。

伯乐
Private Sub Command102_Click()
Dim myID As Long
Dim R As Recordset
Dim dtNow as variant
Set R = CurrentDb.OpenRecordset("SELECT * FROM [Awesome Table]", dbOpenDynaset) 'Jet doesn't like tick marks.
    R.AddNew
    dtNow = Now()
    R![DateField 3] = dtNow
    R.Update
    'R.Bookmark = R.LastModified
    R.Close
  Set R = Nothing
DoCmd.OpenForm "awesomeForm", acNormal, , "[DateField 3] = #" & dtNow & "#", acFormEdit
EndSub

Now()也返回秒,因此发生冲突的可能性很小-尽管如果您处于高吞吐量的多用户环境中,这可能是个问题。但是即使这样,也可以通过使[Datefield 3]成为唯一的值字段并简单地循环直到.AddNew成功来缓解。如果您真的对它感兴趣,可以添加一个Application.Wait(Now + TimeValue(“ 0:00:01”))。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

大型记录集(VBA)的MS Access插入速度慢

来自分类Dev

Access 2013错误绑定到ADO记录集

来自分类Dev

Access 2013错误绑定到ADO记录集

来自分类Dev

从VBA,DoEvents中的Access处理“大”记录集

来自分类Dev

MS Access 使用 vba 复制记录集

来自分类Dev

Access 2013插入/更新

来自分类Dev

Access 2013 VBA自动使Excel丢失窗口

来自分类Dev

MS ACCESS VBA记录集搜索条件类型不匹配

来自分类Dev

将 Access VBA 记录集导出到 Excel 中的单行

来自分类Dev

在记录更改时运行VBA,但不构成Open Access 2013

来自分类Dev

在子窗体中创建新记录按钮单击 MS Access 2013 VBA

来自分类Dev

VBA从SQL Server记录集获取价值

来自分类Dev

为什么和何时在Access VBA中声明新记录集时使用New关键字?

来自分类Dev

尝试读取记录集字段时,为什么未定义Access VBA抛出子或函数?

来自分类Dev

Access VBA中的运行时3464。尝试使用SQL select语句打开记录集

来自分类Dev

当数据存在于 Access DB 中时,excel vba 中的记录集不返回任何内容

来自分类Dev

MS Access 2013:通过VBA使用MS Word的语法检查

来自分类Dev

Access 2013 VBA-设置控件的新Click事件

来自分类Dev

在子窗体中搜索值(vba Access2013)

来自分类Dev

VBA(Access 2013)HTTP POST不传递参数

来自分类Dev

VBA (Ms-Access) 2013 溢出错误

来自分类Dev

在VBA中合并MySQL记录集

来自分类Dev

Excel VBA-遍历记录集

来自分类Dev

为VBA记录集传递参数

来自分类Dev

VBA & Excel - 循环记录集

来自分类Dev

从Access 2013运行Excel 2013宏时发生VBA自动化错误(系统调用失败)

来自分类Dev

通过Access 2013 VBA编辑Excel 2013文件后无法打开

来自分类Dev

从Access 2013运行Excel 2013宏时发生VBA自动化错误(系统调用失败)

来自分类Dev

Microsoft Access 2013记录源列

Related 相关文章

  1. 1

    大型记录集(VBA)的MS Access插入速度慢

  2. 2

    Access 2013错误绑定到ADO记录集

  3. 3

    Access 2013错误绑定到ADO记录集

  4. 4

    从VBA,DoEvents中的Access处理“大”记录集

  5. 5

    MS Access 使用 vba 复制记录集

  6. 6

    Access 2013插入/更新

  7. 7

    Access 2013 VBA自动使Excel丢失窗口

  8. 8

    MS ACCESS VBA记录集搜索条件类型不匹配

  9. 9

    将 Access VBA 记录集导出到 Excel 中的单行

  10. 10

    在记录更改时运行VBA,但不构成Open Access 2013

  11. 11

    在子窗体中创建新记录按钮单击 MS Access 2013 VBA

  12. 12

    VBA从SQL Server记录集获取价值

  13. 13

    为什么和何时在Access VBA中声明新记录集时使用New关键字?

  14. 14

    尝试读取记录集字段时,为什么未定义Access VBA抛出子或函数?

  15. 15

    Access VBA中的运行时3464。尝试使用SQL select语句打开记录集

  16. 16

    当数据存在于 Access DB 中时,excel vba 中的记录集不返回任何内容

  17. 17

    MS Access 2013:通过VBA使用MS Word的语法检查

  18. 18

    Access 2013 VBA-设置控件的新Click事件

  19. 19

    在子窗体中搜索值(vba Access2013)

  20. 20

    VBA(Access 2013)HTTP POST不传递参数

  21. 21

    VBA (Ms-Access) 2013 溢出错误

  22. 22

    在VBA中合并MySQL记录集

  23. 23

    Excel VBA-遍历记录集

  24. 24

    为VBA记录集传递参数

  25. 25

    VBA & Excel - 循环记录集

  26. 26

    从Access 2013运行Excel 2013宏时发生VBA自动化错误(系统调用失败)

  27. 27

    通过Access 2013 VBA编辑Excel 2013文件后无法打开

  28. 28

    从Access 2013运行Excel 2013宏时发生VBA自动化错误(系统调用失败)

  29. 29

    Microsoft Access 2013记录源列

热门标签

归档