使用VBA代码在Access中运行SQL语句

使用VBA代码在Access中运行SQL语句,sql,vba,ms-access,Sql,Vba,Ms Access,我不知道这是怎么回事, 我正在从表单中收集搜索条件,以便在搜索中使用它 SQL行存储如下:strWhere是从表单收集的信息 SQLst=选择存款。罚款,存款。[存款价值],存款。[存款日期],存款。存款人,信息塔,存款。[账号]来自信息,存款地点(&strWhere&) 最后一条SQL语句如下所示: 从信息中选择存款。罚款、存款。[存款价值]、存款。[存款日期]、存款。存款人、信息塔、存款。[账号]存款,其中[账号]=1234 现在,在我使用这个命令运行该行之后,SQLst就是SQL行了 Do

我不知道这是怎么回事, 我正在从表单中收集搜索条件,以便在搜索中使用它

SQL行存储如下:strWhere是从表单收集的信息

SQLst=选择存款。罚款,存款。[存款价值],存款。[存款日期],存款。存款人,信息塔,存款。[账号]来自信息,存款地点(&strWhere&)

最后一条SQL语句如下所示:

从信息中选择存款。罚款、存款。[存款价值]、存款。[存款日期]、存款。存款人、信息塔、存款。[账号]存款,其中[账号]=1234

现在,在我使用这个命令运行该行之后,SQLst就是SQL行了

DoCmd.openquerysqlst

我得到这个信息:

Not DoCmd.OpenQuery SQLst,即用于保存的查询,而不是SQL字符串。你需要:

' Best to use a separate instance, so you can get record counts etc.
Set db = CurrentDB
对于操作查询:

db.Execute SQLst, dbFailOnerror
对于SELECT查询,可以使用记录集,也可以更新或创建查询

Set rs = db.Openrecordset(SQLst)

' This query does not exist
Set qdf = db.CreateQueryDef("MyQuery", SQLst)
我怀疑账号是文本,因此:

 ([Account Number] = 1234);

引号用于文本类型字段/列,数字按原样,日期用散列分隔。

尝试用单引号替换WHERE子句中的双引号。抱歉,编辑了它,我输入了错误消息OK,终于找到了一个讨论我需要的主题,作为第一个测试,我可以说它是可以接受的。如果有人需要,请检查7号柱。。。。。另外,access中有没有一种方法可以在不使用vba或sql查询的情况下从表单中获取多个条件的情况下实现这一点?!cc:@user1641782…而且,正如在这里和其他地方经常重复的那样,使用参数化查询总是比SQL glue-up好。谢谢,对于回复,我尝试过,但在搜索时它给了我一个错误,发现这一点似乎无法运行select with execute命令。您对引号的评论很有用,但在测试时确实出现了一些问题。也感谢戈德。