如何添加子报表和参数

如何添加子报表和参数,第1张

选择rdlc报表—>视图->报表数据(列表最后一个)在报表数据左列,右键“参数”->添加参数 即OK!我在vs2013中试的可以,你试试看点一下报表 ,选 视图---Report Data,d出来的窗口,选第二个“参数”,右键可以添加

子报表是对另一个报表的引用。若要通过数据值使报表相关联(例如,使多个报表显示同一客户的数据),必须设计参数化报表(例如,显示特定客户详细信息的报表)作为子报表。向主报表添加子报表时,可以指定传递给子报表的参数。还可以向表或矩阵中的动态行或动态列添加子报表。处理主报表时,会处理每行的子报表。在这种情况下,请考虑您是否能通过使用数据区域或嵌套数据区域实现所需的效果。有关详细信息,请参阅使用数据区域 (Report Builder 2.0)。添加子报表在“插入”选项卡上,单击“子报表”。在设计图面上,单击报表上的某个位置,然后拖动一个框调整到所需子报表大小。也可以单击设计图面来创建固定大小的子报表。右键单击子报表,然后单击“子报表属性”。在“子报表属性”对话框的“名称”文本框中键入名称,或接受默认值。在“将此报表用作子报表”框中,键入报表的名称,或者单击“浏览”。可以通过多种方式指定报表。有关详细信息,请参阅指定外部项的路径 (Report Builder 2.0)。单击“确定”。 指定传递给子报表的参数在“设计”视图中,右键单击子报表,然后单击“子报表属性”。在“子报表属性”对话框中,单击“参数”。单击“添加”。将向参数网格添加一个新行。

1、Java代码,classIds是报表文件需要的一个参数,在这里和给普通报表传递参数是一样的。

2、蓝色为第二步,$P{classIds}根据{}大括号里面的名字去取值,这时候他的值是1。

Map parameters = new HashMap()

parameters.put("classIds", 1)

JasperPrint jasperPrint = JasperFillManager.fillReport(report,parameters, conn)

2、jrxml文件内容

<subDataset name="SubDataset3">

<parameter name="classId" isForPrompting="true" class="java.lang.Integer"/>

<queryString>

外部必须要有一个结果集,这一点,我的理解是JasperReport的容错处理。

<![CDATA[select a.name course_name,b.name course_type_name,c.marks,d.name as school_name,e.name as classname

from t_course a,t_course_type b,t_marks c,t_schoolmates d ,t_class e

where c.student_id=d.id and c.course_id=a.id and a.type_id= b.id and d.class_id=$P{classId}]]>

</queryString>

</subDataset>

<field name="classname" class="java.lang.String"/>

<field name="course_type_name" class="java.lang.String"/>

<field name="marks" class="java.lang.Integer"/>

--------------------------------------------------------------

<field name="school_name" class="java.lang.String"/>

<field name="course_name" class="java.lang.String"/>

<parameter name="classIds" class="java.lang.Integer"/>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11443542.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存