在*MS-Access但不是VBA中使用Like*Works

Ric*_*ook 6 sql ms-access vba sql-like

我有一个简单的查询,但遇到了LIKE在VBA中使用的问题.我在VBA中的SQL字符串是:

stsql1 = "Select Top 25 data.* from data where data.Description Like ('*') "
Run Code Online (Sandbox Code Playgroud)

当我在我的VBA代码中运行此sql字符串时,我没有返回任何记录,但是如果我将相同的字符串复制/粘贴到MS Access中的SQL视图中的查询中,则查询将返回我期望的值.在VBA中使用"Like"语法有诀窍吗?

如果有帮助,我可以提供额外的代码和数据库的小版本.

Han*_*sUp 9

对于SQL,数据库引擎将接受单引号或双引号作为文本分隔符.因此,这两个WHERE条款中的任何一个都可行.

WHERE some_field Like '*'
WHERE some_field Like "*"
Run Code Online (Sandbox Code Playgroud)

但是,VBA只接受双引号作为文本分隔符,因此您必须使用第二种形式.

关于你的SELECT陈述的另外两点:

Select Top 25 data.* from data where data.Description Like ('*')
Run Code Online (Sandbox Code Playgroud)
  1. TOP [number]没有ORDER BY条款是任意的
  2. 你的Like模式周围不需要括号......你可以使用Like "*"

如果您的VBA代码在该SELECT语句中使用ADO ,则必须将通配符更改*%...

WHERE data.Description Like '%'
Run Code Online (Sandbox Code Playgroud)


Jac*_*cob 7

在ADO/VBA中,您必须使用%而不是*作为通配符.我过去碰到过几次......

  • 它不是VBA,而是导致您必须使用与Access查询构建器中不同的通配符集的ADO.在这里发帖的每个人都应该阅读@ onedaywhen的文章:http://stackoverflow.com/questions/719115/microsoft-jet-wildcards-asterisk-or-percentage-sign/720896#720896 (3认同)