0

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

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

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

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

我一直在谷歌搜索和修补很长一段时间,但我被卡住了。下面是我的 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
4

1 回答 1

0

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

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

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

通配符

对于完全匹配,您可以使用"="

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

如果类似的东西">="适用于字符串字段,那么我怀疑该字段的设置不正确,我猜我对相关软件不熟悉,和/或可以执行隐式转换,这会导致性能开销并且容易中断.

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

WHERE columnN = N'myString'

如果失败,您总是可以尝试将列转换为不同的类型,例如

StrConv(PNR,128) = '309' 
于 2018-03-08T09:22:41.970 回答