"LIKE"运算符在MS Access中工作,但不在ADO中工作

Pon*_*ell 6 vb6 ms-access ado sql-like

我正在尝试使用带有星号的"Like"过滤记录,它在使用Access 2010返回许多记录时起作用.我很难过,为什么它与ADO一起使用时没有返回任何内容.代码包括多个表和列,以便进行故障排除我做了一个简单的查询.这是代码:

strsql = "SELECT tproducts.Prod_Name FROM tproducts " _
& " WHERE tproducts.Prod_Name Like " & Chr(34) & "SO*" & Chr(34)

Set cn = New ADODB.Connection
cn = connString
cn.Open
Set rs = New ADODB.Recordset
rs.Open strsql, cn, adOpenStatic, adLockOptimistic

' test here
iRecCount = rs.RecordCount
rs.MoveFirst
Run Code Online (Sandbox Code Playgroud)

Recordcount返回-1.

当"Like"被"equals"替换时,它返回正确的记录,所以我确信它能够连接到数据库,例如:

strsql = "SELECT tproducts.Prod_Name FROM tproducts " _
& " WHERE tproducts.Prod_Name = " & Chr(34) & "SONY Vaio SVD13213CXB" & Chr(34)
Run Code Online (Sandbox Code Playgroud)

有没有一种特殊的方法在ADO中使用Like运算符?

我可以通过哪些其他方式过滤以获得与使用"赞"相同的结果?例如,要查找所有" SVD "产品?

Fio*_*ala 8

在MS Access中,通配符几乎总是*,在MS Access之外它几乎总是%,所以

str = "SELECT tproducts.Prod_Name FROM tproducts) " _
& " WHERE tproducts.Prod_Name Like ""SO%"""
Run Code Online (Sandbox Code Playgroud)

但是,我强烈建议您转到参数以避免一些严重的问题.

到目前为止,DAO是ACE/Jet的最佳选择(Access中的粗略示例循环表行,使用或不使用Private Const)