Как обрабатывать 0 строк, найденных после DoCmd.RunSQL (INSERT INTO ...) - PullRequest
0 голосов
/ 03 мая 2019

Для начала я начал вчера только с попыток введения SQL в мой код VBA.

Я пытаюсь использовать VBA / SQL для вставки данных в локальную таблицу, составленную из комбинации таблицы базы данных и ввода формы. Я хочу знать, как вызвать «0 строк получено».

Я уже пытался посмотреть на нескольких страницах, как обрабатывать "0 строк для вставки" при запуске DoCmd.RunSQL ("INSERT INTO ... SELECT ... FROM ... WHERE ...).

Сам код работает, когда есть данные, так что это не проблема.

Сама проблема в том, что когда я не могу найти данные, я хочу вызвать окно сообщения, которое дает инструкции о том, как справиться с текущей ситуацией.

К сожалению, я не нашел, как я могу вызвать это.

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 голосов
/ 03 мая 2019

Использование .Execute и .RecordsActed .

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

Примечание: обратите внимание на Удалить 5 записей, но свойство RecordsActed имеет значение 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...