Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据类型不匹配Acess 2010 VBA_Vba_Ms Access - Fatal编程技术网

数据类型不匹配Acess 2010 VBA

数据类型不匹配Acess 2010 VBA,vba,ms-access,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”也是一个文本字段,包含数字

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

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语句中比较它们


谢谢。

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

SELECT*FROM KLIST,其中KLIST='123'
在VBA中

sSQL=“从KLIST中选择*,其中KLIST=”&Me.bleh&“

SQL中字符串中的单个引号可以通过加倍引号进行转义:

从KLIST中选择*,其中KLIST='就是这样'
使用VBA中的
Replace
功能可实现以下目的:

sSQL=“从KLIST中选择*,其中KLIST=”&Replace(Me.bleh,“,”)&

作为评论的后续,这一条很有效

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

另外,您可能希望了解如何在SQL语句中为不同的数据类型使用VBA变量:

尝试使用此选项
sSQL=“SELECT*FROM KLIST WHERE KLIST='”&Me.bleh&“
格式错误消失,但现在它说没有这样的记录。我仔细检查了一下,有这样的记录。我是否可能获得数字的ASCII码,而不是作为字符串(文本)的数字本身?请尝试在查询设计器中运行此SQL语句:
SELECT*FROM KLIST,其中TRIM(KLIST)='x'
其中
x
Me.bleh
的值。它会检索您的记录吗?还可以在VBA中尝试此选项:
sSQL=“SELECT*FROM KLIST WHERE TRIM(KLIST)='”&TRIM(Me.bleh)和“'”
修剪帮助,谢谢!