如何生成水晶报表的PDF格式,而通过多参数? [英] How to generate Crystal Report in PDF format while passing Multiple Parameters?

查看:357
本文介绍了如何生成水晶报表的PDF格式,而通过多参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想生成PDF格式的水晶报表。我已经通过传递一个参数做同样的事情。但这次我想通过10参数。我跟着我做什么传递一个参数是一样的。

但现在我得到了错误信息无法因为code优化或本机框架是在调用堆栈的顶部,以评估前pression。
任何人都请给点建议。提前致谢。
根据生成PDF格式的水晶报表,请修改我的code。

在按钮单击事件我写了下面的code。

 尝试
    {
        CrystalDecisions.CrystalReports.Engine.ReportDocument RPT =
                        新CrystalDecisions.CrystalReports.Engine.ReportDocument();        康涅狄格州字符串= ConfigurationManager.ConnectionStrings [的ConnectionString]的ToString()。
        字符串[]海峡= conn.Split(';');
        串服务器=海峡[0] .Substring(STR [0] .IndexOf(=)+ 3);
        串数据库= str中[1] .Substring(STR [1] .IndexOf(=)+ 3);
        串的userid =海峡[2] .Substring(STR [2] .IndexOf(=)+ 3);
        字符串密码=Welc0me;        rpt.Load(使用Server.Mappath(〜/报告/营销/ JobOrdersList.rpt));        的for(int i = 0; I< rpt.DataSourceConnections.Count;我++)
            rpt.DataSourceConnections [I] .SetConnection(服务器,数据库,用户ID,密码);
        rpt.SetParameterValue(0,DateTime.ParseExact(dcfromdate.DateString.ToString(),日期格式,CultureInfo.InvariantCulture,DateTimeStyles.None));
        rpt.SetParameterValue(1,DateTime.ParseExact(dcTodate.DateString.ToString(),日期格式,CultureInfo.InvariantCulture,DateTimeStyles.None));
        rpt.SetParameterValue(2,ddlCompany.SelectedValue);
        rpt.SetParameterValue(3,ddlUnit.SelectedValue);
        rpt.SetParameterValue(4,ddlCustomer.SelectedValue);
        rpt.SetParameterValue(5,ddlProduct.SelectedValue);
        rpt.SetParameterValue(6,ddlScope.SelectedValue);
        rpt.SetParameterValue(7,ddlStatus.SelectedValue);
        rpt.SetParameterValue(8,ddlGroupBy.SelectedValue);
        rpt.SetParameterValue(9,(ChkPrint.Checked ==真正的真:假));
        rpt.ExportToHtt presponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat,HttpContext.Current.Response,真的,JobOrderList报告);    }
    赶上(异常前)
    {
        返回ex.Message.ToString();
    }


解决方案

  //动态生成PDF使用系统;
    使用System.Windows.Forms的;
    使用CrystalDecisions.CrystalReports.Engine;
    使用CrystalDecisions.Shared;    命名空间的WindowsApplication1
    {
        公共部分Form1类:表格
        {
            的ReportDocument cryRpt;            公共Form1中()
            {
                的InitializeComponent();
            }            私人无效的button1_Click(对象发件人,EventArgs的发送)
            {
                cryRpt =新的ReportDocument();
                cryRpt.Load(PUT Crystal报表PATH这里\\\\ CrystalReport1.rpt);
                crystalReportViewer1.ReportSource = cryRpt;
                crystalReportViewer1.Refresh();
            }            私人无效button2_Click(对象发件人,EventArgs的发送)
            {
                尝试
                {
                    ExportOptions CrExportOptions;
                    DiskFileDestinationOptions CrDiskFileDestinationOptions =新DiskFileDestinationOptions();
                    PdfRtfWordFormatOptions CrFormatTypeOptions =新PdfRtfWordFormatOptions();
                    CrDiskFileDestinationOptions.DiskFileName =C:\\\\ csharp.net-informations.pdf
                    CrExportOptions = cryRpt.ExportOptions;
                    {
                        CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                        CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                        CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
                        CrExportOptions.FormatOptions = CrFormatTypeOptions;
                    }
                    cryRpt.Export();
                }
                赶上(异常前)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
        }
    }

I want to generate crystal report in pdf format. I had done the same thing by passing one parameter. But this time I want to pass 10 parameter. I followed the same thing what I did for passing one parameter.

But now I got the Error Message "Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack." Anyone please give suggestions. Thanks in advance. Please modify my Code according to generate Crystal Report in PDF format.

In the Button Click Event I have written the following code.

try
    {
        CrystalDecisions.CrystalReports.Engine.ReportDocument rpt =
                        new CrystalDecisions.CrystalReports.Engine.ReportDocument();

        string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
        string[] str = conn.Split(';');
        string server = str[0].Substring(str[0].IndexOf(" = ") + 3);
        string database = str[1].Substring(str[1].IndexOf(" = ") + 3);
        string userid = str[2].Substring(str[2].IndexOf(" = ") + 3);
        string password = "Welc0me";

        rpt.Load(Server.MapPath("~/Reports/Marketing/JobOrdersList.rpt"));

        for (int i = 0; i < rpt.DataSourceConnections.Count; i++)
            rpt.DataSourceConnections[i].SetConnection(server, database, userid, password);
        rpt.SetParameterValue(0, DateTime.ParseExact(dcfromdate.DateString.ToString(), DateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None));
        rpt.SetParameterValue(1, DateTime.ParseExact(dcTodate.DateString.ToString(), DateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None));
        rpt.SetParameterValue(2, ddlCompany.SelectedValue);
        rpt.SetParameterValue(3, ddlUnit.SelectedValue);
        rpt.SetParameterValue(4, ddlCustomer.SelectedValue);
        rpt.SetParameterValue(5, ddlProduct.SelectedValue);
        rpt.SetParameterValue(6, ddlScope.SelectedValue);
        rpt.SetParameterValue(7, ddlStatus.SelectedValue);
        rpt.SetParameterValue(8, ddlGroupBy.SelectedValue);
        rpt.SetParameterValue(9, (ChkPrint.Checked == true ? "True" : "False"));
        rpt.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, HttpContext.Current.Response, true, "JobOrderList Report");

    }
    catch (Exception ex)
    {
        return ex.Message.ToString();
    }

解决方案

//To generate PDF dynamically 

using System;
    using System.Windows.Forms;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Shared;

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            ReportDocument cryRpt;

            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                cryRpt = new ReportDocument();
                cryRpt.Load(PUT CRYSTAL REPORT PATH HERE\\CrystalReport1.rpt");
                crystalReportViewer1.ReportSource = cryRpt;
                crystalReportViewer1.Refresh(); 
            }

            private void button2_Click(object sender, EventArgs e)
            {
                try
                {
                    ExportOptions CrExportOptions ;
                    DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
                    PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
                    CrDiskFileDestinationOptions.DiskFileName = "c:\\csharp.net-informations.pdf";
                    CrExportOptions = cryRpt.ExportOptions;
                    {
                        CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                        CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                        CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
                        CrExportOptions.FormatOptions = CrFormatTypeOptions;
                    }
                    cryRpt.Export();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
        }
    }

这篇关于如何生成水晶报表的PDF格式,而通过多参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆