MS Access VBA: 内连接语法错误
MS Access VBA: Syntax error with inner join
我正在尝试向 MS Access 查询添加一个简单的内部联接。我试图将 table 与单个字段连接起来,只是为了将结果限制为 cusnums 的一个子集。我收到一个我根本不明白的语法错误(见下文)。
我在下面包含了旧代码和新代码。唯一的变化是添加了内部连接。任何帮助,将不胜感激。谢谢。
错误信息:
Syntax error (missing operator) in query expression
'(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = tbl_Store_With_Sat_Ord.shpcusnum)
LEFT JOIN
qry_Co_1_PRET_Open_Order_2_Days_Out
ON
(qry_Co_1_PRET_Routed_2_Days_Out.co_num = qry_Co_1_PRET_Open_Order_2_Days_Out.co_num)
AND
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = qry_Co_1_PRET_Open_Order_2_Days_Out.shpcusnum'
旧代码:
SELECT
IIf([totordqty]>0, "Order In","No Order") AS OO_Staus,
qry_Co_1_PRET_Routed_2_Days_Out.co_num,
qry_Co_1_PRET_Routed_2_Days_Out.prislscod,
qry_Co_1_PRET_Routed_2_Days_Out.cusnum,
qry_Co_1_PRET_Routed_2_Days_Out.co_nam,
qry_Co_1_PRET_Routed_2_Days_Out.cusphn,
Switch([totordqty]>0,"",[cusphn]<>"",[cusphn],True,"No Phone # on File") AS Cust_Phone,
qry_Co_1_PRET_Routed_2_Days_Out.rtedow,
qry_Co_1_PRET_Routed_2_Days_Out.rtecod,
qry_Co_1_PRET_Routed_2_Days_Out.stpnum,
qry_Co_1_PRET_Open_Order_2_Days_Out.plnshpdat,
qry_Co_1_PRET_Open_Order_2_Days_Out.totordqty,
qry_Co_1_PRET_Open_Order_2_Days_Out.ordnetwgt,
qry_Co_1_PRET_Open_Order_2_Days_Out.ordcub,
qry_Co_1_PRET_Open_Order_2_Days_Out.shptotamt,
qry_Co_1_PRET_Open_Order_2_Days_Out.prcflg,
qry_Co_1_PRET_Routed_2_Days_Out.cusemaadd,
qry_Co_1_PRET_Routed_2_Days_Out.TD_Email
FROM
qry_Co_1_PRET_Routed_2_Days_Out
LEFT JOIN
qry_Co_1_PRET_Open_Order_2_Days_Out
ON
(qry_Co_1_PRET_Routed_2_Days_Out.co_num = qry_Co_1_PRET_Open_Order_2_Days_Out.co_num)
AND
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = qry_Co_1_PRET_Open_Order_2_Days_Out.shpcusnum)
WHERE
(((IIf([totordqty]>0,"Order In","No Order"))="No Order"))
ORDER BY
IIf([totordqty]>0,"Order In","No Order"),
qry_Co_1_PRET_Routed_2_Days_Out.rtecod,
qry_Co_1_PRET_Routed_2_Days_Out.stpnum;
新代码:
SELECT
IIf([totordqty]>0,"Order In","No Order") AS OO_Staus,
qry_Co_1_PRET_Routed_2_Days_Out.co_num,
qry_Co_1_PRET_Routed_2_Days_Out.prislscod,
qry_Co_1_PRET_Routed_2_Days_Out.cusnum,
qry_Co_1_PRET_Routed_2_Days_Out.co_nam,
qry_Co_1_PRET_Routed_2_Days_Out.cusphn,
Switch([totordqty]>0,"",[cusphn]<>"",[cusphn],True,"No Phone # on File") AS Cust_Phone,
qry_Co_1_PRET_Routed_2_Days_Out.rtedow,
qry_Co_1_PRET_Routed_2_Days_Out.rtecod,
qry_Co_1_PRET_Routed_2_Days_Out.stpnum,
qry_Co_1_PRET_Open_Order_2_Days_Out.plnshpdat,
qry_Co_1_PRET_Open_Order_2_Days_Out.totordqty,
qry_Co_1_PRET_Open_Order_2_Days_Out.ordnetwgt,
qry_Co_1_PRET_Open_Order_2_Days_Out.ordcub,
qry_Co_1_PRET_Open_Order_2_Days_Out.shptotamt,
qry_Co_1_PRET_Open_Order_2_Days_Out.prcflg,
qry_Co_1_PRET_Routed_2_Days_Out.cusemaadd,
qry_Co_1_PRET_Routed_2_Days_Out.TD_Email
FROM
qry_Co_1_PRET_Routed_2_Days_Out
INNER JOIN
tbl_Store_With_Sat_Ord
ON
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = tbl_Store_With_Sat_Ord.shpcusnum)
LEFT JOIN
qry_Co_1_PRET_Open_Order_2_Days_Out
ON
(qry_Co_1_PRET_Routed_2_Days_Out.co_num = qry_Co_1_PRET_Open_Order_2_Days_Out.co_num)
AND
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = qry_Co_1_PRET_Open_Order_2_Days_Out.shpcusnum)
WHERE
(((IIf([totordqty]>0,"Order In","No Order"))="No Order"))
ORDER BY
IIf([totordqty]>0,"Order In","No Order"),
qry_Co_1_PRET_Routed_2_Days_Out.rtecod,
qry_Co_1_PRET_Routed_2_Days_Out.stpnum;
将 SQL 代码的 FROM
部分更改为:
FROM
(
qry_Co_1_PRET_Routed_2_Days_Out
LEFT JOIN
qry_Co_1_PRET_Open_Order_2_Days_Out
ON
(qry_Co_1_PRET_Routed_2_Days_Out.co_num = qry_Co_1_PRET_Open_Order_2_Days_Out.co_num)
AND
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = qry_Co_1_PRET_Open_Order_2_Days_Out.shpcusnum)
)
INNER JOIN
tbl_Store_With_Sat_Ord
ON
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = tbl_Store_With_Sat_Ord.shpcusnum)
WHERE
[totordqty] <= 0
ORDER BY
[totordqty] <= 0,
qry_Co_1_PRET_Routed_2_Days_Out.rtecod,
qry_Co_1_PRET_Routed_2_Days_Out.stpnum;
请注意 WHERE
和 ORDER BY
条款的更改。
我正在尝试向 MS Access 查询添加一个简单的内部联接。我试图将 table 与单个字段连接起来,只是为了将结果限制为 cusnums 的一个子集。我收到一个我根本不明白的语法错误(见下文)。
我在下面包含了旧代码和新代码。唯一的变化是添加了内部连接。任何帮助,将不胜感激。谢谢。
错误信息:
Syntax error (missing operator) in query expression
'(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = tbl_Store_With_Sat_Ord.shpcusnum)
LEFT JOIN
qry_Co_1_PRET_Open_Order_2_Days_Out
ON
(qry_Co_1_PRET_Routed_2_Days_Out.co_num = qry_Co_1_PRET_Open_Order_2_Days_Out.co_num)
AND
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = qry_Co_1_PRET_Open_Order_2_Days_Out.shpcusnum'
旧代码:
SELECT
IIf([totordqty]>0, "Order In","No Order") AS OO_Staus,
qry_Co_1_PRET_Routed_2_Days_Out.co_num,
qry_Co_1_PRET_Routed_2_Days_Out.prislscod,
qry_Co_1_PRET_Routed_2_Days_Out.cusnum,
qry_Co_1_PRET_Routed_2_Days_Out.co_nam,
qry_Co_1_PRET_Routed_2_Days_Out.cusphn,
Switch([totordqty]>0,"",[cusphn]<>"",[cusphn],True,"No Phone # on File") AS Cust_Phone,
qry_Co_1_PRET_Routed_2_Days_Out.rtedow,
qry_Co_1_PRET_Routed_2_Days_Out.rtecod,
qry_Co_1_PRET_Routed_2_Days_Out.stpnum,
qry_Co_1_PRET_Open_Order_2_Days_Out.plnshpdat,
qry_Co_1_PRET_Open_Order_2_Days_Out.totordqty,
qry_Co_1_PRET_Open_Order_2_Days_Out.ordnetwgt,
qry_Co_1_PRET_Open_Order_2_Days_Out.ordcub,
qry_Co_1_PRET_Open_Order_2_Days_Out.shptotamt,
qry_Co_1_PRET_Open_Order_2_Days_Out.prcflg,
qry_Co_1_PRET_Routed_2_Days_Out.cusemaadd,
qry_Co_1_PRET_Routed_2_Days_Out.TD_Email
FROM
qry_Co_1_PRET_Routed_2_Days_Out
LEFT JOIN
qry_Co_1_PRET_Open_Order_2_Days_Out
ON
(qry_Co_1_PRET_Routed_2_Days_Out.co_num = qry_Co_1_PRET_Open_Order_2_Days_Out.co_num)
AND
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = qry_Co_1_PRET_Open_Order_2_Days_Out.shpcusnum)
WHERE
(((IIf([totordqty]>0,"Order In","No Order"))="No Order"))
ORDER BY
IIf([totordqty]>0,"Order In","No Order"),
qry_Co_1_PRET_Routed_2_Days_Out.rtecod,
qry_Co_1_PRET_Routed_2_Days_Out.stpnum;
新代码:
SELECT
IIf([totordqty]>0,"Order In","No Order") AS OO_Staus,
qry_Co_1_PRET_Routed_2_Days_Out.co_num,
qry_Co_1_PRET_Routed_2_Days_Out.prislscod,
qry_Co_1_PRET_Routed_2_Days_Out.cusnum,
qry_Co_1_PRET_Routed_2_Days_Out.co_nam,
qry_Co_1_PRET_Routed_2_Days_Out.cusphn,
Switch([totordqty]>0,"",[cusphn]<>"",[cusphn],True,"No Phone # on File") AS Cust_Phone,
qry_Co_1_PRET_Routed_2_Days_Out.rtedow,
qry_Co_1_PRET_Routed_2_Days_Out.rtecod,
qry_Co_1_PRET_Routed_2_Days_Out.stpnum,
qry_Co_1_PRET_Open_Order_2_Days_Out.plnshpdat,
qry_Co_1_PRET_Open_Order_2_Days_Out.totordqty,
qry_Co_1_PRET_Open_Order_2_Days_Out.ordnetwgt,
qry_Co_1_PRET_Open_Order_2_Days_Out.ordcub,
qry_Co_1_PRET_Open_Order_2_Days_Out.shptotamt,
qry_Co_1_PRET_Open_Order_2_Days_Out.prcflg,
qry_Co_1_PRET_Routed_2_Days_Out.cusemaadd,
qry_Co_1_PRET_Routed_2_Days_Out.TD_Email
FROM
qry_Co_1_PRET_Routed_2_Days_Out
INNER JOIN
tbl_Store_With_Sat_Ord
ON
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = tbl_Store_With_Sat_Ord.shpcusnum)
LEFT JOIN
qry_Co_1_PRET_Open_Order_2_Days_Out
ON
(qry_Co_1_PRET_Routed_2_Days_Out.co_num = qry_Co_1_PRET_Open_Order_2_Days_Out.co_num)
AND
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = qry_Co_1_PRET_Open_Order_2_Days_Out.shpcusnum)
WHERE
(((IIf([totordqty]>0,"Order In","No Order"))="No Order"))
ORDER BY
IIf([totordqty]>0,"Order In","No Order"),
qry_Co_1_PRET_Routed_2_Days_Out.rtecod,
qry_Co_1_PRET_Routed_2_Days_Out.stpnum;
将 SQL 代码的 FROM
部分更改为:
FROM
(
qry_Co_1_PRET_Routed_2_Days_Out
LEFT JOIN
qry_Co_1_PRET_Open_Order_2_Days_Out
ON
(qry_Co_1_PRET_Routed_2_Days_Out.co_num = qry_Co_1_PRET_Open_Order_2_Days_Out.co_num)
AND
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = qry_Co_1_PRET_Open_Order_2_Days_Out.shpcusnum)
)
INNER JOIN
tbl_Store_With_Sat_Ord
ON
(qry_Co_1_PRET_Routed_2_Days_Out.cusnum = tbl_Store_With_Sat_Ord.shpcusnum)
WHERE
[totordqty] <= 0
ORDER BY
[totordqty] <= 0,
qry_Co_1_PRET_Routed_2_Days_Out.rtecod,
qry_Co_1_PRET_Routed_2_Days_Out.stpnum;
请注意 WHERE
和 ORDER BY
条款的更改。