【发布时间】:2020-10-05 22:00:25
【问题描述】:
在 Access 2003-2016 中,我使用 CurrentDb.Execute 和 dbFailonError 来运行 INSERT 语句。 INSERT 语句应该失败(确实如此),因为基于具有“强制引用完整性”的相关表,一个字段的值不正确。但是,它不会引发错误。我已尝试在新数据库中重新创建此问题,并且该错误正常工作。我当前数据库的设置有问题,我不想从头开始重新创建它。除了有问题的部分和我的minimal reproducible example database is at this link 之外,我已经从我的数据库中删除了所有内容。
这是我的代码,但问题是,当我从头开始创建新数据库时,此代码工作正常并且会引发错误。它只是在我当前的数据库中不起作用。
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
【问题讨论】:
-
你在任何地方使用过
DoCmd.SetWarnings = False吗? stackoverflow.com/questions/13943753/… -
将
Option Explicit添加到表单代码模块的声明部分并从VB 编辑器的主菜单运行调试->编译。然后会发生什么?
标签: ms-access sql-insert