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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
错误:参数太少。在Access中执行SQL语句时应为3_Sql_Ms Access_Vba - Fatal编程技术网

错误:参数太少。在Access中执行SQL语句时应为3

错误:参数太少。在Access中执行SQL语句时应为3,sql,ms-access,vba,Sql,Ms Access,Vba,我以前做过这项工作,只是在插入新记录之前测试表中是否已经存在记录。这基本上就是我所做的,但这次我犯了一个错误 Error: "3061 Too few parameters. Expected 2." 我试图非常具体地(tblfromICPMS.Woid而不仅仅是Woid)考虑这可能会有所帮助,但这并没有真正起作用。我在生产线上得到了明确的信息 If rs.RecordCount = 0 Then 这是代码,其中ThisWoid、Analyte和ThisTestId是局部变量: DIM rs

我以前做过这项工作,只是在插入新记录之前测试表中是否已经存在记录。这基本上就是我所做的,但这次我犯了一个错误

Error: "3061 Too few parameters. Expected 2."
我试图非常具体地(
tblfromICPMS.Woid
而不仅仅是
Woid
)考虑这可能会有所帮助,但这并没有真正起作用。我在生产线上得到了明确的信息

If rs.RecordCount = 0 Then
这是代码,其中ThisWoid、Analyte和ThisTestId是局部变量:

DIM rs As Object
strSQL = "SELECT tblfromICPMS.Woid, tblfromICPMS.Analyte, tblfromICPMS.TestID FROM tblFROMICPMS WHERE (tblFROMICPMS.woid = " & ThisWoid & ") AND (tblFROMICPMS.analyte = " & Analyte & ") AND (tblfromICPMS.Testid=" & ThisTestID & ") "
Set rs = CurrentDb.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
   "insert record"
End IF 

更新:在注释中更新sqlstr后,错误消息更改为1,还包括rs声明。为了澄清,tblFromICPMS是一个包含Woid、分析物和TestId列的表格。我检索了三个值,并将它们存储在局部变量ThisWoid、Analyte和ThisTestId中。我想插入一条记录,但首先我必须查看它是否已经存在于tblfromICPMS中。此外,ThisWoid和Analyte都是字符串。首先,我会尝试将rs作为记录集而不是对象来缩小。另外,请插入一个消息框,以确保您的SQL字符串有意义:

DIM rs As Recordset
strSQL = "SELECT Woid, Analyte, TestID FROM tblFROMICPMS WHERE (woid = " & ThisWoid & ") AND (analyte = " & Analyte & ") AND (Testid=" & ThisTestID & ") "
msgbox strSQL
Set rs = CurrentDb.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
   "insert record"
End IF 
查看消息框结果是否为您提供了任何关于问题所在的线索。通常,当Access不理解您的某个变量时,会发生此错误


别忘了,文本需要在SQL字符串中用单引号括起来,整数不要。你试过调试吗?恐怕,在你发布的文章中,没有一行是错误的。这是什么<代码>(tblFROMICPMS.woid=ThisWoid)。什么是
这个世界ID
。它不是应该是
(tblFROMICPMS.woid=“&ThisWoid&”)吗“
?请查看
选项卡elfromicpms.TestID
。应该是
tblfromICPMS.TestID
。您是否在实际代码中连接该sql字符串?如果您单步执行,您将看到语句是字面上的
选择tblfromICPMS.Woid,tblfromICPMS.Analyte,TabelfromICPMS.TestID,来自tblfromICPMS,其中(tblfromICPMS.Woid=ThisWoid)和(tblfromICPMS.Analyte=Analyte)以及(tblfromICPMS.TestID=ThisTestID)
您想要类似“WHERE(tblfromICPMS.Woid=”的内容&strVariable&>)和“`您可以包含rs的声明吗?基本上,我们都同意您应该尝试使用这个字符串
”从tblfromICPMS中选择tblfromICPMS.Woid,tblfromICPMS.Analyte,tblfromICPMS.TestID,其中(tblfromICPMS.Woid=“&ThisWoid&”)和(tblfromICPMS.Analyte=“&Analyte&”)和(tblfromICPMS.TestID=“&thistid&”)“
而且,如果将任何条件与字符串进行比较,则需要在每一侧使用一个引号,
“…=”&var&“和…”