100分求救水晶报表的页面之间传递问题??急,多谢!在线等

fabiowen2 2005-11-09 10:50:22
页面A中通过的一个button,连接到页面B(报表显示页面),同时把一个需要显示的datatable用session也传到了页面B,这一步已完成.
问题是:页面B收到session后,想CrystalReportViewer1显示此datatable,因为此datatable是一个临时表,在数据库中没有此表或者视图(也考虑过建一个视图,但是很多属性都要通过页面A来动态获取)
1.是不是此时不能用向导一步一步地建报表?
2.有人建议在页面上拖一个数据集,报表再绑定.但这种方案移植性太差,以前我datagrid这样搞过,移到服务器上会出错,很难改
3.是不是最好的方案是用参数字段或者手写数据集,如果手写数据集又怎么绑定呢?报表是建一个空白报表吗?希望大哥大姐们提供好的解决方案,小弟不胜感激!最好有点代码
...全文
126 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
5swords 2005-11-11
  • 打赏
  • 举报
回复
用一张表VTABLE,一个字段VCOLUMN 在RPT里设好

查询如
SELECT CONVERT(CHAR(15),A)+' '+CONVERT(CHAR(10),B) AS VCOLUMN FROM ATABLE
填入
dataAdapter.Fill(dataSet, "vtable");

再把字段名作为参数传到RPT里

这样好象能解决一些简单的问题,但就是报表不象报表。每个字段的格式没区别。不知还有什么别的法可想。
5swords 2005-11-11
  • 打赏
  • 举报
回复
int intleft = 0;
bool[] clicked = {false,true,false,false,true,true};
ReportObject rod;
ReportObject roh;
for(int i = 0; i < rdOrders.dDetailSection1.ReportObjects.Count; i++)
{
rod = rdOrders.DetailSection1.ReportObjects[i];
roh = rdOrders.PageHeaderSection1.ReportObjects[i];
if(clicked[i])
{
rod.Left = intleft;
roh.Left = intleft;
intleft += rod.Width + 10;
}
else
{
rod.ObjectFormat.EnableSuppress = true;
roh.ObjectFormat.EnableSuppress = true;
}
}
CrystalReportViewer1.ReportSource = rdOrders;

---------------------------------------------------
我这是CR11的,不知道其它版本是不是可以,感觉不错。问题是RPT里创建字段的顺序和页面上字段的顺序要一致。
5swords 2005-11-10
  • 打赏
  • 举报
回复
你是说建立一个TEMP表,里面都是文本字段,再把要显示的表倒到这表里来。

这样做的话比如字段宽度什么的可能就考虑不上了。
------------------------------------------------------------------
如果目标固定于几张表之间还会有法可想,目标不固定,效果又要好,可能只有CR自己才能做到。
fabiowen2 2005-11-09
  • 打赏
  • 举报
回复
谢谢你,我下午试一试你说的方法
xwdd129 2005-11-09
  • 打赏
  • 举报
回复
不管如何建数据集,都需要有实际的字段,但看你的方案里好像字段都不是现成的!

用参数字段估计不一定行,所有字段都用参数字段,程序里赋值麻烦又容易错。

可否考虑全部用文本字段,建立个空报表,全部放文本字段,在程序里取好数据,直接用代码赋值给控制表显示?!

4,818

社区成员

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

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