2016-01-29 3 views
1

Я пытался исправить этот код, но понятия не имею, почему я держу, что слишком мало параметров: 1 ошибкаVBA Обновление запросов для нескольких полей

strSQL = "UPDATE tblProduct " 
strSQL = strSQL & "SET [Verified_By] = " & Me.txtCurrentUser & "" & " , [Verified_Date] = #" & Me.txtAuto_Date & "#" & ", [Status] = ""Verified""" 
strSQL = strSQL & " WHERE [Status] = ""Not Verified""" & " AND [Verify] = -1" 

Я до сих пор возникают проблемы с синтаксисом для крепления переменных к запросам в VBA. Запрос работает в моем заявлении UPDATE в Access.

Это то, что я использую в запросе доступа:

UPDATE tblProduct SET Verified_By = forms!frmVerificationProduct!txtcurrentuser, Verified_date = forms!frmVerificationProduct!txtAuto_date, Status = "Verified" 
WHERE verify = -1 AND Status = "Not Verified"; 

ответ

1

Если tblProduct.Verified_By поле текста тип данных, проблема заключается в том, что UPDATE поставляет в кавычки текстовое значение. И когда Access видит некотированное текстовое значение, он предполагает, что должен быть параметр, для которого вы не указали значение.

В этом случае, вы могли бы пересмотреть код, чтобы включить необходимые кавычки или переключиться на запрос с параметрами, а не возиться с кавычками ...

Dim db As DAO.Database 
Dim qdf As DAO.QueryDef 
Dim strSQL As String 
strSQL = "UPDATE tblProduct" & vbCrLf & _ 
    "SET [Verified_By] = [pCurrentUser], [Verified_Date] = [pAuto_Date], [Status] = 'Verified'" & vbCrLf & _ 
    "WHERE [Status] = 'Not Verified' AND [Verify] = -1" 
Debug.Print strSQL ' <- view in Immediate window; Ctrl+g will take you there 
Set db = CurrentDb 
Set qdf = db.CreateQueryDef(vbNullString, strSQL) 
qdf.Parameters("pCurrentUser").Value = Me!txtCurrentUser.Value 
qdf.Parameters("pAuto_Date").Value = Me!txtAuto_Date.Value 
qdf.Execute dbFailOnError 
1

Это должно сделать:

strSQL = "UPDATE tblProduct " 
strSQL = strSQL & "SET [Verified_By] = " & Me.txtCurrentUser & ", [Verified_Date] = #" & Format(Me.txtAuto_Date, "yyyy\/mm\/dd") & "#, [Status] = 'Verified' " 
strSQL = strSQL & "WHERE [Status] = 'Not Verified' AND [Verify] = -1" 
Смежные вопросы