用于搜索记录的VBA TextBox输入提供错误3464数据类型不匹配

时间:2015-07-25 22:42:15

标签: vba

我在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'"

有人可以帮我解决问题吗?

1 个答案:

答案 0 :(得分:0)

SQL语句中的单引号表示预期的数据类型不是整数或INT类型。

将数据库中的数据类型更改为INT或将SQL语句修改为:

SQL="SELECT * FROM MyTable WHERE [Manager no]='" & Forms!Form!TxtManagerNo &'"

注意

对于任何可能有害的事情,

Forms!Form!TxtManagerNo都没有被消毒。如果您使用MS Access作为后端,它不会太糟糕,因为它不会使用分号;接受两个语句。如果您正在使用其他数据库,则可能需要考虑使用参数。