尝试选择' Widestring'的字段时,来自VBA的SQL查询出现问题type(Access .mbd文件)

时间:2018-03-08 09:13:54

标签: sql excel vba widestring

我正在尝试将.mbd文件中的一些数据导入Excel。 我可以将整个数据库复制到电子表格中,没问题。 我也可以使用像这样的声明

sSQL = "SELECT HOEHE " & "FROM h_datei WHERE HOEHE >= 53 "

在类型不是int或float的字段上使用WHERE时会出现问题。 (我没有MS Access,但是MDB Plus告诉我.mdb中文本字段的类型被称为' Widestring')

我在Excel的MsgBox中得到了这个: 运行时错误' -2147217913(80040e07)': 自动化错误

我一直在谷歌上搜索和修补,但我被卡住了。 Under是我的VBA代码。 我不知道这是否与提供商(Microsoft.ACE.OLEDB.12.0)有关,但我尝试过其他一些。 我也在考虑unicode,因为这个数据库来自德国的测量计划。

sConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & _
            sPath & "Oskarb04.mdb"

sSQL = "SELECT HOEHE " & "FROM h_datei WHERE PNR >= 53 "
Set rsData = New ADODB.Recordset
Debug.Print sSQL
rsData.Open sSQL, sConnect, adOpenForwardOnly, adLockReadOnly, adCmdUnknown

1 个答案:

答案 0 :(得分:0)

对于字符串比较,您通常会使用'Like'运算符,例如

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern; 

您可以将其与Wildcards结合使用以获得部分匹配。该链接的一个例子:

Wildcards

要获得完全匹配,您可以使用"="

SELECT column1, column2, ...
FROM table_name
WHERE columnN = 'myString';

如果像">="之类的东西在字符串字段上工作,那么我怀疑字段设置不正确,我猜测不熟悉有问题的软件,和/或,可以执行隐式转换导致性能开销并且易于破坏。

如果它是一个unicode字符串,快速Google似乎暗示widestring数据类型是,那么

WHERE columnN = N'myString'

如果不能,您可以尝试将列强制转换为其他类型,例如

StrConv(PNR,128) = '309'