@ -426,6 +426,8 @@ isIgnorePagination="{$isIgnorePagination}" >
@@ -426,6 +426,8 @@ isIgnorePagination="{$isIgnorePagination}" >
<xsl:param name= "ergebniselementOrdnr" />
<xsl:param name= "colId" />
<xsl:param name= "colCount" />
<xsl:param name= "isLastVisibleColumInRow" />
<xsl:variable name= "x" > <xsl:text > 0</xsl:text>
<xsl:for-each select= "/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]/sqlerg/headers/header[ @width > 0 and not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next')) and @id < $colId ]" >
<xsl:variable name= "previousColumnWidth" >
@ -436,6 +438,7 @@ isIgnorePagination="{$isIgnorePagination}" >
@@ -436,6 +438,7 @@ isIgnorePagination="{$isIgnorePagination}" >
<xsl:with-param name= "colId" select= "@id" />
<xsl:with-param name= "colCount" select= "$colCount" />
<xsl:with-param name= "previousX" select= "0" />
<xsl:with-param name= "isLastVisibleColumInRow" select= "''" />
</xsl:call-template>
</xsl:variable>
@ -455,14 +458,17 @@ isIgnorePagination="{$isIgnorePagination}" >
@@ -455,14 +458,17 @@ isIgnorePagination="{$isIgnorePagination}" >
<xsl:param name= "colId" />
<xsl:param name= "colCount" />
<xsl:param name= "previousX" />
<xsl:param name= "isLastVisibleColumInRow" />
<xsl:variable name= "defbreite" > <xsl:value-of select= "sum(/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]/sqlerg/headers/header[ @width > 0 and not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next')) ]/@width )" /> </xsl:variable>
<xsl:variable name= "ndefbreite" > <xsl:value-of select= "count(/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]/sqlerg/headers/header[ @width = '' and not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next'))])" /> </xsl:variable>
<xsl:variable name= "gesamtbreite" > <xsl:value-of select= "$defbreite+($ndefbreite* $std_spaltenbreite)" /> </xsl:variable>
<xsl:variable name= "width" > <xsl:value-of select= "/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]/sqlerg/headers/header[@id=$colId]/@width" /> </xsl:variable>
<xsl:comment > <xsl:value-of select= "concat('defbreite=',$defbreite)" /> </xsl:comment>
<xsl:choose >
<xsl:when test= "($colCount - 1) =$colId " >
<!-- letzte Spalte -->
<xsl:when test= "$isLastVisibleColumInRow='+' or ($colCount - 1) =$colId" >
<!-- letzte Spalte wird immer vom rechten Seitenrand minus vorherige Spalten gerechnet,
weil es Rundungsfehler bei der Spaltenbreite geben kann.-->
<xsl:value-of select= "$druckbreite - $previousX" />
</xsl:when>
<xsl:when test= "$width != ''" >
@ -643,7 +649,7 @@ isIgnorePagination="{$isIgnorePagination}" >
@@ -643,7 +649,7 @@ isIgnorePagination="{$isIgnorePagination}" >
<xsl:variable name= "colCount" >
<xsl:choose >
<xsl:when test= "($rowCounter - 1)=$rowCount" >
<xsl:value-of select= "$total ColCount" />
<xsl:value-of select= "$currentRow ColCount" />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "$totalColCount" />
@ -653,8 +659,18 @@ isIgnorePagination="{$isIgnorePagination}" >
@@ -653,8 +659,18 @@ isIgnorePagination="{$isIgnorePagination}" >
<xsl:for-each select= "th" >
<xsl:variable name= "colId" > <xsl:value-of select= "position()-1" /> </xsl:variable>
<xsl:if test= "@isHidden='false'" >
<xsl:comment > <xsl:text > colId=</xsl:text> <xsl:value-of select= "$colId" /> </xsl:comment>
<xsl:if test= "@isHidden='false'" >
<xsl:variable name= "isLastVisibleColumInRow" >
<xsl:call-template name= "getLastVisibleColumInRow" >
<xsl:with-param name= "currentColId" select= "$colId" />
<xsl:with-param name= "remainingRows" select= "$rowCount - ($rowCounter + 1)" />
</xsl:call-template>
</xsl:variable>
<xsl:comment > <xsl:text > colId=</xsl:text> <xsl:value-of select= "$colId" />
<xsl:text >
isLastVisibleColumInRow=</xsl:text> <xsl:value-of select= "$isLastVisibleColumInRow" />
</xsl:comment>
<xsl:variable name= "columnX" >
<xsl:call-template name= "getColumnX" >
<xsl:with-param name= "druckbreite" select= "$druckbreite" />
@ -662,6 +678,7 @@ isIgnorePagination="{$isIgnorePagination}" >
@@ -662,6 +678,7 @@ isIgnorePagination="{$isIgnorePagination}" >
<xsl:with-param name= "ergebniselementOrdnr" select= "$ordnr" />
<xsl:with-param name= "colId" select= "$colId" />
<xsl:with-param name= "colCount" select= "$colCount" />
<xsl:with-param name= "isLastVisibleColumInRow" select= "$isLastVisibleColumInRow" />
</xsl:call-template>
</xsl:variable>
<xsl:comment > <xsl:text > columnX=</xsl:text> <xsl:value-of select= "$columnX" /> </xsl:comment>
@ -675,6 +692,7 @@ isIgnorePagination="{$isIgnorePagination}" >
@@ -675,6 +692,7 @@ isIgnorePagination="{$isIgnorePagination}" >
<xsl:with-param name= "colId" select= "$colId" />
<xsl:with-param name= "colCount" select= "$colCount" />
<xsl:with-param name= "previousX" select= "$columnX" />
<xsl:with-param name= "isLastVisibleColumInRow" select= "$isLastVisibleColumInRow" />
</xsl:call-template>
</xsl:variable>
@ -700,10 +718,22 @@ isIgnorePagination="{$isIgnorePagination}" >
@@ -700,10 +718,22 @@ isIgnorePagination="{$isIgnorePagination}" >
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "computedWidth" >
<!-- wenn eine Spalte die letzte sichtbare ist, wird der berechnete Wert
genommen. Wenn nicht, wird mit colspan multipliziert.-->
<xsl:choose >
<xsl:when test= "$isLastVisibleColumInRow='+'" >
<xsl:value-of select= "$columnWidth" />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "$columnWidth * $colspan" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<textField isStretchWithOverflow= "true" >
<reportElement style= "TableColumnHeader" mode= "Opaque" stretchType= "ContainerHeight"
x="{$columnX}" y="{$y_offset+( $rowCounter * $zeilenhoehe )}" width="{$columnWidth * $colspan}" height="{$zeilenhoehe*$rowspan}" />
x="{$columnX}" y="{$y_offset+( $rowCounter * $zeilenhoehe )}" width="{$computedWidth }" height="{$zeilenhoehe*$rowspan}" />
<textFieldExpression > <xsl:text > "</xsl:text>
<xsl:call-template name= "newline_to_backslash_n" >
<xsl:with-param name= "string" select= "." />
@ -1100,4 +1130,20 @@ isIgnorePagination="{$isIgnorePagination}" >
@@ -1100,4 +1130,20 @@ isIgnorePagination="{$isIgnorePagination}" >
<xsl:text disable-output-escaping= "yes" > <![CDATA[ +"Datenstand: "+ $F{standdatum} + "; " + "Erstellt: "+ DATEFORMAT( TODAY(), "dd.MM.YYYY")]]> </xsl:text> </textFieldExpression>
</textField>
</xsl:template>
<xsl:template name= "getLastVisibleColumInRow" >
<xsl:param name= "currentColId" />
<xsl:param name= "remainingRows" />
<!-- ermittelt ob eine Spalte die letzte sichtbare ist
bei verknüpften Spalten ist die letzte Header-Zeile immer relevant, egal ob sichtbar oder nicht.
Zurückgegeben werden die Anzahl der sichtbaren Zellen als "+",
d.h. genau ein "+" bedeutet, dass es die letzte Spalte ist.
-->
<xsl:for-each select= "../th" >
<xsl:variable name= "nr" select= "position()" />
<xsl:if test= "$nr > $currentColId and (@isHidden='false' or $remainingRows=0)" >
<xsl:text > +</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>