使用通用SQL模板循环追加查询

时间:2013-10-29 20:54:53

标签: sql access-vba

我已经生成了一个追加查询来打开一个名为1的表,并将其内容附加到一个名为Master的主表中。

Master具有与表1完全相同的结构。我使用查询向导Access 2000生成SQL代码。代码如下所示:

 INSERT INTO MASTER ( IDNUM, NAME, [DOC TYPE],[PDF FILE NAME]) SELECT [1].NAME, [1].NAME, [1].[DOC TYPE], [1].[PDF FILE NAME  FROM 1;

现在我说十个表叫做1,2,3,4,5,6,7,8,9,10

我想循环遍历每个主表的表。结果我有一个主列表。我知道我可以手动创建和执行10个查询。

在上面的查询中,1应该是K,所以每个查询看起来与上面相同,但用2替换等等。

那么如何调用通用代码

INSERT INTO MASTER ( IDNUM, NAME, [DOC TYPE],[PDF FILE NAME]) SELECT [K].NAME, [K].NAME, [K].[DOC TYPE], [K].[PDF FILE NAME  FROM K;

Where K = 1 thru 10

最后我需要;之后的FROM 1:或FROM K;

我想创建一个包含所有Dim等的VBA过程。

1 个答案:

答案 0 :(得分:0)

您不能将变量用于表名。您可以做的最好的事情是生成一个SQL字符串并使用VBA执行它。

如果我是你,我会咬紧牙关因为有一个可怕的桌子设计(没有个人的东西)并做一个大的UNION

INSERT INTO MASTER 
(IDNUM, NAME, [DOC TYPE],[PDF FILE NAME])
SELECT
[1].IDNUM, [1].NAME, [1].[DOC TYPE], [1].[PDF FILE NAME]
UNION
SELECT
[2].IDNUM, [2].NAME, [2].[DOC TYPE], [2].[PDF FILE NAME]
UNION
SELECT
[3].IDNUM, [3].NAME, [3].[DOC TYPE], [3].[PDF FILE NAME]
...