Access中的ADODB - 不会插入,但不会引发错误

时间:2014-08-22 18:07:19

标签: vba ms-access adodb

我过去几个小时一直在盯着这个 - 我现在认为MySQL中有一些微妙而狡猾的错误导致了这个问题,或者它是一个非常明显的解决方案,我只需要另一套眼睛我很感激任何帮助。

我使用Access进行一些数据输入工作。我将我正在处理的表格链接起来,但我主要通过显式ADODB连接来处理它们(这有望使事务变得更容易,并允许我使用SELECT @@ IDENTITY)。这些表在我的环境中的服务器上的MySQL中。

之前我做过类似的工作,但由于某种原因,现在没有更新。它没有引发错误,我已经检查了Connection的错误属性...由于某种原因,它只是通过此代码轻松而不会引发错误。被引用的表现在是完全空的,它有相当多的字段,但只需要2个 - 自动编号ID和正在填充的字段。

谁能在这里看到一些明显错误的东西?选项明确打开,似乎它使连接正常,否则我想在打开记录集或连接时会出错。有人有任何调试建议吗?

最后一点,代码更复杂 - 我正在尝试创建一个类来存储我的连接,以使我描述的内容更容易。我最糟糕的情况是我在那里做的事情,比如在不关闭它的情况下开始交易,已经在MySQL中引起了一些打击。

Sub ADODBError()

    Dim cnn As ADODB.Connection
    Set cnn = New ADODB.Connection

    cnn.Open "driver={mysql odbc 5.2a driver};" & _
       "server=my.mysql.server;" & _
       "user=myUser;password=myPwd;" & _
       "database=callcenter"

    Dim firstDayOfWk As Date
    firstDayOfWk = #8/18/2014#

    Dim rst As ADODB.Recordset
    Set rst = New ADODB.Recordset

    rst.Open "WeeklyCallCenterStats", cnn, adOpenForwardOnly, adLockBatchOptimistic, adCmdTable

    With rst
        .AddNew
        .Fields("WeekStarting") = firstDayOfWk
        .Update
        .Close
    End With

End Sub

1 个答案:

答案 0 :(得分:3)

当您以批量锁定模式打开ADO记录集时,在记录集上调用UpdateBatch之前,您对记录集所做的更改实际上并未传输。

更改rst.Open来电中的锁定模式(我建议adLockOptimistic,除非它是快速更改的表格),或者在进行更改后致电rst.UpdateBatch