用过水晶报表DataSet1的高手,请进!在线待问题。。。。。。。。。

K_top 2003-12-12 03:30:46
我用海波的方法:
我们采用下面的几步使用Push模式执行水晶报表:
1. 设计一个DataSet
2. 创建一个.rpt文件同时将其指定给上一步建立的DataSet。
3. 在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。
4. 在代码中访问数据库并把数据存入DataSet
5. 调用DataBind方法。
设计一个DataSet
1) 右击“解决方案浏览器”,选择“添加”--“添加新项”-->“数据集”
2) 从“服务器资源管理器”中的“SQL Server”中拖放“Stores”表(位于PUBS数据库中)。
3) 此时在数据集中就会有一个Stores表的结构图。
- .xsd文件中仅仅包含一个结构图,但是不会有任何数据在里面。
创建 .rpt 文件 :
4) 使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。
5)建立.rpt文件之后,右击“详细资料”-->"添加/删除数据库“
6) 在”数据库专家“窗口中,展开”项目数据“(代替以前的OleDb),展开“ADO.Net数据集”--"DataSet1“,选择”Stores“表。
7) 将”Stores"表添加到“选定的表”中,点击“OK”
8) 使用PULL模式下的方法,建立一个WebForm
建立一个Crystal Report Viewer 控件
9) 建立一个Crystal Report Viewer 控件,并设定其属性,此处与PULL模式下是一致的。
Code Behind 代码:
10) 在Page_Load方法中使用下面的子函数:
C#代码:
private void BindReport()
{
string strProvider = "Server=(local);DataBase=pubs;UID=sa;PWD=";
ReportDocument oCR = new ReportDocument();
Dataset1 ds = new Dataset1();
SqlConnection MyConn = new SqlConnection(strProvider);
MyConn.Open();
string strSel = "Select * from Stores";
SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
MyAdapter.Fill(ds,"stores");
oCR.SetDataSource(ds);
this.CrystalReportViewer1.ReportSource = oCR;
}
 
注意:在上面的代码中,你得注意一下oRpt是"Strongly Typed"的报表文件。如果你需要使用"UnTyped"报表,你得使用ReportDocument对象,然后再调用报表文件。
运行你的程序。
11) 运行你的程序
备注:
Dim oRpt As New ReportDocument()
1、在菜单“项目”-〉“添加引用”:CrystalDecisions.CrystalReports.Engine
2、在源代码里添加引用:using CrystalDecisions.CrystalReports.Engine;


我的问题是。这段程序执行到oCR.SetDataSource(ds);就出错:
Invalid report file path.
然后我加了路径
oCR.Load(@"E:\Inetpub\wwwroot\WebApplication2\myRpt.rpt");
执行到
this.CrystalReportViewer1.ReportSource = oCR;也报错。
请问各位大侠,这个dateset是怎么做的呀?
有例子请发 vivianhu@buynow.com.cn
...全文
109 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
MarcuseXiao 2003-12-13
  • 打赏
  • 举报
回复
第一个回答我打错了,应该是差这一句
oCR.Load("cr水晶报表名.rpt")
MarcuseXiao 2003-12-13
  • 打赏
  • 举报
回复
你被别人误导了,根本没有那么麻烦,如果水晶表操作起来那么麻烦,真对不起那几十万的成本:
我教给你一个简单方法(用DataSet作为数据源的):

准备知识:DataSet作为水晶表的数据源只是一个框架结构,做完了水晶表以后,它就没有用了.做水晶表时的dataset,跟以后的fill的dataset的路径之类可以不同,当然最好是一致.特别是水晶表中要使用的字段.
一句话,那dataset只是水晶表的一个框架而已.

步骤:
跟上面说的一样.

编程:
有了上面的准备知识,就知道该如何办了,水晶表跟dataset的fill分开,最后捆绑在一起就行了.
filldataset
{
//不管用什么方式,只要能fill,dataset就行
string strProvider = "Server=(local);DataBase=pubs;UID=sa;PWD=";
SqlConnection MyConn = new SqlConnection(strProvider);
MyConn.Open();
string strSel = "Select * from Stores";
SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
Dataset1 ds = new Dataset1();//这个DataSet1在结构上最好跟水晶表的一致,
//路径可以不同
MyAdapter.Fill(ds,"stores");//"stores"应该跟水晶表中指定的dataset的表名一样
//这里可以有两种方式;"Strongly Typed"的报表文件和"UnTyped"报表.两种不能同时用,只能取其一.

cr水晶报表名 oCR =new cr水晶报表名();//第一种

ReportDocument oCR = new ReportDocument();//第二种
oCR.Load("cr水晶报表名.rpt")

oCR.SetDataSource(ds);
this.CrystalReportViewer1.ReportSource = oCR;

}
MarcuseXiao 2003-12-13
  • 打赏
  • 举报
回复
this.CrystalReportViewer1.ReportSource = oCR
这句错了,应该是:
this.CrystalReportViewer1= oCR
wwl1981 2003-12-12
  • 打赏
  • 举报
回复
ReportDocument oCR = new ReportDocument();//此处你的report是什么
Dataset1 ds = new Dataset1();
SqlConnection MyConn = new SqlConnection(strProvider);
MyConn.Open();
string strSel = "Select * from Stores";
SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
MyAdapter.Fill(ds,"stores");
oCR.SetDataSource(ds);//此处最好写上表名
this.CrystalReportViewer1.ReportSource = oCR;
K_top 2003-12-12
  • 打赏
  • 举报
回复
to 蓝白白。
不对,就应该是dataset1的。因为这是我建立的Dataset1.XSD之后就有的。
大家可以看,http://www.cs-aspx.net/files/ccrystdtea.rar
跟着他操作。我不能 myRpt rpt1=new myRpt();
不知为什么。
K_top 2003-12-12
  • 打赏
  • 举报
回复
不行的。这个公共涵数都不对
lanbaibai 2003-12-12
  • 打赏
  • 举报
回复
我知道你的错误处在哪里,我刚刚调试通过,
你应该用Dataset ds = new Dataset1();
而不是Dataset1 ds = new Dataset1();
即可。

K_top 2003-12-12
  • 打赏
  • 举报
回复
不行的。这个公共涵数都不对
meixiaofeng 2003-12-12
  • 打赏
  • 举报
回复
调用如下:
uncPrintForm uncpf = new uncPrintForm(new RefuseCrystalReport()(你的报表),ds);
brightheroes 2003-12-12
  • 打赏
  • 举报
回复
调用如下:
uncPrintForm uncpf = new uncPrintForm(new RefuseCrystalReport()(你的报表),ds);
brightheroes 2003-12-12
  • 打赏
  • 举报
回复
public uncPrintForm( ReportClass rd,DataSet ds)
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

// //测试版
// return;

rd.SetDataSource( ds );

this.crystalReportViewer1.ReportSource = rd;
}

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧