数据类型不匹配Access 2010 VBA

时间:2014-03-29 17:24:37

标签: vba ms-access

尝试运行以下代码时出现数据类型不匹配错误:

Dim myString As String
Dim rs As Recordset

sSQL = "SELECT * FROM KLIST WHERE KLIST = " & Me.bleh
Set rs = CurrentDb.OpenRecordset(sSQL)
myString = rs.Fields("DATEK")

“bleh”字段是表单中的普通文本字段。 “KLIST”表中的“KLIST”字段也是一个包含数字的文本字段。

我在表单的文本字段中输入数字的事实是否会改变字段的格式?如果是,我如何在WHERE语句中比较它们。

感谢。

2 个答案:

答案 0 :(得分:0)

如果KLIST是文本列,则必须添加字符串分隔符(SQL中的单引号):

SELECT * FROM KLIST WHERE KLIST = '123'

在VBA中

sSQL = "SELECT * FROM KLIST WHERE KLIST = '" & Me.bleh & "'"

SQL中字符串中的单引号可以通过加倍引用来转义:

SELECT * FROM KLIST WHERE KLIST = 'that''s it'

使用VBA中的Replace功能实现此目的:

sSQL = "SELECT * FROM KLIST WHERE KLIST = '" & Replace(Me.bleh, "'", "''") & "'"

答案 1 :(得分:0)

作为评论的后续内容,这个有用

sSQL = "SELECT * FROM KLIST WHERE TRIM(KLIST) = '" & TRIM(Me.bleh) & "'"

您也可能希望看到如何在SQL语句中为不同的数据类型使用VBA变量:Global Variables in SQL statement