【发布时间】:2019-09-04 21:34:30
【问题描述】:
这是我代码的一小部分,但在这个特定部分中,我试图让以下语句执行:
“WHERE ([SummaryTbl].[WORK_ITEM_NMB]>2500) AND ([ParentChildTbl].[WORK_ITEM_NMB]>2500)”
我已经使用了所有的 JOINS/UNION,因为 ACCESS 不支持 FULL OUTER JOIN 并且一切正常。但是,我希望它只返回两个表的 WORK_ITEM_NMB 大于 2500 的值,这不起作用。它一直给我所有的记录。我在想我要么将 WHERE 子句放在不正确的位置和/或我必须将它添加到每个 JOIN 语句中。 我没有收到错误。我只是得到所有的记录。
Set db = OpenDatabase(DBLoc)
SQL = "SELECT [SummaryTbl].[WORK_ITEM_NMB], [SummaryTbl].[WORK_ITEM_STS], [SummaryTbl].[RELEASE_NMB], [SummaryTbl].[NOMADS_PRIORITY], [SummaryTbl].[TEST_ACTUAL_DT], [SummaryTbl].[TRAIN_ACTUAL_DT], [SummaryTbl].[TITLE], [SummaryTbl].[DESCRIPTION], [SummaryTbl].[DETAILED_RQ_COMMENTS], [SummaryTbl].[TRAIN_COMMENTS], [SummaryTbl].[TEST_COMMENTS], [ParentChildTbl].[HasAssocWI] FROM SummaryTbl LEFT JOIN ParentChildTbl ON [SummaryTbl].[WORK_ITEM_NMB] = [ParentChildTbl].[WORK_ITEM_NMB] UNION SELECT [SummaryTbl].[WORK_ITEM_NMB], [SummaryTbl].[WORK_ITEM_STS], [SummaryTbl].[RELEASE_NMB], [SummaryTbl].[NOMADS_PRIORITY], [SummaryTbl].[TEST_ACTUAL_DT], [SummaryTbl].[TRAIN_ACTUAL_DT], [SummaryTbl].[TITLE], [SummaryTbl].[DESCRIPTION], [SummaryTbl].[DETAILED_RQ_COMMENTS], [SummaryTbl].[TRAIN_COMMENTS], [SummaryTbl].[TEST_COMMENTS], [ParentChildTbl].[HasAssocWI] FROM SummaryTbl RIGHT JOIN ParentChildTbl ON [SummaryTbl].[WORK_ITEM_NMB] = [ParentChildTbl].[WORK_ITEM_NMB]" & _
"WHERE ([SummaryTbl].[WORK_ITEM_NMB]>2500) AND ([ParentChildTbl].[WORK_ITEM_NMB]>2500)"
'Execute Query and populate recordset
Set rs = db.OpenRecordset(SQL, dbOpenSnapshot)
谢谢!
【问题讨论】:
-
你的 UNION 子句在哪里?
-
您的 where 子句在新行上是否只是一个巧合。这是 VBA 的正确字符串连接语法吗?
-
如果你像@LeeMac 那样格式化你的sql,你可以使用sqlinform.com/online-sql-formatter。这有助于调试。