ms-access - "LIKE"运算符(operator)在 MS Access 中工作,但在 ADO 中不工作

标签 ms-access vb6 ado sql-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

记录计数返回 -1。

当“Like”被“equals”替换时,它会返回正确的记录,因此我确信它能够连接到数据库,例如:
strsql = "SELECT tproducts.Prod_Name FROM tproducts " _
& " WHERE tproducts.Prod_Name = " & Chr(34) & "SONY Vaio SVD13213CXB" & Chr(34)

在 ADO 中是​​否有使用 Like 运算符的特殊方法?

我还可以通过哪些其他方式过滤以提供与使用“喜欢”相同的结果?例如,要查找所有“SVD”产品?

最佳答案

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

str = "SELECT tproducts.Prod_Name FROM tproducts) " _
& " WHERE tproducts.Prod_Name Like ""SO%"""

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

到目前为止,DAO 是 ACE/Jet 的更好选择(粗略示例 Loop table rows in Access, with or without use of Private Const)

关于ms-access - "LIKE"运算符(operator)在 MS Access 中工作,但在 ADO 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25634506/

相关文章:

java - 如何在java中访问DLL文件?

excel - 为什么 ADO 连接即使在只读状态下仍会创建 "ldb"锁定文件?

sql - 将记录永久标记为只读的最佳方法是什么?

ms-access - 除非处于 Shift 键旁路模式,否则不会显示进度条

vb6 - VB6 中的接口(interface)限制

multithreading - VB6中提供了哪些线程同步机制

ms-access - 带有行源表/查询的组合框,但也带有 "select nothing"选项

c# - 如何向链接到另一个表的 MS Access 表添加行?

c++ - 将记录集中的变体(具有货币值)转换为格式正确的字符串

.net - 表值参数错误