Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access Currentdb.executewithdbfailonerror不抛出错误_Ms Access_Sql Insert - Fatal编程技术网

Ms access Currentdb.executewithdbfailonerror不抛出错误

Ms access Currentdb.executewithdbfailonerror不抛出错误,ms-access,sql-insert,Ms Access,Sql Insert,在Access 2003-2016中,我使用CurrentDb.Execute和dbFailonError运行INSERT语句。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并不介意它是未定义的,只是将未定义的变量转换为零

如果出于某种原因,您不想添加引用,请使用for
dbFailOnError

.Execute testsql, 128

您是否在任何地方使用过
DoCmd.SetWarnings=False
?将
Option Explicit
添加到表单代码模块的声明部分,并从VB编辑器的主菜单运行Debug->Compile。然后呢?