使用SQL同时写入多个列

时间:2012-09-10 12:21:09

标签: sql vba ms-access

我在Microsoft Access中编写VBA宏时遇到问题。我想要做的是使用SQL来创建输出表,但我想同时写入多个列。

这为我提供了一列所需的所有值:

Docmd.RunSQL “INSERT INTO Output (TargetCol1) SELECT [Field1] FROM [Table1] WHERE [Criteria1] = ‘Value’ GROUP BY Field1”

当我尝试多次运行以获取其他列所需的值时。 INSERT INTO将数据写为新记录,因此我最终得到空格,如下所示:

Field1----Field2
Value----<Null>
Value----<Null>
Value----<Null>
<Null>----Value
<Null>----Value

我想要的是:

Field1----Field2
Value---- Value
Value---- Value
Value----<Null>

我尝试创建变量并创建一种嵌套语句,但是当我尝试运行我写的内容时,我在第一行收到了“编译错误,需要对象”:

Set x = Docmd.RunSQL “INSERT INTO Output (TargetCol1) SELECT [Field1] FROM [Table1] WHERE      [Criteria1] = ‘Value’ GROUP BY Field1”
Set y = Docmd.RunSQL “INSERT INTO Output (TargetCol2) SELECT [Field2] FROM [Table1] WHERE  [Criteria2] = ‘Value’ GROUP BY Field2”
Docmd.runsql “INSERT INTO Output (TargetCol1, TargetCol2) Values (x,y)”

1 个答案:

答案 0 :(得分:2)

为什么不:

INSERT INTO Output (TargetCol1,TargetCol2) SELECT [Field1,Field2] FROM [Table1]  [Criteria1] = 'Value'"

Set用于对象,而Set x = Docmd.RunSQL中没有。排序与表格无关。

设置查询的最简单方法是使用查询设计窗口。它将指导您创建查询,然后您可以切换到SQL视图以获取SQL。

我建议你不要使用RunSQL:What's the difference between DoCmd.SetWarnings and CurrentDB.Execute