访问报告对话框中的参数值

时间:2018-09-13 20:11:12

标签: c# ms-access

所以我试图在Access 2013中自动执行一些报表。运行报表时,出现一个对话框,询问参数(输入Plant :),类似这样。 Image

我想要的是运行此代码而不询问查询的工厂名称。该代码有效,但是如果我运行它,它将弹出一个对话框,询问一个植物名称,如果我键入植物名称,它将运行并保存pdf文件,就像我想要的那样。 Access中的报告通过提供不同的工厂名称来工作,并且根据给定的工厂输出不同的报告。我的想法是将此代码放在循环上,并在每次迭代中传递不同的工厂名称并保存不同的新文件。但是它总是弹出一个对话框,要求手动添加植物名称。

Microsoft.Office.Interop.Access.Application oAccess = null;

            // Start a new instance of Access for Automation:

            oAccess = new Microsoft.Office.Interop.Access.Application();


            // Open a database in exclusive mode:

            oAccess.OpenCurrentDatabase(
               "route DB", //filepath
               true //Exclusive
               );

            //This doesnt work

           // oAccess.DoCmd.SetParameter("[Enter Plant:]", "Arlington");


            oAccess.DoCmd.OpenReport(
                "06 - Security Report - Plants",
                AcView.acViewReport,
                "qry Security Report - Plant",

                //This doesnt work either, still asks me for a plant name
                "[Enter Plant:] ='Arlington'",
                AcWindowMode.acWindowNormal
            );

            //If I give the plant name to the dialog it works correctly en saves a pdf file wit the report

             oAccess.DoCmd.OutputTo(
                 AcOutputObjectType.acOutputReport,
                    System.Reflection.Missing.Value,
                  "PDF Format (*.pdf)",
                  "route to save file",
                  false,
                  System.Reflection.Missing.Value,
                  System.Reflection.Missing.Value,
                  AcExportQuality.acExportQualityPrint
               );

            oAccess.Quit();

我可以访问该查询,但不幸的是我无法修改它,而且查询的时间很长,这就是为什么我无法显示它的原因(看起来它是由访问向导创建的,因此它很漂亮),尽管这里使用询问的参数的示例:

AND ((Signers.Location)=[Enter Plant:])

此参数在查询中的次数超过40次。

有什么想法吗?预先感谢!

0 个答案:

没有答案