尝试运行以下代码时出现数据类型不匹配错误:
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语句中比较它们。
感谢。
答案 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