【问题标题】:Run SQL Statement in Access using VBA code使用 VBA 代码在 Access 中运行 SQL 语句
【发布时间】:2014-01-28 12:13:37
【问题描述】:

我不知道这有什么问题, 我正在从表单中收集搜索条件以在搜索中使用它。

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

我收到这条消息:

【问题讨论】:

  • 尝试用单引号 (') 替换 WHERE 子句中的双引号 (")。
  • 抱歉编辑了,我输入了错误信息
  • 好的,终于找到了一个正在谈论我需要什么的话题,作为第一次测试我可以说它是可以接受的。万一有人需要它(检查帖子#7).....还有一种方法可以在不使用vb​​a或sql的情况下实现这一点(查询从表单中获取多个条件)?! access-programmers.co.uk/forums/showthread.php?t=225700

标签: sql vba ms-access


【解决方案1】:

不是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);

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

【讨论】:

  • cc: @user1641782 ...而且,正如这里和其他地方经常重复的那样,使用参数化查询总是比“SQL 粘合”更好。
  • 谢谢您的回复,我试过了,但它给了我一个错误,当我搜索它时,找到了这个office.microsoft.com/en-us/access-help/HV080760050.aspx
  • 看来我无法使用执行命令运行选择。您对引号的评论很有用,它在测试时确实产生了一些问题。也感谢戈德。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 2012-06-16
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多