水晶报表子报表有条件显示数据的问题,高手请进up者有分
需求:
============
我有一个Order和一个OrderDetail表,二者通过外键相关连,我想用水晶报表显示某一条订单时,同时显示该订单的详细订购情况,然后打印。我在主报表中插入了一个订单详细的子报表
问题:
============
打印某一条订单时,并不是显示该订单下的详细订购条目,而是显示OrderDetail表的全部内容
我的代码:
============
'curr_TraPKID为Order表的主键,OrderDetail的外键
'=======================
Dim prtTran As New DataAccess.Transport
'设置主表
Dim dsTran As DataSet = prtTran.TraGetByTraPKID(curr_TraPKID)
Dim prtTranTable As DataTable = dsTran.Tables(0)
Dim rptTran As New crTran
rptTran.SetDataSource(prtTranTable)
dsTran.Dispose()
'设置子表()
Dim dsTranDetail As DataSet = prtTran.TrdGetByTraPKID(curr_TraPKID)
'msgbox(dsTranDetail.tables(0).rows.count)
'=============
'弹出的消息框的值,也就是记录条数是正确的,但显示却把整个表的数据显示出来
'=========================
Dim prtTranDetailTable As DataTable = dsTranDetail.Tables(0)
Dim rptTranDetail As New crTranDetail
rptTranDetail.SetDataSource(prtTranDetailTable)
dsTranDetail.Dispose()
……
crvTransport.ReportSource = rptTran
'========================================
'crvTransport.ReportSource = rptTranDetail
'单独显示该子表也正确
’=====================
crvTransport.Zoom(75)
高手请出手相助,up者亦有分,谢谢!
问题点数:20、回复次数:16Top
1 楼yikais(红树林)回复于 2005-06-13 08:28:39 得分 1
建立一个从主表到子表的,关键字链接。Top
2 楼dingjuntm(大山)回复于 2005-06-13 08:30:50 得分 1
UP)!Top
3 楼huguangwu(追风少年)回复于 2005-06-13 09:15:47 得分 0
to yikais(莫道君行早,更有早行人。
两个表已通过外键关键,子表绑定的dataset为正确的Top
4 楼huguangwu(追风少年)回复于 2005-06-13 09:20:14 得分 0
大虾帮忙啊~不够再加分~Top
5 楼fslyw()回复于 2005-06-13 09:26:37 得分 1
把数据先查出来,再绑定到水晶报表中就可以了。这样做还可以减少读取不必要的数据。Top
6 楼huguangwu(追风少年)回复于 2005-06-13 18:46:23 得分 0
楼上几位还没有看懂我的意思,自己upTop
7 楼yapub(vs.net)回复于 2005-06-14 08:52:42 得分 1
upTop
8 楼huguangwu(追风少年)回复于 2005-06-14 09:29:42 得分 0
其实我的问题类似这位朋友的问题,但是我不知道 如何按回复的人来做,在用报表设计器设计时,选择数据源总是不能选择该dataset.xsd文件作为数据源Top
9 楼huguangwu(追风少年)回复于 2005-06-14 09:32:17 得分 0
http://community.csdn.net/Expert/topic/3912/3912384.xml?temp=.6569788Top
10 楼yiyue(六月)回复于 2005-06-14 11:57:27 得分 1
取个巧哈
先建一个专门显示报表信息的tmp表,列要建来足够多。
显示报表时,先将此表清空,
再将按条件得到的结果放在这个表中,
再刷新这个tmp表对应的报表。Top
11 楼lldxiaodao()回复于 2005-06-14 18:28:35 得分 10
我遇到过你所说的这种情况,但是当我做出来后,实际上水晶报表的子报表并不稳定(个人认为),经常出现问题,于是我便直接在一个报表中解决要两个报表解决的问题,以下是我做的方法:
1.建立一个dataset1,将Order表和OrderDetail表都放到里面去,并通过外键关联两表.
2.根据你的要求检索Order表
3.根据Order表检索OrderDetail表
4.将检索的两个表的记录合并到1.建立的dataset1中
5.把dataset拖到报表中设计(把Order表的字段排在前面,显示完Order表内容后,紧跟排放OrderDetail表字段)
6.代码中指定报表的数据源是dataset1Top
12 楼lldxiaodao()回复于 2005-06-14 18:47:50 得分 2
如果你还是坚持用子报表,那也可以参考我上面的方法.但是我始终觉得,报表只是用于组织数据,使数据显示得更有价值,对于数据的操作,更多的应该在程序代码下完成,用dataset组织你的数据结构是比较好,而且能用于水晶报表的办法.Top
13 楼shyming(Forest Robber)回复于 2005-06-14 21:16:35 得分 1
create a view...Top
14 楼ghchen()回复于 2005-06-15 12:36:22 得分 1
学习,关注,顶Top
15 楼Jeacey()回复于 2005-06-15 13:00:05 得分 1
其实这个报表可与不用子报表实现,把主报表数据放在页眉处,子报表的内容
放在详细信息部分。
若采用子报表,你可以使用连接把子报表的数据加载显示,打印时只打印子报表
你的错误可能是数据源绑定的有问题!Top
16 楼huguangwu(追风少年)回复于 2005-06-30 11:14:17 得分 0
注:本人最后解决办法是
采用xsd文件建立一个dataset,采用推的方式成功的。参考了网上一篇文章,忘记网址了,如后来者遇到与我同样的问题的时候,可以采取这种办法。Top




