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

M.F*_*ifl 3 sql ms-access vba

我无法弄清楚这有什么问题,我正在从表单中收集搜索条件以在搜索中使用它.

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

SQLst ="SELECT Deposits.Fines,Deposits.[Deposit Value],Deposits.[Deposit Date],Deposits.Depositor,Info.Tower,Deposits.[Account Number] FROM Info,Deposits where"&strWhere&";"

最终的SQL语句如下所示:

SELECT Deposits.Fines,Deposits.[Deposit Value],Deposits.[Deposit Date],Deposits.Depositor,Info.Tower,Deposits.[Account Number] FROM Info,Deposits Where([Account Number] ="1234");

现在使用此命令运行Line后(SQLst是SQL Line up)

DoCmd.OpenQuery SQLst

我收到这条消息:

在此输入图像描述

Fio*_*ala 5

不是DoCmd.OpenQuery SQLst,这是针对已保存的查询,而不是SQL字符串.你需要:

' Best to use a separate instance, so you can get record counts etc.
Set db = CurrentDB
Run Code Online (Sandbox Code Playgroud)

对于动作查询:

db.Execute SQLst, dbFailOnerror
Run Code Online (Sandbox Code Playgroud)

对于SELECT查询,您可以使用记录集或更新或创建查询.

Set rs = db.Openrecordset(SQLst)

' This query does not exist
Set qdf = db.CreateQueryDef("MyQuery", SQLst)
Run Code Online (Sandbox Code Playgroud)

我怀疑帐号是文字,所以:

 ([Account Number] = 1234);
Run Code Online (Sandbox Code Playgroud)

引号用于文本类型的字段/列,数字按原样,日期用散列(#)分隔.

  • cc:@ user1641782 ...而且,正如在这里和其他地方经常重复一样,使用参数化查询总是比"SQL glue-up"更好. (2认同)