怎样使用水晶报表的推模式?

水晶报表

 
1.根据报表的结构字段,建立一个xsd文件,用来存放数据。

2.新建一个报表,注意建立的时候要浏览到该xsd文件,

   建好后找到该报表的属性"自定义工具",把原来的

  "CrystalDecisions.VSDesigner.CodeGen.ReportCodeGenerator"

  改为"CrystalDecisions.VSShell.CodeGen.ReportCodeGenerator"

  这样就会产生一个按照你报表名命名的zsmxb.cs文件,其实就是下面的类zsmxb

   同时建立一个页面,把CrystalReportViewer控件放到页面,

   并且要在该页面文件的顶部申明一下报表的类,

   public class Fr_zsmxb : System.Windows.Forms.Form
   {
        zsmxb crReportDocument;

       .........

3.建立报表结构

   DataSet dss=new DataSet();
   DataTable dt=new DataTable("zsmxb");
   dt.Columns.Add("cchbh",System.Type.GetType("System.String"));
   dt.Columns.Add("nglf",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("ncf",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("nqyf",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("nzsf",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("ntcf",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("ngz",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("nzjf",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("nylf",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("nwxf",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("nsy",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("nqtf",System.Type.GetType("System.Decimal"));
   dt.Columns.Add("nxj",System.Type.GetType("System.Decimal"));
   dss.Tables.Add(dt);

   注意:这里的DataTable dt=new DataTable("zsmxb");这句中表名"zsmxb"要和你的xsd文件中的表名要一样,

  同时,dt的字段名、类型,都要和xsd文件一样,否则回产生"查询引擎错误"。

4.为这个ds传入数据

   for(int i=0;i<this.ds.Tables["zsmxb"].Rows.Count;i++)
   {
    DataRow dr=dt.NewRow();
    dr["cchbh"]=this.ds.Tables["zsmxb"].Rows[i]["cchbh"];
    dr["nglf"]=this.ds.Tables["zsmxb"].Rows[i]["nglf"];
    dr["ncf"]=this.ds.Tables["zsmxb"].Rows[i]["ncf"];
    dr["nqyf"]=this.ds.Tables["zsmxb"].Rows[i]["nqyf"];
    dr["nzsf"]=this.ds.Tables["zsmxb"].Rows[i]["nzsf"];
    dr["ntcf"]=this.ds.Tables["zsmxb"].Rows[i]["ntcf"];
    dr["ngz"]=this.ds.Tables["zsmxb"].Rows[i]["ngz"];
    dr["nzjf"]=this.ds.Tables["zsmxb"].Rows[i]["nzjf"];
    dr["nylf"]=0;
    dr["nwxf"]=0;
    dr["nsy"]=0;
    dr["nqtf"]=this.ds.Tables["zsmxb"].Rows[i]["nqtf"];
    dr["nxj"]=System.Convert.ToDecimal(dr["nglf"].ToString())+System.Convert.ToDecimal(dr["ncf"].ToString();    

   dt.Rows.Add(dr);
   } 

这里的ds是同过查询得到的,这里只是举个例子。

5.把得到的报表数据源dss绑定到水晶报表。

   crReportDocument=new zsmxb();
   crReportDocument.SetDataSource(dss);
   crystalReportViewer1.ReportSource = crReportDocument; 

时间: 2025-01-01 04:04:06

怎样使用水晶报表的推模式?的相关文章

路径应该没写错就是加载不上去,关于水晶报表加载是失败的问题,请大家多多指教

问题描述 水晶报表用推模式一直加载不上,页面上那个报表的工具栏是出来了,但是提示报表加载失败,没报表显示和任何数据.项目的目录是E:开发工具相关WebSite3使用水晶报表的文件是放在E:开发工具相关WebSite3AssetReport下面的报表文件放在跟页面文件同一个文件下,水晶报表的字段和填充的数据字段也是一样的,PS另一个页面我使用相同的数据集,使用提取模式的报表是可以显示的usingSystem.Data;代码如下:usingSystem.Configuration;usingSyst

Asp.Net中使用水晶报表(中)

asp.net|水晶报表 使用Pull模式 我们将通过下面的这些步骤来通过Pull模式来执行水晶报表 1.首先创建rpt文件,并使用水晶报表设计接口设置一些必须的数据连接. 2.拖放一个 CrystalReportViewer控件至aspx页面,设置它的属性指定我们上一步创建的.rpt文件. 3. 在代码中调用DataBind方法. 创建 .rpt 文件: 1) 在右击"解决方案游览器",在弹出的菜单中选择"添加"--"添加新项"-->&q

Asp.Net中使用水晶报表(下)

asp.net|水晶报表 使用PUSH模式 我们采用下面的几步使用Push模式执行水晶报表: 1. 设计一个DataSet 2. 创建一个.rpt文件同时将其指定给上一步建立的DataSet. 3. 在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系. 4. 在代码中访问数据库并把数据存入DataSet 5. 调用DataBind方法. 设计一个DataSet 1) 右击"解决方案浏览器",选择"添加"--"

ASP.NET中水晶报表的使用方法详解_实用技巧

前一段时间,由于在项目中要用到报表做统计,所以我学习了一下ASP.NET水晶报表的使用.水晶报表的执行模式(也就是取数据的方法)可以分为两种: 第一种是Pull模式:被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据. 另外一种就是Push模式:此时开发者不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表.在些这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化. 水晶报表中的报表类型也分为两种: --StrongTyped 报表: 当你将报表文

水晶报表子报表参数赋值

问题描述 水晶报表采用pull模式设计的.1.子报表中数据表A某列等于某值通过在主报表中设置创建parameterfieldparamName,然后创建主子报表链接,将paramName与A的列绑定.然后在代码中reportDocumentre=newreportDocument();re.load("main.rpt");re.setParameterValue("paramName",12);2.A中的某列不等于某值,这个时候就没办法绑定了就在子报表中的repo

vs2005自带的水晶报表,我用push模式,在页眉添加了text以及边框等,页眉不能显示了,已经试过很多次了,都无法解决,高手支点啊。

问题描述 我用的是vs2005自带的水晶报表,用的是c#web开发,push模式的报表,一切都正常,但是就是页眉不能显示了,是想如下效果:编号物品的尺寸物品名称//页眉就是这个,是用文本对象写上去的001500×200×20单字.......所有的数据都是正常,但是就是页面没有显示,显示成如下,页眉不见了,但是页脚和报表页脚都能够显示正常,001500×200×20单字.......我是用将CrystalReportViewer1放在一个aspx页面中的,将CrystalReportViewer

数据集推给水晶报表时候出错

问题描述 数据集推给水晶报表时候出错 图片说明 解决方案 缺少dll,提示的很清楚了.

.Net(c#)调用采用“提取模式”获取数据的水晶报表

数据|水晶报表 using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using CrystalDecisions.CrystalReports.Engine;using CrystalDecisions.Shared;namespace DLLCrystal{ /// <summary> /// frmCrystalVi

没有数据-C#水晶报表不显示数据?

问题描述 C#水晶报表不显示数据? 数据库是sqlite,代码如下,什么推模式拉模式的不懂呀.. SQLiteConnection conn = new SQLiteConnection("Data Source=equipment.db"); conn.Open(); SQLiteCommand comm = new SQLiteCommand("select eqName,model,danwei,count,price,total from storeA",