Как исправить пропущенную ошибку параметра printtoprint для печати Crystal Report на C#?

Я пытаюсь использовать этот код для печати отчета Crystal без средства просмотра, но получаю сообщение об ошибке "Недостающие параметры", почему? Я принимаю ошибку в этой части кода:

 cryRpt.PrintToPrinter(1, true, 0, 0);

Мой весь код:

CrystalReportViewer cw = new CrystalReportViewer();
                ReportDocument cryRpt = new ReportDocument();



                cw.Dock = DockStyle.Fill;

                panel1.Controls.Add(cw);



            cryRpt.Load(@"C:\..\Reports\Pm_PaperlessFacRpt.rpt");

            ParameterField paramField = new ParameterField();
            ParameterFields paramFields = new ParameterFields();
            ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();

            paramField.Name = "@Id";
            paramDiscreteValue.Value = 71599;
            paramField.CurrentValues.Add(paramDiscreteValue);
            paramFields.Add(paramField);

            cw.ParameterFieldInfo = paramFields;





            ParameterFieldDefinitions crParameterFieldDefinitions;
            ParameterFieldDefinition crParameterFieldDefinition;
            ParameterValues crParameterValues = new ParameterValues();
            ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();

            crParameterDiscreteValue.Value = Convert.ToInt32(71599);
            crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
            crParameterFieldDefinition = crParameterFieldDefinitions["@Id"];
            crParameterValues = crParameterFieldDefinition.CurrentValues;

            crParameterValues.Clear();
            crParameterValues.Add(crParameterDiscreteValue);
            crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);




            // cryRpt.SetParameterValue("@Id", 71599);
            cryRpt.SetDatabaseLogon("sa", "123", "server", "db");


            cryRpt.Refresh();




            cryRpt.PrintOptions.PrinterName = "HP LaserJet Pro M201-M202 PCL 6";
            cryRpt.PrintOptions.PaperSource = PaperSource.Auto;
            cryRpt.PrintOptions.PaperOrientation = PaperOrientation.Portrait;
            cryRpt.PrintOptions.PaperSize = PaperSize.PaperLetter;
            cryRpt.PrintToPrinter(1, true, 0, 0);

            cw.ReportSource = cryRpt;
            cw.Refresh();

Как я могу исправить эту ошибку? Кроме того, моя Visual Studio 2013 и я выполнили 32-разрядную версию, моя версия Crystal Report третья часть версии 8.5, и я использую CrystalDecisions.CrystalReports lib версии 13.0.2000.0, и мой фреймворк 3.5

1 ответ

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

// create report document
var rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

// load from file
rpt.Load(@"C:\..\Reports\Pm_PaperlessFacRpt.rpt");

// set parameters
rpt.SetParameterValue("Id", 71599);

// set data source
rpt.SetDatabaseLogon("sa", "123", "server", "db");

// print to printer page 1 to 1
rpt.PrintToPrinter(1, false, 1, 1);
Другие вопросы по тегам