-1

我在 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)”
4

1 回答 1

2

为什么不:

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

Set 用于对象,而您在Set x = Docmd.RunSQL. Order by 与表无关。

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

我建议你不要使用 RunSQL :DoCmd.SetWarnings 和 CurrentDB.Execute 有什么区别

于 2012-09-10T12:23:29.573 回答