安排 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 查询的导出的主要内容,如果未能解决你的问题,请参考以下文章

Access 仅导出查询的第一列

access的一些问题,等待高手解决

如何创建将传递查询导出为 XML 文件的 VBA 函数(用于 Access 2010)?

MS Access VBA 导出查询结果

将查询从 Access 导出到 Excel 模板

将 MS Access 查询导出到记事本