如何解决将截断查询结果插入表中
| 我有一个查询驻留在访问文件(.mdb)中,我想在VBA中调用此查询,并将结果存储到现有表中。在插入结果之前,应删除表的先前内容。 任何想法?在我现有的代码中,查询名称\“ genInboundCdr \”是通过DoCmd.TransferSpreadsheet执行的,结果存储在excel文件中。Private Sub BtnExecuteQuery_Click()
If IsNull(txtOutputPath.value) Then
MsgBox \"Please enter a valid output file location.\"
Else
If ObjectExists(\"Query\",\"genInboundCdr\") Then
strPathToSave = txtOutputPath.value
MsgBox \"About to extract inbound cdr...\" & vbCrLf & _
\"Please notice that the query may take longer time \" & _
\"( > 20 minutes ) if the linked tables contains a lot \" & _
\"of records.\"
txtStatus.value = txtStatus.value & _
\"About to extract inbound cdr...\" & vbCrLf & _
\"Please notice that the query may take longer time \" & _
\"( > 20 minutes ) if the linked tables contains a lot \" & _
\"of records.\" & vbCrLf
DoCmd.TransferSpreadsheet acExport,_
acSpreadsheetTypeExcel9,_
\"genInboundCdr\",_
strPathToSave,_
True
MsgBox (\"Inbound Cdr generated.\")
txtStatus.value = txtStatus.value & \"Inbound Cdr generated.\" & vbCrLf
Else
MsgBox (\"Query does not exist! Please review your steps.\")
End If
End If
End Sub
解决方法
最简单的方法是在目标表上执行删除查询,然后使用追加查询。
删除查询的SQL如下所示:
DELETE *
FROM foo2;
附加查询的SQL如下所示:
INSERT INTO foo_dest ( f0,f1,f2,f3 )
SELECT foo_src.f0,foo_src.f1,foo_src.f2,foo_src.f3
FROM foo_src;
SELECT部分将是您的源查询(genInboundCdr)。
您可以像这样在VBA中执行以下任一查询:
DoCmd.RunSQL = \"insert into ...\"
要么
Currentdb.execute = \"insert into ...\"
或者如果您更喜欢使用存储的查询
DoCmd.OpenQuery \"genInboundCdr\"
(可能还有另一种运行genInboundCdr的方法,但我现在不记得了)
,我最终这样做:
1)查询并将结果存储到excel文件中。
2)使用transferspreadsheet导入Excel文件。
DoCmd.TransferSpreadsheet acExport,_
acSpreadsheetTypeExcel9,_
\"genInboundCdr\",_
strPathToSave,_
True
DoCmd.TransferSpreadsheet acImport,_
\"temp_result\",_
True
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。