安排 Access 查询的导出
Posted
技术标签:
【中文标题】安排 Access 查询的导出【英文标题】:Schedule export of Access query 【发布时间】:2021-04-09 16:55:20 【问题描述】:我遇到了与几年前提出的这个问题类似的问题,Scheduled MS Access macro to run query and export to CSV。
我按照他的步骤进行了更正,但仍然提示保存现有文件。我遇到的另一个问题是任务没有在任务计划程序中运行,但是当我手动打开 Access 时宏会运行。我觉得在 Access 中创建宏很舒服,但是当我阅读其他关于走 VBA 路线的帖子时迷路了。我是否使用 CurrentDb.Execute “此处的 sql 语句”将宏的 SQL 放入 Access VBA 中,但我仍然需要在任务调度程序中进行调度,对吗?
我对 VBA 非常陌生,甚至从未运行过,尝试输入一些代码但不知所措。
这是一个很好的替代品吗?
Function AutoExec()
On Error GoTo AutoExec_Err
Kill "P:\Jarett\smtest1.csv"
DoCmd.OutputTo acOutputQuery, "po_detail3", "MS-DOSText(*.txt)", "P:\Jarett\smtest1.csv", True, "", 1, acExportQualityPrint
AutoExec_Exit:
Exit Function
AutoExec_Err:
MsgBox Error$
Resume AutoExec_Exit
End Function
【问题讨论】:
【参考方案1】:您需要创建导出数据的函数,然后创建一个名为“AutoExec”的宏,以便在打开数据库时调用您的函数。
This 描述了如何编写函数来将查询结果导出到文本文件。
如果您需要删除已存在的输出文件,请在运行查询之前立即添加此代码。
If Dir(Filename) <> "" Then Kill Filename
Access本身没有调度能力,所以是的,你还是需要使用任务调度器。
回应最新评论:
您可以安排一个任务来删除文件。嘿,如果它有效,它就有效,但这就像 delete-y。
Function AutoExec()
Dim FileName As String
FileName = "P:\Jarett\123.csv"
If Dir(Filename) <> "" Then Kill Filename
On Error GoTo AutoExec_Err
DoCmd.TransferText acExportDelim, "Smtest123 Export Specification", "po_detail3", Filename, True, ""
DoCmd.Quit acSave
AutoExec_Exit:
Exit Function
AutoExec_Err:
MsgBox Error$
Resume AutoExec_Exit
End
【讨论】:
所以这在宏的 SQL 部分的开头? 不,VBA 代码应该在数据导出之前立即进入函数。 我将宏转换为 VBA,但上面的代码一直给我错误 If Dir (P:\Jarett\smtest.csv) "" Then Kill P:\Jarett\smtest.csv跨度> 当一切都失败时,检查documentation(并祈祷有例子)。 不确定这是否是最好的方法,但有一些工作,Function AutoExec() On Error GoTo AutoExec_Err DoCmd.TransferText acExportDelim, "Smtest123 Export Specification", "po_detail3", "P:\Jarett\123.csv", True, "" DoCmd.Quit acSave AutoExec_Exit: Exit Function AutoExec_Err: MsgBox Error$ Resume AutoExec_Exit End Function
以上是关于安排 Access 查询的导出的主要内容,如果未能解决你的问题,请参考以下文章