2

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

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

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

谢谢

4

4 回答 4

1

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

于 2012-12-18T22:08:05.357 回答
0

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

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

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

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

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

然后当然你需要添加到你的数据集的 where 子句中

where $P{student_id} = student_id

于 2012-12-26T22:38:02.323 回答
0

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

Like:  where student_id=$P{p_student_id}

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

于 2012-12-27T06:34:58.130 回答
0

假设您的查询是由学生订购的更简单的方法。在 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>
于 2013-06-13T20:50:05.963 回答