【问题标题】:Displaying multiple records of one column in a single jasperreport在单个 jasperreport 中显示一列的多条记录
【发布时间】:2013-06-14 04:50:05
【问题描述】:

我正在使用 jasper 报告 5.0.0 并使用如下所述的场景创建报告: 在我的 ireport 中,我需要显示学生姓名、班级、id、目标、proficiencyForGoal。每个学生都有多个目标,每个目标都有进步。我的 sql 查询如下: 从按 prog.goal_id 连接和分组的 2 或 3 个表中选择 stud.name、stud.class、stud.id、prog.goal_id、prog.proficiency。此查询为每个学生提供多行。并且 ireport 每行创建多个 PDF(使用 PDF 预览)。 但我想在单个 PDF 中显示所有目标和目标熟练程度以及学生详细信息,例如姓名、班级、ID。那就是我想要每个学生一份包含所有详细信息的 PDF。因此,如果有 500 个学生,那么 500 个 pdf。

假设每个学生有 10 个目标,那么现在我得到的是 10 个 PDF,其中一名学生的姓名、班级、ID 重复,而对于 500 名学生,我得到 500*10=5000 个我不想要的 pdf。

感谢您对如何实现此要求的快速输入或想法。

谢谢

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    在您已经在报告中添加了 sql 查询之后,我认为至少应该在报告中放置字段(名称、类等);此外,如果每个学生有多个详细信息,您可以在报告中为每个学生使用子报告。

    【讨论】:

    • 感谢您的建议。我使用子数据集和数据集运行列表代替子报告来显示学生的每个目标 ID。我使用单独的查询来获取子数据集中每个目标 ID 的熟练程度,如下所示:从 prog 中选择熟练程度,其中目标 ID = 1 和学生 ID = 1。我想知道如何将主报告查询中的字段 student_id 作为参数传递给子数据集,这样我就不需要在子数据集中硬编码 student_id。
    • 我不确定数据集,但是您可以将主报表中的字段作为参数传递给子报表;有关详细信息和示例,请参阅此链接:community.jaspersoft.com/questions/536360/….
    【解决方案2】:

    不知道如何将其添加为评论,所以我把它放在这里。

    要将值传递给您的数据集,它的工作原理与子报告非常相似,但“参数”选项不在 Ireport 的属性部分中。
    就像在子报表中一样,您首先需要将参数添加到数据集 (student_id)

    然后要进入参数屏幕,您需要:

    右键单击您的列表 选择“编辑列表数据源” 在参数选项卡下单击“添加” 在顶部拉中,您将拥有数据集参数(student_id)[您只会从数据集中获得有效参数的列表] 在值表达式中,您将获得主报告$F{student_id}

    这会将student_id从您的主报告传递到您的数据集(用于列表、表格和交叉表)

    当然,您需要添加到数据集的 where 子句中

    where $P{student_id} = student_id

    【讨论】:

      【解决方案3】:

      在查询中,您可以为 student_id 添加参数化条件

      Like:  where student_id=$P{p_student_id}
      

      并将文本字段和静态文本等所有内容保留在摘要带中。

      【讨论】:

        【解决方案4】:

        一种更简单的方法,假设您的查询是由学生订购的。 在 Ireport 添加一个组(在报告检查器中右键单击根目录单击“添加报告组”) 您很可能不需要页眉或页脚 写下你所有的领域(姓名、班级、id、goal_id、熟练度) 您可能希望在名称、类、id 上单击“打印重复值”属性 选择您的组(在报告检查器中) 选择“从新页面开始”(您可能还想重置页码并重新打印页眉) 也“保持在一起”

        这里是一个例子,你需要把你的查询放进去才能让它工作

        <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report9" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="5ac8f93f-0f1f-4f1c-8c7c-41a15b76ef65">
        <?xml version="1.0" encoding="UTF-8"?>
            <property name="ireport.zoom" value="1.0"/>
            <property name="ireport.x" value="0"/>
            <property name="ireport.y" value="0"/>
            <queryString>
                <![CDATA[select sysdate from dual ]]>
            </queryString>
            <field name="name" class="java.lang.String"/>
            <field name="class" class="java.lang.String"/>
            <field name="id" class="java.lang.String"/>
            <field name="goal_id" class="java.lang.String"/>
            <field name="proficiency" class="java.lang.String"/>
            <group name="Student Name" isStartNewPage="true" isResetPageNumber="true" isReprintHeaderOnEachPage="true" keepTogether="true">
                <groupExpression><![CDATA[$F{name}]]></groupExpression>
            </group>
            <background>
                <band splitType="Stretch"/>
            </background>
            <title>
                <band height="79" splitType="Stretch"/>
            </title>
            <pageHeader>
                <band height="35" splitType="Stretch"/>
            </pageHeader>
            <columnHeader>
                <band height="20" splitType="Stretch">
                    <staticText>
                        <reportElement uuid="b78d9294-5efc-4d3a-a08b-749493ecf242" x="0" y="0" width="111" height="20"/>
                        <textElement/>
                        <text><![CDATA[name]]></text>
                    </staticText>
                    <staticText>
                        <reportElement uuid="8eeacd33-15c4-416e-981e-f8aac2586443" x="111" y="0" width="111" height="20"/>
                        <textElement/>
                        <text><![CDATA[class]]></text>
                    </staticText>
                    <staticText>
                        <reportElement uuid="dc878516-ecc7-405d-a288-ead78229e564" x="222" y="0" width="111" height="20"/>
                        <textElement/>
                        <text><![CDATA[id]]></text>
                    </staticText>
                    <staticText>
                        <reportElement uuid="0eb5c805-4358-4d85-b567-d513a318a54d" x="333" y="0" width="111" height="20"/>
                        <textElement/>
                        <text><![CDATA[goal_id]]></text>
                    </staticText>
                    <staticText>
                        <reportElement uuid="b9675b06-87ac-4441-a207-0cbd58dbf925" x="444" y="0" width="111" height="20"/>
                        <textElement/>
                        <text><![CDATA[proficiency]]></text>
                    </staticText>
                </band>
            </columnHeader>
            <detail>
                <band height="20" splitType="Stretch">
                    <textField>
                        <reportElement uuid="b284aaa5-475e-4b54-a1bd-ce4772cf79a2" isPrintRepeatedValues="false" x="0" y="0" width="111" height="20"/>
                        <textElement/>
                        <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement uuid="80f38abc-1cb3-41c0-a9c6-2473e84a8c6d" isPrintRepeatedValues="false" x="111" y="0" width="111" height="20"/>
                        <textElement/>
                        <textFieldExpression><![CDATA[$F{class}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement uuid="30a371f8-4d08-4125-8e85-497b2697e9d3" x="222" y="0" width="111" height="20"/>
                        <textElement/>
                        <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement uuid="53757283-0c03-4248-9848-1eba9ee168b7" x="333" y="0" width="111" height="20"/>
                        <textElement/>
                        <textFieldExpression><![CDATA[$F{goal_id}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement uuid="3d2bbbc0-0fe1-4442-809f-acee606db5ac" x="444" y="0" width="111" height="20"/>
                        <textElement/>
                        <textFieldExpression><![CDATA[$F{proficiency}]]></textFieldExpression>
                    </textField>
                </band>
            </detail>
            <columnFooter>
                <band height="45" splitType="Stretch"/>
            </columnFooter>
            <pageFooter>
                <band height="54" splitType="Stretch"/>
            </pageFooter>
            <summary>
                <band height="42" splitType="Stretch"/>
            </summary>
        </jasperReport>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-10-24
          • 1970-01-01
          • 1970-01-01
          • 2013-08-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多