之前我已经完成了这项工作,只是在插入新记录之前测试表中是否已存在记录。这基本上就是我所做的,但这次我得到了一个错误
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也是字符串
答案 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字符串中用单引号括起来,整数不要。