2016-01-29 115 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中查詢。該查詢適用於Access中我的UPDATE語句。

這是我在訪問查詢中使用:

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"