pla*_*ton 4 sql vba select-into ms-access-2010 union-all
我正在尝试将一堆已经工作的UNION查询变成一系列临时表SELECT INTO的VBA过程的一部分。我这样做是因为Access存在性能问题。
当我尝试使用INTO插入的子句运行此查询时,出现以下错误:
"An action query cannot be used as a row source."
Run Code Online (Sandbox Code Playgroud)
我不完全确定为什么我不能执行它,或者不创建更多查询就如何解决它。是什么原因引起的,该如何解决?
SELECT DISTINCT A.*
FROM (SELECT DISTINCT
C.[CUSTOMER CODE],
D.[FISCAL DAY],
D.[TY INVOICE DATE] AS [Invoice Date],
C.[CUSTOMER CODE]&" - "&D.[FISCAL DAY] AS CONCAT,
IIF(D.[TY INVOICE DATE] Is Not Null, 'TY', Null) As TYLY
***INTO [FD CUST Missing- Temp]***
FROM [QR- CUST FD] AS C,
[QR- FD SALES] AS D) AS A
LEFT JOIN [QR- CUST FD] AS C
ON C.[FD CONCAT] = A.[CONCAT]
WHERE C.[FD CONCAT] Is Null
UNION ALL
SELECT DISTINCT
A.*
***INTO [FD Cust Missing- Temp]***
FROM (SELECT DISTINCT
C.[CUSTOMER CODE],
D.[FISCAL DAY],
D.[LY INVOICE DATE] AS [Invoice Date],
C.[CUSTOMER CODE]&" - "&D.[FISCAL DAY] AS CONCAT,
IIF(D.[LY INVOICE DATE] Is Not Null, 'LY', Null) As TYLY
FROM [QR- CUST FD] AS C,
[QR- FD SALES] AS D) AS A
LEFT JOIN [QR- CUST FD] AS C
ON C.[FD CONCAT] = A.[CONCAT]
WHERE C.[FD CONCAT] IS NULL
;
Run Code Online (Sandbox Code Playgroud)
您遇到错误
动作查询不能用作行源。
因为SELECT ... INTO NewTableName FROM ...查询是不返回结果集的操作查询(例如INSERT,UPDATE或DELETE查询)。因此,UNION ALL没有任何关系。因此,例如,这将不起作用(导致上述错误消息):
SELECT DISTINCT LastName
INTO Foo
FROM Clients
WHERE LastName LIKE 'D*'
UNION ALL
SELECT DISTINCT LastName
INTO Foo
FROM Clients
WHERE LastName LIKE 'T*'
Run Code Online (Sandbox Code Playgroud)
但是,您可以按以下方式重新组织该查询,该查询确实有效:
SELECT *
INTO Foo
FROM
(
SELECT DISTINCT LastName
FROM Clients
WHERE LastName LIKE 'D*'
UNION ALL
SELECT DISTINCT LastName
FROM Clients
WHERE LastName LIKE 'T*'
)
Run Code Online (Sandbox Code Playgroud)