如何处理在DoCmd.RunSQL(INSERT INTO ...)之后找到的0行

时间:2019-05-03 08:16:56

标签: sql database vba ms-access odbc

对于初学者来说,我昨天才开始尝试将SQL引入我的VBA代码中。

我正在尝试使用VBA / SQL将数据插入由数据库表和表单输入组合而成的本地表中。我想知道如何触发“检索到0行”。

在运行DoCmd.RunSQL(“ INSERT INTO ... SELECT ... FROM ... WHERE ...)时,我已经尝试在几页上查找如何处理“要插入的0行”。 / p>

存在数据时,代码本身可以工作,所以这不是问题。

问题本身是当我找不到数据时,我想触发一个消息框,其中提供了有关如何处理当前情况的说明。

可悲的是,我还没有找到如何触发它的方法。

sqlTempInsert = "INSERT INTO tblScanInput (Support, EAN, Counted, Product, Description, Launched, Collected) " & _
        "SELECT " & lblSupportData.Caption & ", " & txtEANInput.Value & ", "

If txtAmountInput.Visible = True Then
    sqlTempInsert = sqlTempInsert & txtAmountInput.Value & ", "
ElseIf txtAmountInput.Visible = False Then
    sqlTempInsert = sqlTempInsert & "1, "
End If

sqlTempInsert = sqlTempInsert & "GEPRO.CODPRO, GEPRO.DS1PRO, GESUPDC.UVCSRV, GESUPDC.UVCLIV " & _
        "FROM [Database_Table] GESUPDC LEFT OUTER JOIN [Database_Table] GEPRO ON GESUPDC.CODPRO = GEPRO.CODPRO " & _
        "WHERE GESUPDC.NUMSUP = " & lblSupportData.Caption & " AND GESUPDC.EDIPRO = '" & txtEANInput.Value & "';"   

DoCmd.RunSQL(sqlTempInsert)

1 个答案:

答案 0 :(得分:0)

使用.Execute.RecordsAffected

Dim db As DAO.Database
Dim x As Long

Set db = CurrentDb
db.Execute sqlTempInsert, dbFailOnError
x = db.RecordsAffected
If x = 0 Then
    ' nothing was inserted
End If

注意:请注意Delete 5 Records but RecordsAffected Property is 0