微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MS Access-使用VBA自动为“访问无法附加所有数据”错误消息选择是

如何解决MS Access-使用VBA自动为“访问无法附加所有数据”错误消息选择是

我正在使用MS Access,单击一个按钮,它将把大量文件上传到我的数据库中。我希望用户能够单击按钮,然后最小化应用程序,并且当他们回来时,所有文件都被上传。但是,对于一些文件,我收到错误消息“访问无法将所有数据追加到表中”。这需要用户输入,除非选择是或否,否则将不会继续。

对于所有这些,我总是选择“是”,因为在执行此步骤后,我将进行验证,指出所有问题。

是否可以使用VBA在我的代码中构建是选择?

我的代码中已经包含以下内容

DoCmd.SetWarnings = False
DoCmd.Runsql ...
DoCmd.SetWarnings = True

预先感谢

解决方法

这是我用来执行sql的函数,它返回受SQL语句影响的记录数。它使用“ On Error Resume Next”来处理所有引发的错误(不是最佳的编码实践)。该函数返回0-如果失败,则失败,否则返回的值就是该SQL语句影响的记录数。

Function execSQL(vSQL) As Long
On Error Resume Next

    Dim dbF As DAO.Database
    Dim lngRecs As Long
    
    DoCmd.SetWarnings False
    Set dbF = CurrentDb
    dbF.Execute vSQL
    lngRecs = dbF.RecordsAffected
    execSQL = lngRecs
    DoCmd.SetWarnings True
    
    dbF.Close
    Set dbF = Nothing
    
End Function

如果失败,最好使用dao代替执行sql,然后可以在该位置上正确捕获错误并移至下一条记录。

,

您可以执行以下操作:

Sub MySub()
Dim strSql As String,fileName As String
    On Error GoTo Err_MySub
    'loop thru all files
        strSql = "...'" & fileName & "' ...."
        CurrentDb.Execute strSql
    'end of loop
    Exit Sub
Err_MySub:
    Debug.Print fileName & " gives this error:" & Err.Description
End Sub

按Ctrl-G显示调试窗口。也许您应该在错误处理程序中做一些更聪明的事情。

,

动作查询应使用Execute()方法运行。不会发出任何警告。

没有参数:

Currentdb().QueryDefs("QueryName").Execute dbFailOnError

带有参数:

With Currentdb().QueryDefs("QueryName")
    .Parameters("ParameterName").Value = ParameterValue
    .Execute dbFailOnError
End With

如果由于某种原因查询失败,则dbFailOnError选项将生成运行时错误,因此请确保您的方法能够处理错误。最后,如果您需要查看受影响的记录,请检查查询的RecordsAffected属性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。