更改Access报告RecordSource,然后从C#更改OutputTo PDF

时间:2014-06-07 15:41:46

标签: c# ms-access office-interop

如何使用RecordSource代码从C#Windows窗体处理程序更改Microsoft Access报告的Office.Interop属性?

我需要 以静默方式 使用AccessApp.DoCmd.OutputTo(...)将报告另存为PDF,而无需来自Access的任何参数提示。所以我想暂时将RecordSource更改为由表单代码定义的查询,以静默方式保存PDF报告,然后将RecordSource更改回默认值。

我尝试了类似AccessApp.Reports["Report Name"].RecordSource的内容,但我收到了错误!

有没有比我建议的方式更好的方法呢?

1 个答案:

答案 0 :(得分:1)

以下适用于我(使用Access 2010测试):

accessApp.DoCmd.OpenReport(
        "Report1", 
        Microsoft.Office.Interop.Access.AcView.acViewDesign);

Microsoft.Office.Interop.Access.Report rpt = accessApp.Reports["Report1"];
rpt.RecordSource = "SELECT * FROM Clients WHERE ID<=3";

accessApp.DoCmd.OutputTo(
        Microsoft.Office.Interop.Access.AcOutputObjectType.acOutputReport,
        "",
        "PDF Format (*.pdf)",
        @"C:\Users\Gord\Desktop\zzzTest.pdf",
        false,
        null,
        null,
        Microsoft.Office.Interop.Access.AcExportQuality.acExportQualityPrint);

// now close the report without saving the change to the RecordSource property
accessApp.DoCmd.Close(
        Microsoft.Office.Interop.Access.AcObjectType.acReport,
        "Report1",
        Microsoft.Office.Interop.Access.AcCloseSave.acSaveNo);