水晶报表的显示问题!急,在线等~

ami_glacier 2005-08-11 03:49:06
我使用的是VS.net和水晶报表9,数据库是Oracel
现在由于无法在ADO.NET生成的强类型话的Dataset1中添加存储过程(不知道什么原因,总是报错!知道的高手们能帮忙解决一下码?)

所以现在在vs。net里直接让水晶报表连接到数据库不使用ADO。net!
报表1尝试性的绑定叻某个存储过程,没有输入参数,只有一个输出参数是个指针。

现在我需要在页面上显示该报表。由于没有使用ADO.Net的连接方式!不能使用类似一下的代码:
myReport.Load(rptload);
myReport.SetDataSource(ds);

CrystalReportViewer1.ReportSource=myReport;

所以想请问,我现在该使用什么方法让报表显示出来呢?

以下是我的代码,在线等消息

OracleCommand myCMD = new OracleCommand();
IDBHelper helper = DBHelper.Create();
OracleParameter[] parameters = { new OracleParameter("P_AC", OracleType.Cursor)};
parameters[0].Direction = ParameterDirection.Output;

myCMD.Connection = (OracleConnection)helper.Connection;
myCMD.CommandType = CommandType.StoredProcedure;
myCMD.CommandText = "PKG_TEST.SELECT_USER";
myCMD.Parameters .Add (parameters[0]);
myCMD.Connection.Open();
myCMD.ExecuteNonQuery();

string rptload = "C:\\Inetpub\\wwwroot\\CSVW_CRS\\CRS_Web\\rep\\SysAudit\\SysReportAudit.rpt";
CrystalReportViewer1.ReportSource = rptload;
CrystalReportViewer1.DataBind();

谢谢各位高手拉~
...全文
180 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
springRainyao 2005-10-10
  • 打赏
  • 举报
回复
给个例子,这种方法可以使数据层和应用层分离,不过需要.ttx文件,ttx文件的用法随便查一下就有

Dim MyTable As DataTable
Dim MyRow As DataRow
Dim MyColumn As DataColumn

'设置数据源
rptReportDoc.Load("..\report\BndCwbRPT.rpt")
'建立表
MyTable = New DataTable
'建立列
MyColumn = New DataColumn("表字段")
MyColumn.DataType = System.Type.GetType("System.String")
MyTable.Columns.Add(MyColumn)
'建立数据行
MyRow = MyTable.NewRow
。。。。。。。。
MyTable.Rows.Add(MyRow)
'设置数据源表
rptReportDoc.SetDataSource(MyTable)
'binding
CrystalReportViewer1.ReportSource=rptReportDoc
likaier 2005-08-12
  • 打赏
  • 举报
回复
首先,你直接连接数据库中的存储过程,出错的原因:是否你存储过程调试过,确保没有问题,另外,是否你修改过数据源,如果修改过,建议先删除数据源,再重新添加,不过字段要重新拖,你可以试试。
再者,按照你说的问题,你完全可以使用我的第一种做法:
在水晶报表里面写sql语句,可以设定参数,程序调用时,只传递参数,语句在水晶报表里执行。
ami_glacier 2005-08-12
  • 打赏
  • 举报
回复
你说的方法是使用得pull模式,也就是直接连接数据库中的存储过程的!
我本来想用push模式把存储过程放到ADO.net数据集
可是报错!
所以现在想用其他方法解决!
likaier 2005-08-12
  • 打赏
  • 举报
回复
不是很明白你的意思,我通常用以下方法:
1。在水晶报表里面写sql语句,可以设定参数,程序调用时,只传递参数,语句在水晶报表里执行。
2。在数据库中写存储过程,然后再水晶报表中设定数据源为该存储过程,程序中执行存储过程。
ami_glacier 2005-08-12
  • 打赏
  • 举报
回复
首先:存储过程调试过,没有问题!数据源也修改过,删除后又新建的,还是不行!还有存储过程中的返回置无法拖到ADO.NET对应建立的新表中.
再者,我这里水晶报表里的SQL语句不能使用,是灰色的,我也不知道是什么原因的说!
我给他搞得头都变成2个了

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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