PDA

Vollständige Version anzeigen : Problem: Berechnen einer Zwischensumme pro Berichtsseite ...


mark-williams
11.07.2006, 14:58
Hallo!

Ich habe ein Problem: Ich habe einen Bericht aus einer Abfrage erstellt. Nun möche ich
gerne die Summe einer Spalte berechnen. Und zwar sollte das die Zwischensumme der
Spalte pro Berichtsseite sein. Ich habe dazu schon mehrere Lösungen ausprobiert,
aber entweder ich habe sie nicht hinbekommen oder das Ergebnis stimmte nicht :(.
Folgender Lösungsansatz sollte angeblich richtig sein:
Angenommen du hast ein Feld "Preis", von dem du auf jeder Seite
des Berichtes unten
eine Zwischensumme anzeigen willst und auf der Folgeseite oben einen entsprechenden Übertrag:

1. Im Detailbereich legst du ein zusätzliches Feld "LaufSumme" an
mit Steuerelementinhalt =[Preis] ...
Die Eigenschaft Laufende Summe des Steuerelementes stellst du
auf über Alles, Sichtbar auf Nein.

2. Im Seitenfuss erzeugst du ein Feld "Zwischensumme"
mit Steuerelementinhalt =[LaufSumme]

3. Im Seitenkopf erzeugst du ein ungebundenes Feld "Uebertrag".

4. Im Ereigniscode Beim Formatieren des Seitenfusses schreibst du:
Me!Uebertrag = Me!Zwischensumme

5. Damit nicht schon auf der ersten Seite ein Übertrag 0,- sichtbar ist,
stellst du die Eigenschaft Seitenkopf des Berichtes auf Ausser Berichtskopf.
Analog dazu stellst du Seitenfuss auf Ausser Berichtsfuss.
Wenn ich das aber mache, gibt er mir im Seitenfuß immer nur die Fortlaufende Summe
aus und im Seitenkopf den Übertrag. Das richtie Ergebnis wäre logischerweise
Fortlaufenende Summe - Übertrag. Das funktioniert aber leider nicht.

Wisst ihr woran das liegt??

Vielen Dank, mfg Mark

SWR
11.07.2006, 17:53
Der Berichts-Code:

Option Compare Database
Dim SummeBlatt As Double, SummeUebertrag As Double

' - Einfacher Endlos-Bericht, keine Gruppierungen
' - Angelegt für eine zu summierende Währung, daher im folg. "double"

' 1. Im Seitenkopf ein ungeb. Textfeld - Name: Uebertrag
' 2. Im Seitenfuß ein ungeb. Textfeld - Name: Blattsumme
' 3. Das gebundene Feld im Detailbereich heißt hier "Betrag"

Private Sub Detailbereich_Print(Cancel As Integer, PrintCount As Integer)
SummeBlatt = SummeBlatt + Me!Betrag
End Sub

Private Sub Seitenfußbereich_Print(Cancel As Integer, PrintCount As Integer)
Me!Blattsumme = SummeBlatt
SummeUebertrag = SummeUebertrag + SummeBlatt
SummeBlatt = 0 'sorgt dafür, daß tatsächlich nur Blattsummen entstehen
End Sub

Private Sub Seitenkopfbereich_Print(Cancel As Integer, PrintCount As Integer)
Me!Uebertrag = SummeUebertrag
End Sub

mark-williams
13.07.2006, 07:33
Hi!

Vielen Dank, habe es gestern mit ein wenig Geduld hinbekommen :) ...

mfg Mark

attendorn
19.09.2006, 14:08
Also ich habe diese Variante auch probiert aber das seltsame ist, dass ich in der Vorschau die richtigen Werte angezeigt bekomme aber beim Ausdruck stimmt der Übertrag auf Seite 2 nicht mehr. :entsetzt:

gpswanderer
19.09.2006, 14:19
Hallo,
das ist normal. Beim Drucken wird mehrmals formatiert, was zu falscher Summenbildung führt. Um das zu verhindern gibt es die VBA-Eigenschaft "PrintCount" Suche mal in der Access VBA Hilfe nach "PrintCount", da wird das erklärt.

randylok
20.09.2006, 09:02
...also ich hab jetzt so einige Wege probiert....
setzte ich die in der Hilfe angegebene Sache ein, dann stimmt aber auch nichts mehr. :(

Dim SummeBlatt As Double, SummeUebertrag As Double
Private Sub Report_Open(Cancel As Integer)

Me.Caption = Forms![Neue Kommission]!Komission & "-" & Forms![Neue Kommission]!Kunde.Column(1) & "-" & Date
If MsgBox("Mit Hintergrund drucken?", vbYesNo + vbQuestion, "Auswahl") = vbNo Then
Me.Bild98.Visible = False
Me.Bild99.Visible = False
Me.Bild100.Visible = False
Me.Bild101.Visible = False
Me.Bild108.Visible = False
Me.Bild109.Visible = False
Me.Bild110.Visible = False
End If
End Sub
Private Sub Detailbereich_Print(Cancel As Integer, PrintCount As Integer)
If PrintCount = 1 Then
SummeBlatt = SummeBlatt + Me.G_Preis
End If
End Sub

Private Sub Seitenfußbereich_Format(Cancel As Integer, FormatCount As Integer)
If Me.Page <> 1 Then Cancel = True
End Sub

Private Sub Seitenfußbereich_Print(Cancel As Integer, PrintCount As Integer)
Me!Blattsumme = SummeBlatt
SummeUebertrag = SummeUebertrag + SummeBlatt
SummeBlatt = 0
End Sub

Private Sub Seitenkopfbereich_Format(Cancel As Integer, FormatCount As Integer)
If Me.Page = 1 Then Cancel = True
End Sub

Private Sub Seitenkopfbereich_Print(Cancel As Integer, PrintCount As Integer)
Me!Uebertrag = SummeUebertrag
End Sub