dbs.Execute " INSERT INTO Log " _
& "(UserName, DateAccessed) VALUES " _
& "(@GetLogonName, @Today);"
GetLogonName和今天是变量,但我得到错误“错误 - 参数太少,预计两个”。如果我使用实际值(如&“('abce','2/2/2012')运行该函数,则可以正常工作。
我做错了什么?
由于
答案 0 :(得分:3)
Database.Execute不接受查询参数,只接受RecordsetOptionEnum中定义的执行选项。
要运行参数化查询,您需要创建一个QueryDef对象:
Dim query As QueryDef
Set query = dbs.CreateQueryDef("", "INSERT INTO LOG (UserName,DateAccessed)" & _
" VALUES(@user,@time)")
query.Parameters("@user").Value = "Moo"
query.Parameters("@time").Value = Now
query.Execute
空字符串表示这是一个临时的QueryDef。如果输入任何其他名称或完全省略名称,将在数据库中创建新的Query对象。
如果您经常使用相同的查询,最好创建一个查询并按名称调用它:
Set query = dbs.QueryDefs("myQueryName")
...
QueryDef.Execute接受与Database.Execute
相同的执行参数