【发布时间】:2014-06-28 01:09:58
【问题描述】:
我之前做过这个,只是在插入新记录之前测试表中是否已经存在记录。这基本上是我所做的,但是这次我得到了一个错误
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
更新: 更新 cmets 中的 sqlstr 后,错误消息更改为 1,还包括 rs 的声明。为澄清起见,tblFromICPMS 是一个包含 Woid、Analyte 和 TestId 列的表。我检索了三个值并将它们存储在局部变量 ThisWoid、Analyte 和 ThisTestId 中。我想插入一条记录,但首先我必须查看它是否已存在于 tblfromICPMS 中。 ThisWoid 和 Analyte 也是字符串
【问题讨论】:
-
你试过调试吗?恐怕,在您在此处发布的内容中,您没有引起错误的行。这是什么?
(tblFROMICPMS.woid = ThisWoid)。什么是ThisWoid。不应该是(tblFROMICPMS.woid = " & ThisWoid & ")"吗? -
看看
TabelfromICPMS.TestID。那应该是tblfromICPMS.TestID。 -
您是否在实际代码中连接该 sql 字符串?如果你单步执行,你会看到语句字面上是
SELECT tblfromICPMS.Woid, tblfromICPMS.Analyte, TabelfromICPMS.TestID FROM tblFROMICPMS WHERE (tblFROMICPMS.woid = ThisWoid) AND (tblFROMICPMS.analyte = Analyte) AND (tblfromICPMS.Testid=ThisTestID),你想要像“WHERE (tblFromICPMS.woid = " & strVariable & ") AND " ` 这样的语句 -
能否包含 rs 的声明?
-
基本上,我们都同意你应该试试这个字符串
"SELECT tblfromICPMS.Woid, tblfromICPMS.Analyte, tblfromICPMS.TestID FROM tblFROMICPMS WHERE (tblFROMICPMS.woid = " & ThisWoid & ") AND (tblFROMICPMS.analyte = " & Analyte & ") AND (tblfromICPMS.Testid=" & ThisTestID & ") "而且,如果你的任何条件与字符串进行比较,你需要在每一边加上一个单引号"... ='" & var & "' and ..."