Не могу сгенерировать подотчет в JasperReports из кода Java - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть проблема с генерацией подотчета в JasperReports.У меня есть 2 отчета, которые я сделал в iReport.

Основной отчет:

<?xml version="1.0" encoding="UTF-8"?>
<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="raporcik" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="autor" class="java.lang.String"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA["C:\\Documents and Settings\\user\\workspace\\Jasper\\report\\"]]></defaultValueExpression>
</parameter>
<field name="name" class="java.lang.String"/>
<background>
    <band splitType="Stretch"/>
</background>
<title>
    <band height="79" splitType="Stretch">
        <staticText>
            <reportElement x="242" y="31" width="115" height="28"/>
            <textElement>
                <font size="18"/>
            </textElement>
            <text><![CDATA[Something]]></text>
        </staticText>
        <textField>
            <reportElement x="439" y="59" width="100" height="20"/>
            <textElement/>
            <textFieldExpression class="java.lang.String"><![CDATA[$P{autor}]]></textFieldExpression>
        </textField>
    </band>
</title>
<pageHeader>
    <band height="35" splitType="Stretch"/>
</pageHeader>
<detail>
    <band height="28" splitType="Stretch"/>
    <band height="50">
        <subreport>
            <reportElement x="46" y="0" width="200" height="50"/>
            <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
            <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "info.jasper"]]></subreportExpression>
        </subreport>
    </band>
</detail>
<summary>
    <band height="42" splitType="Stretch"/>
</summary>

Второй отчет (подотчет):

<?xml version="1.0" encoding="UTF-8"?>
<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="info" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<field name="name" class="java.lang.String"/>
<background>
    <band splitType="Stretch"/>
</background>
<detail>
    <band height="52" splitType="Stretch">
        <textField>
            <reportElement x="37" y="12" width="100" height="20"/>
            <textElement/>
            <textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
        </textField>
    </band>
</detail>
</jasperReport>

ИКод Java:

Код в методе Main:

    JasperDesign jsp = JRXmlLoader.load("C:/Documents and Settings/user/workspace/Jasper/report/raporcik.jrxml");       
    JasperCompileManager.compileReportToFile("C:/Documents and Settings/user/workspace/Jasper/report/info.jrxml");      
    JasperReport jasperReport = JasperCompileManager.compileReport(jsp);        

    Map<String, Object> parametros = new HashMap<String, Object>();
    parametros.put("autor", "Jasper W.");
    parametros.put("SUBREPORT_DIR","C:/Documents and Settings/user/workspace/Jasper/report/");
    List lista = new ArrayList();
    lista.add(new Name("something1"));
    lista.add(new Name("something2"));

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametros, new JRBeanCollectionDataSource(lista));    


    JRExporter exporter = new JRPdfExporter();
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_FILE, new java.io.File("C:/Documents and Settings/user/workspace/Jasper/report/hello.pdf"));
    exporter.exportReport();    

И имя класса:

 public class Name {

String name;

public Name(){

}

public Name(String _name){
    this.name = _name;      
}   

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}

Я не знаю, что яЯ делаю неправильно, но не могу создать подотчет.Это всегда пусто.У меня та же проблема, когда подотчет содержит только статический текст.

Ответы [ 2 ]

0 голосов
/ 10 июля 2014

Ваш подотчет пуст, вероятно, потому что у вас нет источника данных или запроса в JRXML вашего подотчета или основного отчета.Вы можете найти больше информации в этом ответе .В нем есть именно то, что вам нужно для использования вашего подчиненного отчета только со статическими полями.

Таким образом, ваша проблема связана не с вложенными отчетами, а с тем, как среда Jasper Reports создает отчеты.

0 голосов
/ 21 ноября 2011

Я несколько дней пытался заставить работать подчиненные отчеты, и хотя я точно следовал документу, это не сработало.

ИМХО "подчиненные отчеты" на самом деле не работают.

...