水晶报表在VS.NET中的两种操作方式及示例

水晶报表的操作有两种方式:拉模式和推模式。

一、拉模式

1、基本特点
    设计时,从数据库中拖表,字段等;
    运行时,则按照设计时的绑定,取数据。

2、使用方法
    (1)配置服务器,选择数据库及数据源,最好选择允许保存密码;
    (2)拖拉需要的数据库表,字段到报表上,编辑筛选、公式等。

3、优点
   简单、方便、快捷

4、缺点
   灵活性差。
   允许报表时需要用户登录数据库服务器,输入用户名,密码。


二、推模式

1、基本特点
    设计报表时,从XML(*.xsd文件)中获取数据库模式架构;
    程序运行时,从数据集(DataSet对象)中获取源数据。

2、使用方法
    (1)在VS.NET中,生成一个与报表相应的数据集,假设命名为XXXDS,则VS.NET将自动生成3个文件,分别为XXXDS.CS,XXXDS.XSD,XXXDS.XSX,将这3个文件手工添加到项目工程中去;
    (2)水晶报表设计器中,选择XSD文件,数据源配置完成;
    (3)拖拉需要的数据库表,字段到报表上,编辑筛选、公式等。


三、水晶报表在C#.NET(WinForm)中的使用方法

1、创建一个Form;
2、拖一个Report Viewer控件(rptViewer);
3、添加.NET的关于Crystal Report的三个引用;
4、using 这3个命名空间;
5、创建报表文档对象(rptDoc);
6、加载报表;
7、传入参数字段;
8、若为拉模式则设置与之相适应的DataSet:rptDoc.SetDataSourceCds;
9、设置rptViewer的报表文件。

示例代码:

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

    /// <summary>
    /// 载入报表。
    /// </summary>
    /// <param name="rptViewer">报表查看器。</param>
    /// <param name="dataSource">DataSet 数据源。</param>
    /// <param name="rptPath">报表文件的路径。</param>
    /// <returns>执行结果。</returns>
    public string[] LoadReport(CrystalReportViewer rptViewer,
                               DataSet dataSource,
                               string rptPath)
    {
 ReportDocument rptDocument = new ReportDocument(); // 报表文档。

        try
        {
            // 使用ReportDocument加载报表
            rptDocument.Load(rptPath); // 如果路径不对会导致异常;
     //最好将路径转换为绝对路径。

            // 设置ReportDocument的报表数据源
            rptDocument.SetDataSource(dataSource);

            // 设置查看器的报表文档,让查看器显示报表。
            rptViewer.ReportSource = rptDocument;
        }
        catch(Exception ex)
        {
            return new string[]{"fail", "报表[" + rptPath + "]加载失败!/r/n" +
                                   "原因为:" + ex.Message + " /r/n " +
                                   "调用栈:" + ex.StackTrace + " /r/n"};
        }

        return new string[]{"success","报表加载成功!"};
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值