Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL字符串中使用VBA变量?输入参数值错误_Sql_Vba_Ms Access - Fatal编程技术网

如何在SQL字符串中使用VBA变量?输入参数值错误

如何在SQL字符串中使用VBA变量?输入参数值错误,sql,vba,ms-access,Sql,Vba,Ms Access,我得到一个弹出框,询问CXIid值的参数值 输入参数值 对于CXI00012 我尝试了”&CXIid&“,但结果是更新了0行。但是,当我在where子句或Enter参数值提示中输入一个值时,就会更新正确的行 如何让它将CXIid识别为一个值 Private Sub cmdSave_Click() 将CXIid设置为字符串 Dim testSQL作为字符串 CXIid=表单\u sf\u ParticipantView.CXI\u ID testSQL=“更新[tbl\U参与者]”和_ “设置tb

我得到一个弹出框,询问CXIid值的参数值

输入参数值
对于CXI00012

我尝试了
”&CXIid&“
,但结果是更新了0行。但是,当我在where子句或Enter参数值提示中输入一个值时,就会更新正确的行

如何让它将CXIid识别为一个值

Private Sub cmdSave_Click()
将CXIid设置为字符串
Dim testSQL作为字符串
CXIid=表单\u sf\u ParticipantView.CXI\u ID
testSQL=“更新[tbl\U参与者]”和_
“设置tbl_参与者同意=(Forms.frmReturn.cboConsent.value)”和_
“其中((tbl_Participants.CXI_ID=“&CXIid&”)
DoCmd.runsqltestsql

您有几种不同类型的错误。。。变量不能在引号内,因为字段
CXI\u ID
字符串
,所以不需要引号

这假设
同意
字段是数值,并且组合框也返回数值

testSQL = "UPDATE [tbl_Participants]" & _
          " SET tbl_Participants.Consent = " & Forms.frmReturn.cboConsent.value & _
          " WHERE tbl_Participants.CXI_ID = '" & CXIid & "'"
还要注意我在SET之前添加的空格和WHERE。这些都很重要

使用
MsgBox testSQL
Debug.Print testSQL
在运行之前仔细检查
testSQL
的设置

如果字段
CXI\u ID
不是字符串,但出于某种原因,您只是使用字符串作为保存值的变量类型:

testSQL = "UPDATE [tbl_Participants]" & _
          " SET tbl_Participants.Consent = " & Forms.frmReturn.cboConsent.value & _
          " WHERE tbl_Participants.CXI_ID = " & CXIid 
如果它们都是字符串:

testSQL = "UPDATE [tbl_Participants]" & _
          " SET tbl_Participants.Consent = '" & Forms.frmReturn.cboConsent.value  & "'" & _
          " WHERE tbl_Participants.CXI_ID = '" & CXIid & "'"

是一个数字或字符串。如果它是字符串,则应使用
,但
“&CXIid&“