首页 > 解决方案 > MS Access 参数太少:预期为 1

问题描述

所以我试图从表中获取数据,将该数据设置为一个变量,然后将该变量添加到一个新表中。这是访问我正在搜索的人的姓氏的代码。我几乎 100% 确定这部分有效。

Dim db As Database
Dim Lrs As DAO.Recordset
Dim LSQL As String
Set db = CurrentDb()
Set Lrs = db.OpenRecordset("Select [LastName]" & _
      "From ['Chromebook Registration Form]" & _
      "Where [InventoryNumber] = 1")
dbLastName = Lrs("LastName")

在调试模式下,它显示变量“dbLastName”包含我想要的字符串。

但是,当我运行以下代码(将信息添加到新表中)时,我收到 3061 运行时错误代码。参数太少:预期 1. 调试器说问题出在最后一行。我认为这是“dbLastName”的问题。时间戳的东西工作正常。

CurrentDb.Execute " INSERT INTO TempReg " _
              & "([Timestamp], LName, FName, Grade, InventoryNumber, SerialNumber, MacAddress, PaidIn, CheckNum) VALUES " _
              & "(Now, dbLastName, 'test', 'test', 'test', 'test', 'test', 'test', 'test');"

谢谢!

标签: ms-access

解决方案


您不能只将字符串变量嵌入到 SQL 中。代替

(Now, dbLastName, 'test ...

你需要

(Now(), '" & dbLastName & "', 'test' …

此外,您需要确保您的变量永远不会包含单引号字符,否则您还必须通过将其加倍来考虑这一点。


推荐阅读