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