Значение параметра в диалоге доступа - PullRequest
0 голосов
/ 13 сентября 2018

, поэтому я пытаюсь автоматизировать некоторые отчеты в Access 2013. Когда я запускаю отчет, я получаю диалоговое окно с запросом параметра (Enter 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 раз.

Есть идеи? Заранее спасибо!

1 Ответ

0 голосов
/ 13 сентября 2018

Я сталкивался с этим много раз на работе, и решение, которое я использовал чаще всего, заключается в том, чтобы иметь TextBox в форме, на которую можно ссылаться напрямую.

AND ((Signers.Location)=[Forms]![frmMyForm]![txtMyPlantTextBox])

ПРИМЕЧАНИЕ.форма открыта и данные введены в TextBox перед выполнением запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...