错误:参数太少。预期3 ...在Access中执行SQL语句时

时间:2014-06-27 16:09:18

标签: sql vba ms-access access-vba

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

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,Analyte和TestId列的表。我检索了三个值并将它们存储在局部变量ThisWoid,Analyte和ThisTestId中。我想插入一条记录,但首先我必须看看它是否已存在于tblfromICPMS中。 ThisWoid和Analyte也是字符串

1 个答案:

答案 0 :(得分:2)

首先,我尝试将rs作为RecordSet而不是对象。另外,只需确保您的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字符串中用单引号括起来,整数不要。