Я сделал отчет из яшмы, который включает вложенный отчет, используя JasperSoft Studio. Когда я просматриваю его в студии, он работает нормально. Но когда я добавляю его в свой проект java fx, мне нужно отправить подотчет в качестве параметра в основной отчет, верно?
Когда я это делаю, я продолжаю получать сообщение об ошибке о том, что ресурс подотчета не найден. Я не думаю, что есть какие-либо орфографические ошибки, потому что я пробовал это почти со всеми отчетами, которые включают вложенные отчеты ... все еще продолжаю получать эту ошибку ..
Это то, что я пробовал: 1. снова скомпилировал отчет с помощью студии jaspersoft и снова включил их в проект. 2. включил файл jrxml в проект и скомпилировал его с помощью диспетчера компиляции. 3. Я прочитал несколько руководств и вопросы о том, чтобы поместить выражение в элемент подотчета в основном отчете как
$ P {SUBREPORT_DIR} + "subreport_2.jasper"
но я все еще получаю ту же ошибку, и я не знаю, что делаю не так. Ниже мой код
метод в приложении, используемый для просмотра отчета
@FXML
public void btnMarkingSchemeClicked(ActionEvent actionEvent) {
try {
// JasperReport compiledReport = (JasperReport) JRLoader.loadObject(ViewAssignmentsController.class.getResourceAsStream("/edu/ijse/gdse41/ams/reports/MarkingScheme.jasper"));
JasperReport compiledReport = JasperCompileManager.compileReport(ViewAssignmentsController.class.getResourceAsStream("/edu/ijse/gdse41/ams/reports/MarkingScheme.jrxml"));
HashMap<String, Object> parameters = new HashMap<>();
parameters.put("assignID", aid);
parameters.put("course", cmbCourse.getSelectionModel().getSelectedItem().toString());
parameters.put("subject", cmbSub.getSelectionModel().getSelectedItem().toString());
parameters.put("semester", cmbSem.getSelectionModel().getSelectedItem().toString());
parameters.put("assign", ctrlAssign.search(aid).getAssignName());
// JasperReport subReport = (JasperReport) JRLoader.loadObject(ViewAssignmentsController.class.getResourceAsStream("/edu/ijse/gdse41/ams/reports/Answers.jasper"));
JasperReport subReport = JasperCompileManager.compileReport(ViewAssignmentsController.class.getResourceAsStream("/edu/ijse/gdse41/ams/reports/Answers.jrxml"));
parameters.put("subReport", subReport);
JasperPrint fillReport = JasperFillManager.fillReport(compiledReport, parameters, ConnectionFactory.getInstance().getConnection());
JasperViewer.viewReport(fillReport, false);
} catch (JRException | SQLException | ClassNotFoundException ex) {
Logger.getLogger(ViewAssignmentsController.class.getName()).log(Level.SEVERE, null, ex);
}
}
мой основной источник отчета - MarkingScheme.jrxml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.3.1.final using JasperReports Library version 6.3.1 -->
<!-- 2017-06-02T12:52:20 -->
<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="MarkingScheme" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="c71b946b-2ba2-4208-97f8-f32e8bcf3fb4">
<property name="com.jaspersoft.studio.data.sql.tables" value=""/>
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="amsAdapter"/>
<parameter name="course" class="java.lang.String"/>
<parameter name="subject" class="java.lang.String"/>
<parameter name="semester" class="java.lang.String"/>
<parameter name="assign" class="java.lang.String"/>
<parameter name="assignID" class="java.lang.String">
<defaultValueExpression><![CDATA[$P{assignID}]]></defaultValueExpression>
</parameter>
<parameter name="subReport" class="net.sf.jasperreports.engine.JasperReport">
<parameterDescription><![CDATA[]]></parameterDescription>
<defaultValueExpression><![CDATA[$P{subReport}]]></defaultValueExpression>
</parameter>
<queryString language="SQL">
<![CDATA[SELECT ams.question.qid,
ams.question.question,
ams.assign_ques.aid
FROM ams.assign_ques
INNER JOIN ams.question ON
ams.assign_ques.qid = ams.question.qid and ams.assign_ques.aid=$P{assignID}]]>
</queryString>
<field name="qid" class="java.lang.String"/>
<field name="question" class="java.lang.String"/>
<field name="aid" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<staticText>
<reportElement mode="Opaque" x="0" y="0" width="555" height="79" forecolor="#FFFFFF" backcolor="#113891" uuid="52ed193a-ed11-46ba-a09f-1864b843df96"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font size="29" isBold="true"/>
</textElement>
<text><![CDATA[ Marking Scheme]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band height="80" splitType="Stretch">
<staticText>
<reportElement x="0" y="0" width="80" height="40" uuid="55b35bb0-5ea8-4417-88be-0083cfee5037"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font size="14"/>
</textElement>
<text><![CDATA[Course]]></text>
</staticText>
<staticText>
<reportElement x="0" y="40" width="80" height="40" uuid="1dc04c2d-9cde-4905-9650-03cc96d406e3"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font size="14"/>
</textElement>
<text><![CDATA[Semester]]></text>
</staticText>
<staticText>
<reportElement x="260" y="0" width="100" height="40" uuid="4de2dbe2-bb88-4dbf-88d7-16b36bba8fb4"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font size="14"/>
</textElement>
<text><![CDATA[Subject]]></text>
</staticText>
<staticText>
<reportElement x="260" y="40" width="100" height="40" uuid="bb91c5d3-4cde-45eb-8083-012fe6183396"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font size="14"/>
</textElement>
<text><![CDATA[Assignment]]></text>
</staticText>
<textField>
<reportElement x="90" y="0" width="160" height="40" forecolor="#123278" uuid="8016c655-1bea-480a-9179-3da4e1e930ad"/>
<textElement verticalAlignment="Middle">
<font size="13"/>
</textElement>
<textFieldExpression><![CDATA[$P{course}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="370" y="0" width="170" height="40" forecolor="#123278" uuid="23e58b4b-0bf1-41ae-89f0-48808a0abdd9"/>
<textElement verticalAlignment="Middle">
<font size="13"/>
</textElement>
<textFieldExpression><![CDATA[$P{subject}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="90" y="40" width="160" height="40" forecolor="#123278" uuid="650c412a-0c42-4dea-a96f-35d03c11c926"/>
<textElement verticalAlignment="Middle">
<font size="13"/>
</textElement>
<textFieldExpression><![CDATA[$P{semester}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="370" y="40" width="170" height="40" forecolor="#123278" uuid="c8cbea5b-afb3-4c85-a96a-156d1c82fb50"/>
<textElement verticalAlignment="Middle">
<font size="13"/>
</textElement>
<textFieldExpression><![CDATA[$P{assign}]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<columnHeader>
<band height="30" splitType="Stretch">
<staticText>
<reportElement x="0" y="0" width="100" height="30" uuid="f7b84a13-8e80-4c9c-8888-3b081f9d0f55"/>
<textElement>
<font size="16" isBold="true"/>
</textElement>
<text><![CDATA[Questions]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="41" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="80" height="20" uuid="9f05a7d2-ac5f-4412-b26b-ab37033cc0fe"/>
<textElement verticalAlignment="Middle">
<font size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{qid}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="440" height="20" uuid="a299bfe0-a0d1-4aae-8f75-5b58d24b1760"/>
<textElement verticalAlignment="Middle">
<font size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{question}]]></textFieldExpression>
</textField>
<subreport>
<reportElement x="100" y="20" width="440" height="20" uuid="72f8c7c2-82ca-48d3-bb89-d5bb4846e1bc"/>
<subreportParameter name="qid">
<subreportParameterExpression><![CDATA[$F{qid}]]></subreportParameterExpression>
</subreportParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<subreportExpression><![CDATA["Answers.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>
</jasperReport>
источник моего подотчета - Answers.jrxml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.3.1.final using JasperReports Library version 6.3.1 -->
<!-- 2017-06-02T12:53:52 -->
<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="Answers" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="142adbc1-da50-458b-b076-ba8aa716124f">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="amsAdapter"/>
<property name="com.jaspersoft.studio.data.sql.tables" value="YW1zLmFuc3dlciAsMTUsMTUsOGE1MjQ1NzQtOGY1ZS00ZWY4LWFiMDAtOWVjYmVmNmU0MTFjOw=="/>
<parameter name="qid" class="java.lang.String">
<defaultValueExpression><![CDATA[$P{qid}]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[SELECT ams.answer.answer_id,
ams.answer.answer,
ams.answer.correctness,
ams.answer.qid
FROM ams.answer where ams.answer.qid=$P{qid} and ams.answer.correctness=1]]>
</queryString>
<field name="answer_id" class="java.lang.String"/>
<field name="answer" class="java.lang.String"/>
<field name="correctness" class="java.lang.Boolean"/>
<field name="qid" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="80" height="20" uuid="517ba9e8-6637-4808-8517-1485d4125971"/>
<textElement>
<font size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{answer_id}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="90" y="0" width="460" height="20" uuid="4384510c-5dea-47a0-b24b-d4b3bd4088fc"/>
<textElement>
<font size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{answer}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
ошибка, которую я получаю
Это потому, что даже если вы создали параметр под названием «subReport», он нигде не использовался.