我没有使用VB6进行大量编码,但我现在正在更新现有的应用程序,只是遇到了障碍。
我弄明白了这个问题。在VB6中,使用 LIKE 时,查询必须使用% 通配符,但在MS Access中,您必须使用***** 外卡。
我正在查询同一个数据库 - (它在MS Access中)。
从MS Access中查询时,以下查询有效:
SELECT * FROM table WHERE field LIKE '*something*'
当我在VB6中构建该查询时,我必须这样做:
SELECT * FROM table WHERE field LIKE '%something%'
发生了什么事?这是正常的吗?
答案 0 :(得分:5)
Access过去常常有自己不兼容的SQL版本,所以我认为它是出于遗留原因使用*。
当您使用VB6时,通常使用ODBC和更标准化的SQL,因此应用更常见的通配符。请记住,VB6并不关心您使用哪个数据库,因此如果您使用其他内容(例如,SQL服务器),它可能只会理解百分号。
我猜测Access-ODBC连接器会为您转换内容。
答案 1 :(得分:5)
答案 2 :(得分:1)
我不知道这是否适用于VB6,但在Access中,您可以使用
ALIKE'%something%'
并且%字符将被视为通配符,无论您是使用带有DAO还是ADO的VBA,还是在查询编辑器中创建查询。
答案 3 :(得分:0)
我从来没有见过星号字符用作类似语句的通配符(就在其他地方) - 一般来说,百分号是您需要使用的。
答案 4 :(得分:0)
我认为它与DAO(Access内部使用)和ADO(VB6用于与Access通信的内容)之间的区别。
答案 5 :(得分:0)
是的,您可以在Jet 4.0 OLE DB查询中使用ALIKE(即使用ADO从VB6获取):
JeTTY version 0.5.68
>open booksale.mdb;
#Opened database booksale.mdb (Jet3X "97")
>select * from authors where author like "ba*";
#No rows to display
>select * from authors where author like "ba%";
Page 1 of 1
Au_ID Author Year Born
───── ────────── ─────────
10 Bard, Dick 1941
>select * from authors where author alike "ba%";
Page 1 of 1
Au_ID Author Year Born
───── ────────── ─────────
10 Bard, Dick 1941
>
当然,您获得了与Access的兼容性,但失去了 ANSI SQL-92兼容性,以便以后升级到SQL Server等,最终为自己做更多工作。