访问vba中的动态查询创建

时间:2016-09-09 13:14:44

标签: vba access

Set db = CurrentDb
Set qdf = db.CreateQueryDef("Unique_Address1_qry", strSQL)
Application.RefreshDatabaseWindow

strSQL = "SELECT field1 AS field1, field2 as field2 " & vbCrLf & _
"'" & strScenario & "'" & "AS Scenario, " & vbCrLf & _
"FROM table_tbl " & vbCrLf & _
"GROUP BY field1,....; "

strScenario包含一个计算公式,如" [field2] / 2 + 3" 结果是,在每个被调用的fied的记录中," [field2] / 2 + 3"正在展示计算的内容。

2 个答案:

答案 0 :(得分:2)

我不会重复@Comintern说的话,但我可以给你一个钓鱼竿

  • strSQL =作业之后的行上放置一个断点( F9 )。
  • 运行代码。
  • 执行到达断点时,按 Ctrl + G 打开立即窗格,然后键入:

    ?strSQL
    

这将输出字符串值(?Print的简写),然后您可以自己检查,复制到剪贴板,粘贴到某个新查询并尝试执行。

然后您可以修复代码,将当前行移回修改后的strSQL =作业,再次尝试?strSQL,冲洗&重复,直到您的代码生成有效的SQL查询 - 然后您可以删除断点并点击 F5 以继续执行,并且您有工作代码。

  

给一个人一条鱼,他会吃一天。给一个男人一根钓竿,他将在余生中吃完。

答案 1 :(得分:1)

查询确实应该参数化......但是你引用strScenario作为文字。您还错过了“field2”之后的逗号以及strScenario之后的空格。

看起来应该更像这样:

strSQL = "SELECT field1 AS field1, field2 as field2, " & _
    strScenario & " AS Scenario FROM table_tbl GROUP BY field1,....; "

请注意,您可以查看您构建的SQL的结果,只需在分配后放置Debug.Print strSQL并在立即窗口中查看它。