[Gelöst] - [RTC] - RDLC Report mit Übertrag Summe

29. Mai 2013 11:21

Hi,

ich "bastel" gerade an einem RDLC Report für eine Auftragsbestätigung.
Ich möchte von Seite zu Seite den Übertrag haben. Dieser befand sich beim CC in Transheader und Transfooter.
Diese können in RDLC nicht mehr abgebildet werden, also muss gebastelt werden.

Folgendes habe ich:

Im Textkörper eine Table Group , welche einen Tabellenkopf beinhaltet wo die Artikelzeilen angedruckt werden, der jeweilige Betrag wird durch das Feld txtLineSum angedruckt mit folgendem Code:

Code:
=Code.BlankZero(Fields!Sum.Value)


Im Seitenkopf habe ich ein Textfeld mit folgendem Code:
Code:
="Übertrag = " & Code.GetRunningTotal(Globals!PageNumber-1)


Die Visibility Eigenschaft dieses Feldes ist:
Code:
=IIF(Code.GetGroupPageNumber(ReportItems!NewPage.Value,Globals!PageNumber) = 1,true,false)


Im SeitenFuß habe ich folgendes Textfeld:
Code:
="Übertrag = " & Code.SetRunningTotal(Sum(ReportItems!txtLineSum.Value), Globals!PageNumber)


welches folgende Visibility hat:
Code:
=IIF(Globals!PageNumber < Globals!TotalPages, False, True)


Im Textkörper gibt es noch ein Unsichtbares Feld mit folgenden Code:
Code:
=Code.IsNewPage(Fields!Sales_Header_Document_Type.Value,Fields!Sales_Header_No_.Value,Fields!OutputNo.Value)


Unter Berichteigenschaften -> Code habe ich folgendes:

Code:
Public Function GetGroupPageNumber(NewPage as Boolean, pagenumber as Integer) as Object
  If NewPage
    offset = pagenumber - 1
    RunningTotals.Clear()
  End If
  Return pagenumber - offset
End Function

Public Function IsNewPage(group1 as Object, group2 as Object, group3 as Object) As Boolean
newPage = FALSE
If Not (group1 = currentgroup1)
    newPage = TRUE
    currentgroup1 = group1
    currentgroup2 = group2
    currentgroup3 = group3
     ELSE
      If Not (group2 = currentgroup2)
        newPage = TRUE
        currentgroup2 = group2
        currentgroup3 = group3
        ELSE
          If Not (group3 = currentgroup3)
          newPage = TRUE
          currentgroup3 = group3
         End If
     End If
  End If
Return newPage
End Function

Shared RunningTotals As New System.Collections.Hashtable

Public Function GetRunningTotal(ByVal CurrentPageNumber)
   Return IIF(CurrentPageNumber > 0, RunningTotals(CurrentPageNumber), 0)
End Function

Public Function SetRunningTotal(ByVal CurrentPageTotal, ByVal CurrentPageNumber)
   RunningTotals(CurrentPageNumber) = CurrentPageTotal + GetRunningTotal(CurrentPageNumber - 1)
   Return RunningTotals(CurrentPageNumber)
End Function



Das funktioniert alles gut, solange man keine Kopie des Berichts möchte.
Sprich, auf der ersten Seite wird der Übertrag im Seitenfuss gedruckt, auf der zweiten Seite im Kopf und im Fuss, auf der dritten Seite nur im Kopf)

Möchte man den Bericht mit einer Kopie passiert folgendes :
Bericht hat 3 Seiten.

Original:
Übertrag wird auf Seite 1 im Fuss gedruckt, auf Seite 2 in Kopf und Fuss, auf Seite 3 in Kopf und Fuss. (Die Überträge stimmen)
Auf Seite 1 der Kopie wird der Übertrag auch wieder nur im Fuss gedruckt, und der Übertrag stimmt auch mit der Summe dieser Seite überein
(weil wenn if NewPage RunningTotals.Clear() ausgeführt wird, bzw. bei neuer Seite die verwendete Hashtable zurückgesetzt wird) .
Auf Seite 2 der Kopie wird der Übertrag auch richtig im Kopf und Fuss angedruckt. Und auf Seite 3 der Kopie wird richtigerweise der Übertrag nur im Kopf angedruckt (weil letzte Seite).


Mein Problem ist also der Übertrag im SeitenFuss der letzten Seite des Original. Das möchte ich dort weg haben.

Mein erster Gedanke war zu prüfen ob die GroupPage die letzte ist, aber das lässt sich scheinbar nur schwer bis gar nicht ermitteln?
Dann habe ich versucht zu ermitteln ob die nächste GroupPage = 1 ist, und wenn das zutreffen würde, dann sollte er nicht drucken, aber das bekomme ich auch nicht hin.

Wie könnte ich das lösen?

Danke
Zuletzt geändert von elTorito am 29. Mai 2013 14:40, insgesamt 1-mal geändert.

Re: [RTC] - RDLC Report mit Übertrag Summe

29. Mai 2013 11:31

Hi,

in einer meiner Lösungen habe ich die folgende Hidden-Eigenschaft für die Seitensumme unten verwendet:
Code:
=Not IsNothing(ReportItems!InvoiceTotalTextBox.Value)

Wobei ReportItems!InvoiceTotalTextBox die TextBox ist, in der die Gesamtsumme der Rechnung angedruckt wird, was ja nur auf der jeweils letzten Seite passiert.

Re: [RTC] - RDLC Report mit Übertrag Summe

29. Mai 2013 14:39

Hallo Carsten,

SilverX hat geschrieben:Hi,
in einer meiner Lösungen habe ich die folgende Hidden-Eigenschaft für die Seitensumme unten verwendet:
Code:
=Not IsNothing(ReportItems!InvoiceTotalTextBox.Value)

Wobei ReportItems!InvoiceTotalTextBox die TextBox ist, in der die Gesamtsumme der Rechnung angedruckt wird, was ja nur auf der jeweils letzten Seite passiert.


so habe ich das jetzt auch gemacht.

Vielen Dank

Re: [Gelöst] - [RTC] - RDLC Report mit Übertrag Summe

29. Mai 2013 15:14

Wer die gesamte Umsetzung gern mit Screenshots (und auf Englisch) sehen möchte, wird hier fündig: http://blogs.msdn.com/b/nav/archive/201 ... sited.aspx