水晶报表生成指南

原创 2005年02月28日 20:37:00

regular_smile.gif
方法一:
先用报表专家生成水晶报表,再加载:
using CrystalDecisions.Shared; //负责解释TableLogOnInfo类
using CrystalDecisions.CrystalReports.Engine; //负责解释ReportDocument类
private void Page_Load(object sender, System.EventArgs e)
{
 // 在此处放置用户代码以初始化页面
 try
 {
  CrystalReportViewer1.DataBind();
 }
 catch(Exception me)
 {
  Response.Write(me.ToString());
 } 

}
override protected void OnInit(EventArgs e)
{
 //
 // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
 //
 InitializeComponent();

//InitializeComponent后
 try{
  //通过报表对象绑定(可行,因为可指定logOnInfo)
 
  TableLogOnInfo logOnInfo = new TableLogOnInfo ();
  reportDocument1 = new ReportDocument();

  reportDocument1.Load(@"c:/inetpub/wwwroot/RS_Web_test/CrystalReport1.rpt");
  //@"C:/Program Files/Microsoft Visual Studio .NET 2003/Crystal Reports/Samples/Reports/General Business/CrystalReport1.rpt");
  
  //受密码保护的 Microsoft Access 和 Paradox 等 PC 数据库也使用该方法
  //但 LogOnInfo.ServerName和 LogOnInfo.DatabaseName 要保留为空     
  logOnInfo.ConnectionInfo.ServerName = "";
  logOnInfo.ConnectionInfo.DatabaseName = "";
  logOnInfo.ConnectionInfo.UserID = "sa";
  logOnInfo.ConnectionInfo.Password = "sa";
  
  reportDocument1.Database.Tables[0].ApplyLogOnInfo(logOnInfo);
  CrystalReportViewer1.ReportSource = reportDocument1;     
  
 }
 catch(Exception ee)
 {
  Response.Write(ee.ToString());
 } 

 base.OnInit(e);
}


coffee.gif
方法二:推荐star.gif
当然也可把代码全加在Page_load中。
而且,方法一的代码有两个缺点:
(1)数据报表格式文件是采用绝对路径
(2)数据库访问的servername,database,userid,password是写死的,扩展性不好。
Advanced改进:
(1)Server.Mappath函数(相对于c://inetpub//wwwroot的路径)
(2)读取web.config(System.Configuration.ConfigurationSettings.AppSettings ["servername"];)
代码:
using CrystalDecisions.Shared ;//负责解释TableLogOnInfo类
using CrystalDecisions.CrystalReports .Engine ;//负责解释ReportDocument类

private void Page_Load(object sender, System.EventArgs e)
{
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
//这里必须事先申明一个ReportDocument对象 Report,同时加载数据报表
ReportDocument oRpt = new ReportDocument();
//获取.rpt文件真实路径
string path1;
path1=Server.MapPath (''//RS-proj'');
path1+= ''//cr1.rpt'';
//oRpt.Load("c://inetpub//wwwroot//RS-proj//cr1.rpt");
oRpt.Load (path1);

//从web.config中获取logOnInfo参数信息
string a,b,c,d;
//获取ServerName
a=System.Configuration .ConfigurationSettings .AppSettings ["servername"];
//获取DatabaseName
b=System.Configuration .ConfigurationSettings .AppSettings ["database"];
//获取UserId
c=System.Configuration .ConfigurationSettings .AppSettings ["userid"];
//获取password
d=System.Configuration .ConfigurationSettings .AppSettings ["pass"];
//设置logOnInfo参数
logOnInfo.ConnectionInfo.ServerName = a;
logOnInfo.ConnectionInfo.DatabaseName = b;
logOnInfo.ConnectionInfo.UserID = c;
logOnInfo.ConnectionInfo.Password = d;

oRpt.Database .Tables [0].ApplyLogOnInfo (logOnInfo);

//建立.rpt文件与CryStalReportviewer文件之间的连接
CrystalReportViewer1.ReportSource = oRpt;
}


整个演示的操作过程说明:
1、 在解决方案资源管理器里,你需要存放报表文件处,添加新项:CrystalReport报表,起名为cr1.rpt
2、 在随后出现的“报表专家”中选择数据源时,请务必选择OLE DB,然后根据你的数据库的要求选择响应的驱动引擎:
SQL SERVER:Microsoft OLE DB Provider for SQL server
Access:Microsoft Jet.4.0
3、 输入正确的数据库连接,建立数据报表,并保存cr1.rpt文件
4、 打开webform1.aspx。添加crystalreportviewer控件:名称为:CrystalReportViewer1
5、 在webform1.aspx.cs中的page_load事件中添加上面的代码:

coffee.gif
下面是web.config中与本内容有关的细节
</system.web>
 <appSettings>
  <add key="servername" value=""/>
  <add key="database" value=""/>
  <add key="userid" value="admin"/>
  <add key="pass" value="123456"/>
 </appSettings>
</configuration>

水晶报表生成指南

function StorePage(){ d=document; t=d.selection?(d.selection.type!=None?d.selection.createRange().te...
  • johnsonTj
  • johnsonTj
  • 2005年03月07日 22:37
  • 937

在水晶报表中使用Code128条形码

1.将code128条码字体拷贝到C:\Windows\fonts下 下载地址是 http://download.csdn.net/detail/easyboot/9452777 2 .在水晶报表里的...
  • easyboot
  • easyboot
  • 2016年03月05日 13:51
  • 4331

使用水晶报表输出PDF文件(类实例)

首先:using System;using System.Data;using System.Data.SqlClient;using System.Web;using CrystalDecision...
  • zhangjian01361
  • zhangjian01361
  • 2006年07月27日 16:19
  • 1344

水晶报表导出pdf功能(完整的代码C#版)

using System;using System.Collections;using System.ComponentModel;using System.Configuration;using S...
  • zjfei
  • zjfei
  • 2010年03月20日 17:15
  • 1735

水晶报表注册码

密钥:AAP5GKS0000GDE100DS注册号:6707437608License : AV860-01CS00G-U7000NC SN : 1231467890水晶报表8SN:6M-000003...
  • wenweimin
  • wenweimin
  • 2006年12月26日 21:01
  • 7414

使用sql语句直接生成dataset做为水晶报表的数据源

使用sql语句直接生成dataset做为报表的数据源(即push模式),这样就可以接受参数了。当然报表有设置参数的功能 这方面我还没有详细研究   一.sql语句中没有使用表的相互关联(简单的查询语...
  • yuanbeng265
  • yuanbeng265
  • 2014年05月06日 16:41
  • 479

选择字段,创建用户自定义的水晶报表

在实际应用中,统计人员有根据要求制作特定统计报表的需要。本文参考了网上文章《在水晶报表中实现任意选择指定字段显示(阿泰)》,并在vs2008、sql2005环境下使用C#开发测试。测试运行界面如下图所...
  • hr541659660
  • hr541659660
  • 2016年04月08日 14:52
  • 561

[水晶报表]服务器后台自动生成PDF等档案

记得以前用JDE ERP的时候,通过过设置参数自动跑报表。 我现在两个设想:第一,邮件预警也可以采取附件形式,有些情况配合附件 第二,单据审批完后自动保存当时的一份PDF文档。 方法:搭载水晶报表实现...
  • david_520042
  • david_520042
  • 2011年12月06日 07:59
  • 3949

向水晶报表中填一个DataSet(内含多个表)

    public ReportDocument FillReportData(DataSet Ds,ReportDocument oReport)         {             ...
  • csui2008
  • csui2008
  • 2010年06月18日 15:24
  • 2636

水晶报表如何使用存储过程生成的结果集

水晶报表如果使用存储过程生成的结果集![转自 http://www.polsnet.com/home/tech5211_5682405.html]1、在项目中添加一个xsd,在设计界面中将存储过程拖入...
  • gxj022
  • gxj022
  • 2007年11月15日 14:39
  • 1782
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:水晶报表生成指南
举报原因:
原因补充:

(最多只允许输入30个字)