Это ваш последний SQL на данный момент:
SELECT * INTO USR_02_ALL FROM (
A_USR02_A UNION ALL SELECT * FROM A_USR02_A
B_USR02_B UNION ALL SELECT * FROM B_USR02_B
C_USR02_C UNION ALL SELECT * FROM C_USR02_C
Это должно выглядеть так, если вы вставляете в новую таблицу:
SELECT * INTO USR_02_ALL FROM
(
SELECT * FROM A_USR02_A
UNION ALL SELECT * FROM B_USR02_B
UNION ALL SELECT * FROM C_USR02_C
)
или вот так, если выдобавляем к существующей таблице:
INSERT INTO USR_02_ALL
SELECT *
FROM (
SELECT * FROM A_USR02_A
UNION ALL SELECT * FROM B_USR02_B
UNION ALL SELECT * FROM C_USR02_C
)
Этот код будет создавать этот SQL (раскомментируйте строку SQLFinal в зависимости от того, какой тип запроса вы хотите использовать):
Public Sub BuildQuery()
Dim SQLFinal As String
Dim SQL1 As String
Dim tdf As DAO.TableDef
Dim qdf As DAO.QueryDef
'Create a new table SQL
'SQLFinal = "SELECT * INTO USR_02_ALL FROM (SELECT * FROM "
'Append to existing table
SQLFinal = "INSERT INTO USR_02_ALL SELECT * FROM (SELECT * FROM "
SQL1 = " UNION ALL SELECT * FROM "
For Each tdf In CurrentDb.TableDefs
If tdf.Name Like "*USR02*" Then
SQLFinal = SQLFinal & tdf.Name & SQL1
End If
Next tdf
SQLFinal = Left(SQLFinal, Len(SQLFinal) - Len(SQL1)) & ")"
CurrentDb.CreateQueryDef("", SQLFinal).Execute
End Sub
Обратите внимание, что в конце каждого оператора, готового для следующего имени таблицы, добавляется " UNION ALL SELECT * FROM "
, а затем удаляется последний экземпляр этой текстовой строки.