我在VBA中使用带有OpenRecordset命令的SQL时遇到问题,以便运行我的数据。这是我的代码:
Dim SQL as string
Dim db As DAO.Database
Dim rs as DAO.Recordset
Dim File as String
Dim i as integer
SQL="SELECT * FROM MyTable WHERE [Manager no]=" & Forms!Form!TxtManagerNo
Set rs=db.OpenRecordset(SQL)
rs.MoveLast
rs.MoveFirst
For i=0 to rs.Recordset-1
File=File & rs.Fields("Code Nu")
rs.MoveNext
Next i
rs.Close
db.Close
它给出了错误3464作为数据类型不匹配。但是,如果我手动设置TxtManagerNo
值,它就可以正常工作:
SQL="SELECT * FROM MyTable WHERE [Manager no]= '443212'"
有人可以帮我解决问题吗?
答案 0 :(得分:0)
SQL语句中的单引号表示预期的数据类型不是整数或INT
类型。
将数据库中的数据类型更改为INT或将SQL语句修改为:
SQL="SELECT * FROM MyTable WHERE [Manager no]='" & Forms!Form!TxtManagerNo &'"
注意强>
对于任何可能有害的事情, Forms!Form!TxtManagerNo
都没有被消毒。如果您使用MS Access作为后端,它不会太糟糕,因为它不会使用分号;
接受两个语句。如果您正在使用其他数据库,则可能需要考虑使用参数。