觅水晶报表高手!!顺便散散分

天行归来 2003-10-27 10:47:04
好久没有上来了,分数积得有些多了,心情也不错,就给大家散散分。顺便问一个小问题。
这段时间由于项目开发需要,开始采用.net工具开发一个基于b/s的项目。负责的是中间层的开发。项目快结束的时候,我给界面提供的报表接口居然存在以下问题:
中间层提供的数据集,在水晶报表中无法直接阅览打印,表示层的人说水晶报表必须连接数据库,然后和数据库的某些字段绑定,才可以显示。由于时间关系,没有时间自己去解决这个问题,只有请教高手了。水晶报表工具必须和数据库关联,而没有直接阅览已经计算好的DataSet中的内容这个能力吗?
...全文
51 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
天行归来 2003-10-27
  • 打赏
  • 举报
回复
xjaifly(tiantian),你的代码是不是相当于向水晶报表传递一个变量值,记录集该怎么传递,并且要动态绑定报表字段。
谢谢大家的帮助,我也该自己试试看了。
abf 2003-10-27
  • 打赏
  • 举报
回复
呵呵,westseason(西城时代) ,不好意思,能否亮些代码。
ivt(零下一度(.net版)) 提供的代码好像报错。
xjaifly 2003-10-27
  • 打赏
  • 举报
回复
我这里有一段 小代码是从数据库检索,让后将数据传个报表。
根据时间检索数据:不通过数据向导做连接,先建立与数据库的连接,
先设置连接字符串:public stratic string strconn = “ Provider=MSDAORA.1;Password=automap;User ID="";Data Source=""”;
建立连接: OleDbConnection myConn = new OleDbConnection(strconn);
建立查询时间和连接SQL语句:
string startTime = dataTimePicher_start.Text;
string endTime = dataTimePicher_end.Text;
string myString = "select count(id) from sfj_zxjj where zbh = 01 and ljywbs = 408 and jjsj >to_date ('"+starttime+"','YYYY-MM-DD') and jjsj < to_date('"+endtime+"','YYYY-MM-DD')";
OleDbCommand myCommand = new OleDbCommand(myString,myConn);
OleDbDataAdapter myAdapter = new OleDbDataAdapter(myCommand);
计算结果:string count = myCommand. ExecuteScalar().ToString();
MessageBox.Show(count)将值传递给报表中的某个字段:TextObject 字段名= this.crystalReport_cktjb1.ReportDefinition.ReportObjects["字段名"] as TextObject;
Dlxj.Text = count;
你看对你有没有用!
具体其他的,你可以看帮助!
westseason 2003-10-27
  • 打赏
  • 举报
回复
可以直接将Dataset的内容送给水井报表的啊。完全没问题!
abf 2003-10-27
  • 打赏
  • 举报
回复
比如:
数据库中有张成绩表
驾驶员姓名 考试科目 成绩
A 科目1 80
A 科目2 85
A 科目3 90

经过中间层处理后,提供的数据集ds内容与格式如下:
驾驶员姓名 科目1 科目2 科目3
A 80 85 90

可否直接设置水晶报表的数据源为 ds,然后直接阅览?
天行归来 2003-10-27
  • 打赏
  • 举报
回复
rep.SetDataSource(ds);
参数 ds 可以是数据库中并不存在的记录表吗?
因为中间层提供的ds,是对某些表处理后的到的(比如,把某张表列记录转为行等运算,记录集中的字段,在数据库中并不存在对应的表)
最后,rep是否需要登录数据库?
谢谢!!
ivt 2003-10-27
  • 打赏
  • 举报
回复
report1 rep=new report1();
rep.SetDataSource(ds.table[0]);
rep.refresh();
this.crystalreportview1.reportsource=rep;
brightheroes 2003-10-27
  • 打赏
  • 举报
回复
up
musclecn 2003-10-27
  • 打赏
  • 举报
回复
up
顾君彦 2003-10-27
  • 打赏
  • 举报
回复
可这个能力。
例子
this.凭证打印料件1.SetDataSource(this.PrintDataSet)
天行归来 2003-10-27
  • 打赏
  • 举报
回复
本问题已经解决,具体解决的办法是:
把 DataSet 中的内容导出为 xml 文件,水晶报表中的数据源可以设置为导出的 xml 文件。
希望此办法对大家有帮助,也谢谢大家的热心帮助,再次谢谢!

110,501

社区成员

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

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

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