• 水晶报表使用push模式(1)


    1:数据建模。
    在设计报表前,我们首先要根据展示的内容和查询的条件确定数据模型,比如我们要统计任意时间段每个班组的产量,那我们的模型可能设计如下:
    WorkDate   Date
    WorkTeam   char
    WorkPcs    int
    WorkSqr    float
    这个实体的定义取决于报表要展示的内容以及过滤的条件。
    比如要方便按月份来查询,可以增加:WorkMonth  char
    至于其内容来源,有可能是直接取自表中、视图或查询语句,也可能来源于一个存储过程。
    在设计的时候不用考虑其如何得来的。
    2:建立XSD
    1)通过vs.net建立数据集来,然后人工建立DataTable,从而生成XSD文件。
    xsd文件名不重要,重要的是DataTable的名字,这个就是填充DataSet中DataTable的名字。
    其生成的强类型的类文件对设计报表是没有用处的。
    数据类型是一定要定义的,以方便在水晶报表设计中能对该列进行处理;
    主键等约束,包括字符长度等,个人觉得没必要。除非该xsd文件要用于验证数据的有效性。
    2)通过vs.net建立数据集,然后从服务器资源管理中拖拽表或视图来生成XSD;
    这时工具会自动根据表或视图的定义来生成XSD及对应的类。
    包括数据类型、长度以及主键等。
    我们查看其代码文件,可以发现对应的类代码有点“异常复杂”,这就是所谓的强类型的dataset生成。
    缺省是生成了TableAdapter的。这个实际上可以删除,以减少XSD文件的大小,大约变为原来的1/5。
    查看XSD文件,可以发现对表的操作,如查询、插入、更新和删除等操作语句都体现在XSD中的。
    3)通过vs.net建立数据集,增加一个查询,通过改查询来生成XSD.
    4) 自己生成XSD,如:
    string sql = "select * from " + tableName;
    DataSet data = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(sql, this._connectString);
    data.Tables.Add(tableName);
    da.FillSchema(data,SchemaType.Source,tableName);
    data.WriteXml(fileName, XmlWriteMode.WriteSchema);
    3:设计报表文件。
    如使用Crystal Reports2008或者Crystal Reports for .NET4.0来设计.
    在创建新连接中,选择Ado.net,然后选择对应的xsd文件,确定即可。
    其余设计过程和直接连接数据库设计没有什么区别。
    4.显示报表
    ReportDocument rd = new ReportDocument();
    rd.Load("Throughput.rpt");
    DataSet data = new DataSet();
    SqlConnection cnn = new SqlConnection(connectString);
    SqlDataAdapter da = new SqlDataAdapter(selectSQL, cnn);
    da.Fill(data, "Throughput");
    rd.SetDataSource(data);
    this.crystalReportViewer1.ReportSource = rd;
    注意:fill中的表名必须和设计文件中的表名相同!

    da.Fill(data);
    rd.SetDataSource(data);
    则不能正确展示报表的。

    当然也可以使用这种方式!
    da.Fill(data);
    rd.SetDataSource(data.Tables[0]);

  • 相关阅读:
    野心和实力的磨合
    tpm
    菜猫学习linux笔记(1)
    调试理解过程
    TSS学习记录
    RSA加密算法理解(整理自网络)
    *args和**kwargs在python中的作用
    在 Ubuntu 16.04 中安装谷歌 Chrome 浏览器
    ubuntu安装微信客户端
    ubuntu 桌面操作系统安装WPS办公软件的方法
  • 原文地址:https://www.cnblogs.com/chump/p/2365302.html
Copyright © 2020-2023  润新知