Search code examples
c#pdfmvvmcrystal-reports

Open 2 Crystal Reports together in PDF with parameter


I am new to Crystal Reports. I made 2 reports that i want to open together in PDF.

I want just the reports that have a certain ID. Atm only "Containerlijst" gives a report with the ID, but it shows "PersAfdruk" and PersAfdruk shows all ID's of "PersAfdruk".

With the code i got i open the same report 2 times. But with the different names i gave. Using MVVM and this code is in my Command.

 try
        {
            Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;

            ReportDocument PersAfdruk = new ReportDocument();
            ReportDocument Containerlijst = new ReportDocument();
            PersAfdruk.Load("../../Persorderlijst.rpt");
            PersAfdruk.SetParameterValue("PersOrderID", txtPersOrderID);
            Containerlijst.Load("../../Containerlijst.rpt");
            Containerlijst.SetParameterValue("PersOrderID", txtPersOrderID);

            ExportOptions CrExportOptions;
            DiskFileDestinationOptions CrDiskFileDes = new DiskFileDestinationOptions();
            PdfRtfWordFormatOptions CrFormat = new PdfRtfWordFormatOptions();
            CrDiskFileDes.DiskFileName = "d:\\Persorderlijst.pdf";
            CrDiskFileDes.DiskFileName = "d:\\Containerlijst.pdf";
            CrExportOptions = PersAfdruk.ExportOptions;
            {
                CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                CrExportOptions.ExportDestinationOptions = CrDiskFileDes;
                CrExportOptions.ExportFormatOptions = CrFormat;
            }
            PersAfdruk.Export();
            Process.Start("d:\\Persorderlijst.pdf");
            Process.Start("d:\\Containerlijst.pdf");

        }

Solution

  • This is probably not the elegant way to do this but it works for me. Feedback welcome.

     try
            {
                Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
    
                ReportDocument PersAfdruk = new ReportDocument();
                ReportDocument Containerlijst = new ReportDocument();
                PersAfdruk.Load("../../Persorderlijst.rpt");
                PersAfdruk.SetParameterValue("PersOrderID", txtPersOrderID);
                Containerlijst.Load("../../Containerlijst.rpt");
                Containerlijst.SetParameterValue("PersOrderID", txtPersOrderID);
    
                ExportOptions CrExportOptions;
                ExportOptions CrExportOptions1;
                DiskFileDestinationOptions CrDiskFileDes = new DiskFileDestinationOptions();
                DiskFileDestinationOptions CrDiskFileDes1 = new DiskFileDestinationOptions();
                PdfRtfWordFormatOptions CrFormat = new PdfRtfWordFormatOptions();
                PdfRtfWordFormatOptions CrFormat1 = new PdfRtfWordFormatOptions();
                CrDiskFileDes.DiskFileName = "d:\\Persorderlijst.pdf";
                CrDiskFileDes1.DiskFileName = "d:\\Containerlijst.pdf";
                CrExportOptions = PersAfdruk.ExportOptions;
    
                {
                    CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                    CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                    CrExportOptions.ExportDestinationOptions = CrDiskFileDes;
                    CrExportOptions.ExportFormatOptions = CrFormat;
                }
                CrExportOptions1 = Containerlijst.ExportOptions;
                {
                    CrExportOptions1.ExportDestinationType = ExportDestinationType.DiskFile;
                    CrExportOptions1.ExportFormatType = ExportFormatType.PortableDocFormat;
                    CrExportOptions1.ExportDestinationOptions = CrDiskFileDes1;
                    CrExportOptions1.ExportFormatOptions = CrFormat1;
                }
                PersAfdruk.Export();
                Containerlijst.Export();
    
                Process.Start("d:\\Persorderlijst.pdf");
                Process.Start("d:\\Containerlijst.pdf");
    
            }