CRYSTAL net样式

报表的运用,分为两种方式:pull和push

拉和推模型
为了向开发人员提供最灵活的数据访问方法,Crystal Reports 数据库驱动程序被设计为可同时提供数据访问的拉模型和推模型。

拉模型

在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的 SQL 命令都同时由 Crystal Reports 本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。

推模型

相反,推模型需要开发人员编写代码以连接到数据库,执行 SQL 命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在 Crystal Reports 收到数据之前先将数据筛选出来。


其中推荐使用push,因为它的性能较pull好,具体的可以到网上去查看相关内容描述。

在此,我只是对push进行描述;(个人的操作顺序,不过只能说明是一个方法,也应该有其他方法)

首先,创建一个数据集,假如是(DataSet1.xsd),设置好数据集以后,再创建crystralreport1.rpt,在crystralreport.rpt中设置好数据连接,并且把报表设计好以后,接着就要创建一个web窗体,(例如是Crystral_Use.aspx),其中页面中要拖进一个CrystalReportViewer控件,随后进行下面的操作:

其次,引用对应的命名空间using CrystalDecisions.Shared;和 using CrystalDecisions.CrystalReports.Engine;

最后,在crystral-use.aspx页面中进行下面的编程:

CrystalReport1 crvs=new CrystalReport1();//实例化报表

      private void Page_Load(object sender, System.EventArgs e)

      {

        // 在此处放置用户代码以初始化页面

        string connstring="server=.; database=BMSShopping ;uid =sa; pwd=123456;"; //连接数据库        SqlConnection conn=new SqlConnection(connstring);

        SqlDataAdapter da=new  SqlDataAdapter();

        da.SelectCommand=new SqlCommand();

        da.SelectCommand.CommandText="select top 3 * from orders";//从数据库中检索数据        da.SelectCommand.Connection=conn;

        conn.Open();

        DataSet1 ds=new DataSet1();//应用自定义的一个数据集

        da.Fill(ds,"Orders");

        crvs.SetDataSource(ds);

        this.CrystalReportViewer1.ReportSource=crvs;

}

这样,一个简单的crystralreport就应用完了;

扩展一下:

如果你想把报表导出,那么你就继续进行下面的操作设置:

首先,还是要在上面的基础上,拖放一个dropdownlist控件,以便能选择导出格式:

随后,编写代码:

//导出报表

   CrystalDecisions.Shared.DiskFileDestinationOptions DiskOpts = new    CrystalDecisions.Shared.DiskFileDestinationOptions();

        crvs.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;

        switch (ddlFormat.SelectedItem.Text)

        {

           case "RTF格式":

              crvs.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.RichText;//

              DiskOpts.DiskFileName = "d:\\Output.rtf";//导出路径

              this.Response.Write("导出RTF格式成功!");

              break;

           case "PDF格式":

              crvs.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;//

              DiskOpts.DiskFileName = "d:\\Output.pdf";//导出路径

              this.Response.Write("导出PDF格式成功!");

              break;

           case "DOC格式":

              crvs.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.WordForWindows;//

              DiskOpts.DiskFileName = "d:\\Output.doc";//导出路径

              this.Response.Write("导出DOC格式成功!");

              break;

           case "EXCEL格式":

                 crvs.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.Excel;//

                DiskOpts.DiskFileName = "d:\\Output.xls";//导出路径

              this.Response.Write("导出EXCEL格式成功!");

              break;

           default:

              break;

        }

        crvs.ExportOptions.DestinationOptions = DiskOpts;

      crvs.Export();

      }

至此,所有有关报表打印实现就完了,也许有其他更好的操作或者方法,希望大家不吝赐教。至于在visual studio 2005中水晶报表操作,比起visual studio 2003中要简单的多,通过拖放操作就可以实现。而且visual studio 2005中比较简单,而且美观也有升级。
————————————————
版权声明:本文为CSDN博主「yingzhaom」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yingzhaom/article/details/7775491

posted @ 2020-01-06 22:46  厦门哈韩  阅读(186)  评论(0编辑  收藏  举报