# JasperReport leerer Subreport



## wuida (10. Januar 2008)

Hallo,

ich habe das Problem, dass ich ein MasterReport und SubReport hab, der aber nicht angezeigt wird. Habe nun schon einfach mal getestet ob er mir ein Subreport mit nur statischem Text anzeigen würde, aber ausser dem Master kommt nichts. Nur ne leere Seite. Ich versteh nicht warum er es mir nicht anzeigt. Bin auch recht neu auf diesem Gebiet und hoffe ihr könnt mir helfen. 

Aus dem MasterReport:



```
<summary>
			<band height="40"  isSplitAllowed="true" >
				<subreport  isUsingCache="true">
					<reportElement
						x="0"
						y="4"
						width="535"
						height="31"
						key="subreport-1"
						isRemoveLineWhenBlank="true"
						isPrintWhenDetailOverflows="true"/>
					<subreportExpression  class="java.lang.String"><![CDATA["test.jasper"]]></subreportExpression>
				</subreport>
			</band>
		</summary>
```


Der Subreport:


```
<?xml version="1.0" encoding="UTF-8"  ?>
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
		 name="test"
		 columnCount="1"
		 printOrder="Vertical"
		 orientation="Portrait"
		 pageWidth="595"
		 pageHeight="842"
		 columnWidth="535"
		 columnSpacing="0"
		 leftMargin="30"
		 rightMargin="30"
		 topMargin="20"
		 bottomMargin="20"
		 whenNoDataType="NoPages"
		 isTitleNewPage="false"
		 isSummaryNewPage="false">
	<property name="ireport.scriptlethandling" value="0" />
	<property name="ireport.encoding" value="UTF-8" />
	<import value="java.util.*" />
	<import value="net.sf.jasperreports.engine.*" />
	<import value="net.sf.jasperreports.engine.data.*" />


		<background>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</background>
		<title>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</title>
		<pageHeader>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</pageHeader>
		<columnHeader>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</columnHeader>
		<detail>
			<band height="29"  isSplitAllowed="true" >
				<staticText>
					<reportElement
						x="40"
						y="5"
						width="465"
						height="22"
						key="staticText-1"
						stretchType="RelativeToTallestObject"
						isRemoveLineWhenBlank="true"
						isPrintInFirstWholeBand="true"
						isPrintWhenDetailOverflows="true"/>
					<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
					<textElement>
						<font size="14"/>
					</textElement>
				<text><![CDATA[Hier sollte doch was stehen.]]></text>
				</staticText>
			</band>
		</detail>
		<columnFooter>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</columnFooter>
		<pageFooter>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</pageFooter>
		<summary>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</summary>
</jasperReport>
```

Die Methode:


```
static JasperPrint generateSCL90() throws JRException
	{
		para.clear();
		para.put("Field", "X");
		JasperCompileManager.compileReportToFile("test.jrxml","test.jasper"); 
		jas = JasperCompileManager.compileReport("SCL90.jrxml");
		jasp = JasperFillManager.fillReport(jas, para, new JREmptyDataSource());
		return jasp;
	}
```

Danke schonmal. Und es wär recht wichtig das endlich mal hinzubekommen.


----------



## maza (10. Januar 2008)

Hi, machst du den Report mit IReport?
Auf der Sourceforge - Seite gibts einen Flashfilm wie erklärt wird korrekt einen Master mit einem Subreport zu erstellen.. falls das dir weiterhilft..wenn du das nur in html programmierst.. uha... da brauchst ja ewig...


----------



## maza (10. Januar 2008)

Aber ein Problem was mir grad einfällt.. du musst deinem Subreport einen oder mehrere Parameter übergeben.. sonst wirds nix..


----------



## wuida (10. Januar 2008)

Also zum ersten. Ja ich nehme iReport her und habe das meines Erachtens auch so gemacht wie es in dem tutorial gezeigt wird. 
Und zum zweiten. Was für Parameter muss ich denn übergeben wenn ich im Subreport weder ne Connection noch irgendwelche Parameter verwende? Steh da echt n bisschen aufm Schlauch.
Und danke für die rasche Antwort.


----------



## maza (14. Januar 2008)

Also des Problem bei Ireport is das der Compiler mit der Fehleranalyse noch sehr ungenau is.
Aber du musst für jeden Subreport einen Parameter übergeben sonst gibt er nix aus.
Ein Beispiel:
Ich will für eine bestimmte Firma Daten anzeigen lassen. Dies mach ich über den PrimaryKey (z.b. cpy_nrid)
dann musst du erstens diesen Parameter an deinen Subreport weiterreichen. Dies machst du indem du auf den Subreport klickst dann auf "Subreport (anderer)" und dann unten im Reiter Subreport Paramter den Parameter reinschreibst.  Als Ausdruck verwendest du dann das Feld.. zb $F{cpy_nrid}
und dann musst du noch in deinem Subreport sheed bei Parametern genau diesen Parameter einfügen damit er den erkennt und zuweisen kann.
Und dann sollte noch im SQL-Statement z.b sowas stehn..


```
SELECT
so0.adresse AS "CPY_STREET1",
so0.code_post AS "CPY_POSTCODE",
so0.loc AS "CPY_CITY",
so0.pays AS "CPY_COUNTRY",
so0.tel1 AS "CPY_PHONE",
so0.fax AS "CPY_FAX",
so0.titulaire AS "CPY_OWNER"
FROM mrdata.so0
WHERE (so0.TEMPLATE IS NULL)
AND so0.nrid = $P{CPY_NRID}
order by so0.societe
```

da fragst du die Nummer ab bzw sagst man soll eine von Hand eingeben...

Falls du dadurch das Problem immer noch nicht lösen kansnt kann die Einstellung der Felder vll ein Problem sein. Es müssen bis auf die ersten alle "Fließend" sein und evtl auch vergrößern mit Überlauf weil sonst wird nichts angezeigt.

Hoffe ich kann dir damit helfen


----------

