Инструкция SQL в MS Access DB, вызывая InputBox - PullRequest
0 голосов
/ 02 октября 2018

У меня есть VBA для формы.

Я пытаюсь взять информацию в текстовое поле на форме и обновить определенное поле в таблице.(не понял, как это сделать правильно) Эта строка кода - моя текущая попытка, но я получаю неожиданное поведение

Программа не продолжает выполняться после этого

   If (Not IsNull([New_Value_Box].Value)) Then
       DoCmd.RunSQL "Update [Export_NDC_Certification] Set " & [Field_List].Value & " = " & [New_Value_Box].Value & " WHERE SellerLoanIdentifier = " & Current_Loan
    End If

он, однако, открывает поле ввода со значением Current_Loan в качестве заголовка.Похоже, он ничего не делает с вводом и не выполняет никакого дополнительного кода.Я использовал MsgBox для отладки, и он определенно исходит из этой строки.Эта строка была тем, с чем я столкнулся, принимая значение и обновляя определенное значение таблицы вместе с ним.если это не способ сделать это, то любой толчок в правильном направлении был бы признателен.Спасибо!

1 Ответ

0 голосов
/ 02 октября 2018

Во-первых, я бы рекомендовал использовать метод Execute ( DAO.Database или DAO.QueryDef ) вместо DoCmd.RunSQL.Это значительно упрощает отладку ( вот сообщение на форуме с дополнительной информацией).

Кроме того, поскольку кажется, что вам нужны значения во всех ваших элементах управления ([Field_List], [New_Value_Box]Current_Loan), вы должны выполнить нулевую проверку всех из них.

Как отмечает @HansUp, ваша фактическая строка SQL, вероятно, вызывает проблему, поэтому вы, вероятно, хотите сохранить ее в отдельной переменнойзатем вы можете вывести в ближайшее окно.

С учетом всего сказанного, исправленный код может выглядеть примерно так:

Dim db As DAO.Database, qdf As DAO.QueryDef
Dim strSQL As String

If _
        IsNull([New_Value_Box].value) Or _
        IsNull([Field_List].value) Or _
        IsNull([Current_Loan].value) _
Then
    ' handle missing input
Else
    ' we know all required fields have values, so can proceed
    strSQL = _
            "UPDATE [Export_NDC_Certification " & _
            "SET " & [Field_List].value & "=" & [New_Value_Box].value & " " & _
            "WHERE SellerLoanIdentifier=" & Current_Loan

    Debug.Print strSQL

    Set db = CurrentDb
    Set qdf = db.CreateQueryDef("")
    qdf.SQL = strSQL
    qdf.Execute dbFailOnError
End If


' clean up DAO objects
Set qdf = Nothing: Set qdf = Nothing: Set db = Nothing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...