访问 VBA 'Syntax Error in Join Operation'
Access VBA 'Syntax Error in Join Operation'
我试图将 SELECT 查询附加到 Access 中的 VBA 对象,但我不断收到错误消息:
Syntax Error in Join operation
Dim sql As String
sql = "SELECT R_History.iteration, R.RuntimeID, Policylanguage.FormBody " & _
"FROM PolicyLanguage " & _
"INNER JOIN ([Policy&Elements] " & _
"INNER JOIN ((R " & _
"INNER JOIN R_History " & _
"ON (R.RunTimeID = R_History.RunTimeID " & _
"AND (R.ReportID = R_History.ReportID)) " & _
"INNER JOIN StatePolicyLanguage " & _
"ON R_History.Iteration = StatePolicyLanguage.Iteration) " & _
"ON [Policy&Elements].[Text&ElementID] = StatePolicyLanguage.[TextID&ElementID] " & _
"ON PolicyLanguage.TextID = [Policy&Elements].TextID " & _
"WHERE (((R.RuntimeID) = Dlast('runtimeID','r')));"
DoCmd.RunSQL (sql)
我这辈子都做不到 运行。谁能告诉我哪里出了问题?
编辑:这是我试图模拟的代码
如果您是 运行 查询,其中条件是在表单中输入的值(例如 field1 = frm1.txtValue
),您可以创建一个参数化查询,其中将传递的参数添加到 WHERE 子句.这样,您就不必在 VBA 中创建 SQL---您只需在 VBA.
中设置参数
正如其他人所指出的,Access 要求您在每次联接后加上括号:
from (((Table1
inner join Table2 on Table2.field1 = Table1.field1)
inner join Table3 on Table3.field2 = Table2.field2)
inner join Table4 on Table4.field3 = Table3.field3)
因此,正如其他人所建议的,如果您绝对需要通过 VBA 构建查询,请将 JOIN 和 ON 子句放在一起以防止混淆,并添加必要的括号。
我发现当您必须在 Access 中创建复杂查询时(在 SQL 编辑器或 VBA 中),将 SQL 写在更友好的编辑器(例如 Notepad++),支持语法高亮显示等功能。然后,您可以将查询粘贴到需要的地方。
我试图将 SELECT 查询附加到 Access 中的 VBA 对象,但我不断收到错误消息:
Syntax Error in Join operation
Dim sql As String
sql = "SELECT R_History.iteration, R.RuntimeID, Policylanguage.FormBody " & _
"FROM PolicyLanguage " & _
"INNER JOIN ([Policy&Elements] " & _
"INNER JOIN ((R " & _
"INNER JOIN R_History " & _
"ON (R.RunTimeID = R_History.RunTimeID " & _
"AND (R.ReportID = R_History.ReportID)) " & _
"INNER JOIN StatePolicyLanguage " & _
"ON R_History.Iteration = StatePolicyLanguage.Iteration) " & _
"ON [Policy&Elements].[Text&ElementID] = StatePolicyLanguage.[TextID&ElementID] " & _
"ON PolicyLanguage.TextID = [Policy&Elements].TextID " & _
"WHERE (((R.RuntimeID) = Dlast('runtimeID','r')));"
DoCmd.RunSQL (sql)
我这辈子都做不到 运行。谁能告诉我哪里出了问题?
编辑:这是我试图模拟的代码
如果您是 运行 查询,其中条件是在表单中输入的值(例如 field1 = frm1.txtValue
),您可以创建一个参数化查询,其中将传递的参数添加到 WHERE 子句.这样,您就不必在 VBA 中创建 SQL---您只需在 VBA.
正如其他人所指出的,Access 要求您在每次联接后加上括号:
from (((Table1
inner join Table2 on Table2.field1 = Table1.field1)
inner join Table3 on Table3.field2 = Table2.field2)
inner join Table4 on Table4.field3 = Table3.field3)
因此,正如其他人所建议的,如果您绝对需要通过 VBA 构建查询,请将 JOIN 和 ON 子句放在一起以防止混淆,并添加必要的括号。
我发现当您必须在 Access 中创建复杂查询时(在 SQL 编辑器或 VBA 中),将 SQL 写在更友好的编辑器(例如 Notepad++),支持语法高亮显示等功能。然后,您可以将查询粘贴到需要的地方。