2012-12-12 10 views
14

Ich habe eine JasperReport wo ich den Bericht Datum von einem Hauptbericht zu einem Unterbericht übergebe. Das funktioniert gut. Ich habe auch einen anderen, wo ich den gleichen Parameter an einen Unterbericht übergebe, der mehrere Unterberichte hat. Wenn ich es in Ireports vorschaue, erscheinen alle Seiten leer, was bedeutet, dass die Sub-Sub-Berichte aufgerufen werden, aber der Report Date nicht übergeben wird, da alle Sub-Sub-Report-SQL vom Report Date abhängig sind. Wie kann ich das Feld "Datum" des Berichts in die Sub-Unterberichte aufnehmen? Wenn ich den SubReport in der Vorschau anschaue und den Berichtsdatum eintippe, arbeiten alle Berichtsdaten. Alle vier Seiten sind mit den korrekten Daten gefüllt.Übergeben von Parametern von Hauptbericht zu Unterbericht in Jasper

Antwort

13

Meine Vermutung ist, dass sie einen Standardwert verwenden.

den Namen des Parameters im Hauptbericht Unter der Annahme TEST_DATE und der Name in dem Sub-Bericht ist TEST_DATE2 dann müssen Sie die zwischen der Öffnung folgende in hinzufügen und subreport Elementen in dem XML-Schließung:

<subreportParameter name="TEST_DATE2"> 
    <subreportParameterExpression><![CDATA[$P{TEST_DATE}]]></subreportParameterExpression> 
</subreportParameter> 

Der Vollständigkeit halber ist hier ein Beispiel, das einen Hauptbericht und einen Unterbericht hat, die funktionieren sollten, indem Sie einfach den Wert für SUBREPORT_DIR so ändern, dass er auf den Ort verweist, an dem Sie sie platziert haben.

report1.jrxml

<?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="report1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="7e2bc622-d768-437e-8c33-fc777bc06f8c"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <parameter name="TEST_DATE" class="java.util.Date"/> 
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> 
     <defaultValueExpression><![CDATA["C:\\Reports\\"]]></defaultValueExpression> 
    </parameter> 
    <pageHeader> 
     <band height="83" splitType="Stretch"> 
      <textField> 
       <reportElement uuid="4a2cf434-4473-48db-a89f-17a19d25cc4c" x="0" y="0" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{TEST_DATE}]]></textFieldExpression> 
      </textField> 
      <subreport> 
       <reportElement uuid="54c02e96-6d47-49db-9b9c-58e1dd153242" x="0" y="30" width="200" height="35"/> 
       <subreportParameter name="TEST_DATE2"> 
        <subreportParameterExpression><![CDATA[$P{TEST_DATE}]]></subreportParameterExpression> 
       </subreportParameter> 
       <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "report1_subreport1.jasper"]]></subreportExpression> 
      </subreport> 
     </band> 
    </pageHeader> 
</jasperReport> 

report1_subreport1.jrxml

<?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="report1_subreport1" language="groovy" pageWidth="200" pageHeight="35" whenNoDataType="AllSectionsNoDetail" columnWidth="200" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="3cedac90-63cb-43cb-9d0f-e401543e65dd"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <parameter name="TEST_DATE2" class="java.util.Date" isForPrompting="false"/> 
    <pageHeader> 
     <band height="35" splitType="Stretch"> 
      <textField> 
       <reportElement uuid="ca7f3da6-79f0-4d95-92db-6c5dbf777df9" x="0" y="15" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{TEST_DATE2}]]></textFieldExpression> 
      </textField> 
     </band> 
    </pageHeader> 
</jasperReport> 
23

Gehen Sie folgendermaßen Parameter in subreports weitergeben müssen:

  1. Hauptbericht Parameter erstellen, so als DATE_PARAM.
  2. Unterbericht öffnen und einen Parameter mit demselben Namen und demselben Typ erstellen.
  3. zu Hauptbericht
  4. Rechtsklick auf Gehen Sie zurück auf die Unter Bericht, wählen Sie Eigenschaften
  5. wählen Parameter
  6. hinzufügen Parameter aus Hauptbericht Unter Bericht mit Parameternamen denselben Parameternamen

Der Parameter wird vom Hauptbericht an den Unterbericht übergeben.

11

Wenn Sie iReport verwenden, Berichte erstellen dann den Hauptbericht in iReport öffnen und wählen Sie Subreport und gehen Sie zum property Abschnitt des Berichts, klicken Sie auf Parameters Eigenschaft, und klicken Sie auf Copy from master Registerkarte. Von dort können Sie die Parameter auswählen, die Sie an den Unterbericht übergeben möchten.

+0

Wow! Es hat wirklich funktioniert! Danke vielmals – Gray

Verwandte Themen