Во-первых, я бы рекомендовал использовать метод 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