最近初次尝试在VBA中使用ADO对象进行参数化查询,一直出现Automation error,网上总是找不到对应的解决办法,经过反复尝试,终于搞清楚了。
假设cmd是ADODB.command 对象,其设置过程省略,要点集中在CommandText属性和Parameters集合
‘代码开始
Dim cmd as NewADODB.Command
Dim rst as ADODB.recordset
‘设置过程省略
‘添加两个参数
cmd.Parameters.Append cmd.CreateParameter(, adVarChar, ,Len(objT.BL), objT.BL)
cmd.Parameters.Append cmd.CreateParameter(, adChar, ,Len(objT.LLP), objT.LLP)
cmd.CommandText = "select BLNO from dbo.TSP whereBLNO=?" ‘SQL语句只用了一个参数
‘此时如果执行,必定跳出Automation error
Set rst = cmd.Execute()
‘代码结束
我想原因在于——cmd添加了2个参数,但是在SQL语句只用了一个参数,实际使用的参数个数与所添加的参数个数不一致。把参数去掉一个,顺利执行!
只知道ADODB.COMMAND对象可以添加很多很多参数,但是不知道对于参数的个数还有这种限制,要是哪位能找到相关的文档还麻烦告诉我一下啊——最好是微软官方的——在这里先谢谢了!