Ms access Currentdb.executewithdbfailonerror不抛出错误
在Access 2003-2016中,我使用CurrentDb.Execute和dbFailonError运行INSERT语句。INSERT语句应该失败(它确实失败),因为一个字段基于具有“强制引用完整性”的相关表具有不正确的值。但是,它不会抛出错误。我已尝试在新数据库中重新创建此问题,错误正确。我当前数据库的设置有问题,我不想从头开始重新创建它。我已经从我的数据库中取出了所有的东西,除了有问题的部分和我的 这是我的代码,但问题是,当我从头开始创建一个新的数据库时,这段代码工作正常,并且会抛出错误。它在我当前的数据库中不起作用Ms access Currentdb.executewithdbfailonerror不抛出错误,ms-access,sql-insert,Ms Access,Sql Insert,在Access 2003-2016中,我使用CurrentDb.Execute和dbFailonError运行INSERT语句。INSERT语句应该失败(它确实失败),因为一个字段基于具有“强制引用完整性”的相关表具有不正确的值。但是,它不会抛出错误。我已尝试在新数据库中重新创建此问题,错误正确。我当前数据库的设置有问题,我不想从头开始重新创建它。我已经从我的数据库中取出了所有的东西,除了有问题的部分和我的 这是我的代码,但问题是,当我从头开始创建一个新的数据库时,这段代码工作正常,并且会抛出错
Private Sub Command34_Click()
Dim testsql As String
testsql = "INSERT INTO tblObservations (Site,TotalDepth) VALUES ('SUD-096',5)"
With CurrentDb
On Error GoTo Err_Execute
.Execute testsql, dbFailOnError
On Error GoTo 0
MsgBox ("Upload completed. " & .RecordsAffected & " records added.")
End With
Exit Sub
Finish:
Exit Sub
Err_Execute:
If DBEngine.Errors.Count > 0 Then
For Each errLoop In DBEngine.Errors
MsgBox ("Error number: " & errLoop.Number & vbCr & errLoop.Description)
Next errLoop
End If
Resume Finish
End Sub
像汉斯说的那样,使用显式选项。始终使用显式
选项
您缺少对Microsoft Office Access数据库引擎对象的引用。这是定义dbFailOnError
的地方。由于您没有该引用,dbFailOnError
未定义。默认情况下,此引用添加到所有Access数据库中,我强烈建议添加它
由于您没有使用显式选项,VBA并不介意它是未定义的,只是将未定义的变量转换为零
如果出于某种原因,您不想添加引用,请使用fordbFailOnError
:
.Execute testsql, 128
您是否在任何地方使用过
DoCmd.SetWarnings=False
?将Option Explicit
添加到表单代码模块的声明部分,并从VB编辑器的主菜单运行Debug->Compile。然后呢?