MySQL & MsAccess 2007 - 尝试更新时出现错误 3197

Posted

技术标签:

【中文标题】MySQL & MsAccess 2007 - 尝试更新时出现错误 3197【英文标题】:MySQL & MsAccess 2007 - Error 3197 When Trying to Update 【发布时间】:2012-02-22 17:00:28 【问题描述】:

我正在将 Access 数据库迁移到 mysql。 大多数程序运行良好,但我仍然遇到 SQL 查询问题。

我收到 3197 运行时错误:

The Microsoft Office Access database engine stopped the process because you and another user are attempting to change the same data at the same time.

我已经做了什么:

配置我的 ODBC 驱动程序以允许动态游标 配置我的 ODBC 驱动程序以返回匹配的行而不是受影响的行

导致错误的代码:

Dim rsMain As Recordset
Dim rs As Recordset

Dim db As Database
Set db = CurrentDb

Dim sqlQuery As String

sqlQuery = "Select * from Table1 where field1 like '" & Me.field10 & "*' and field2=" & Me.field11 & " and field3=True"
Set rsMain = db.OpenRecordset(sqlQuery)

rsMain.MoveFirst
Do Until rsMain.EOF
    sqlQuery = "select sum(field4) as Est, sum(field5) as Cons, sum(field6) as Prod from Table1 where field1 like '" & rsMain("field1") & "*' and field3=False and field5=" & Me.modifiedDate
    Set rs = db.OpenRecordset(sqlQuery)

    rsMain.Edit
    rsMain.Fields("field4") = rs.Fields("Est")
    Set rs = Nothing

    rsMain.Update
    rsMain.MoveNext
Loop
Set rsMain = Nothing

rsMain.Update 命令失败,这是错误的来源。 我有类似的代码,不会导致任何错误。我是当时唯一的用户。

提前感谢您的见解

【问题讨论】:

谢谢,这是拼写错误。这就是我的代码中的内容。 requeteSQL 在法语中是 sqlQuery 我已经简化并更改了变量的名称,但我忘了更改一些。 dtAvancement 是更改日期格式的函数的结果。 @Galephico 在使用 db 服务器后端和 Access 前端时,最好避免使用链接表和 currentdb 引用。 Access以其本机DAO格式读取表,您最好打开与MYSQL数据库的ADO连接,因为查询是在服务器端而不是客户端执行的。这并未严格回答问题,但在将后端数据移出 Access 时需要牢记。 @Galephico 至于问题,我认为您可能需要将“set rs = nothing”移动到“rsmain.update”之后,并考虑在 Open Recordset 上添加“dbopendynaset”跨度> 【参考方案1】:

我没有使用rsMain.Edit/Update,而是使用DoCmd.RunSQL SQLQuery 直接使用SQL 更新,其中SQLQuery 是我更新的SQL 查询。

【讨论】:

以上是关于MySQL & MsAccess 2007 - 尝试更新时出现错误 3197的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ms Access 2007 中使用 MySQL 视图,而不会出现字符串列的垃圾?

如何将数据库从 MS access 2007 导出到 MySQL? [关闭]

MS Access 2007 查询不在 SQL Server 2008 上运行

MS Access 2007 SQL 查询出现问题

如何在 MS ACCESS 2007 查询中使用 LIMIT

如何在 MS Access 2007 中获取 sql 查询