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"正在展示计算的内容。
答案 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
并在立即窗口中查看它。