Bericht: Seitenzahlen pro Gruppierung

22/02/2013 - 16:10 von Lutz Uhlmann | Report spam
Hallo NG!

Hallo ich möchte in einem bericht nicht die Gesamtseitenzahlen anzeigen,
sondern pro Gruppierung.

Also statt "1 von 5" bis "5 von 5" eben
ID 123 "1 von 2", "2 von 2"
ID 456 "1 von 2", "2 von 2"
ID 789 "1 von 1"


Ich habe mir schon ein paar Beispiele rausgesucht:

-
Option Compare Database
Option Explicit

Dim db As Database
Dim rs_GrpPages As Recordset

Private Sub Report_NoData(Cancel As Integer)
Cancel = True
End Sub

Private Sub Report_Open(Cancel As Integer)
Dim sql As String
'Leeren der Tabelle
sql = "DELETE * FROM XPAGES"
DoCmd.SetWarnings False
DoCmd.RunSQL sql, False
DoCmd.SetWarnings True

Set db = CurrentDb
Set rs_GrpPages = db.OpenRecordset("XPAGES", DB_OPEN_TABLE)
rs_GrpPages.Index = "PrimaryKey"
End Sub

'Wenn neue Gruppe beginnt, die Seitennummer auf 1 setzen
Private Sub Gruppenkopf0_Format(Cancel As Integer, FormatCount As Integer)
Me.Page = 1
End Sub

Private Sub Seitenfußbereich_Format(Cancel As Integer, FormatCount As
Integer)
'Suchen der Gruppe
rs_GrpPages.Seek "=", Me.LID

If Not rs_GrpPages.NoMatch Then
'Gruppe bereits vorhanden
If rs_GrpPages!PAGENR < Me.Page Then
rs_GrpPages.Edit
rs_GrpPages.Fields!PAGENR = Me.Page
rs_GrpPages.Update
End If
Else
'Erst Seite der Gruppe
rs_GrpPages.AddNew
rs_GrpPages.Fields!ID = Me.LID
rs_GrpPages.Fields!PAGENR = Me.Page
rs_GrpPages.Update
End If
End Sub

'Funktion zur Suche des Gruppennamens
Function GetGrpPages()
rs_GrpPages.Seek "=", Me.LID
If Not rs_GrpPages.NoMatch Then
GetGrpPages = rs_GrpPages!PAGENR
End If
Debug.Print "GetGrpPages " & Nz(Me.LID, "X") & " > " &
Nz(GetGrpPages, "x")
End Function
-

XPAGES ist eine temporàre Tabelle, welche die Seitenanzahl der Gruppen
speichert. ID (Long, PK) PAGENR (Long)

Im Bericht selber ist für den Gruppenkopf0 angegeben
- Neue Seite: Vor Bereich
- Wiederholen: Nein

Und im Seitenfußbereich existieren Textfelder:
- txtGrpPageCnt Inhalt =GetGrpPages()
- txtSeitenText Inhalt =" Seite " & [Page] & " von " & [txtGrpPageCnt]

Das hat auch irgendwie schon mal funktioniert, aber jetzt habe ich das
Problem, daß in der Vorschau nur die erste Seite formatiert wird:
Gruppenkopf0_Format: Me.Page=1
Seitenfußbereich_Format: XPAGES -> ID: 123 PAGENR=1
GetGrpPages: Liefert 1
txtSeitenText: Seite 1 von 1

Erst wenn ich auf Seite zwei springe formatiert er diese:
Seitenfußbereich_Format: XPAGES -> ID: 123 PAGENR=2
GetGrpPages: Liefert 2
txtSeitenText: Seite 2 von 2

Springe ich in die nàchste Gruppe habe ich dasselbe Problem wie in der
ersten.


Problem ist also erkannt: der Bericht formatiert nur Seite 1 und hat
somit keine Kenntnis von evtl weiteren Seiten der Gruppe.
Das komische ist aber, es hat definitiv schon einmal funktioniert - ich
weiß nur nicht wie oder warum. Irgendwas habe ich kaputtgebastelt.

Wie ist das Formatierungsverhalten der Berichte?
Wird immer nur die aktuelle Seite formatiert? Wie kann ich den ganzen
Bericht rendern um herauszubekommen wieviele Seiten es gibt pro Gruppe gibt?

Bin ratlos ...

Lutz





news.albasani.net
 

Lesen sie die antworten

#1 Lutz Uhlmann
22/02/2013 - 16:56 | Warnen spam
Am 22.02.2013 16:10, schrieb Lutz Uhlmann:
Hallo NG!

...

Bin ratlos ...



Nun nicht mehr.

Der Original-Artikel von MS lieferte den entscheidenden Hinweis:

http://support.microsoft.com/kb/841779/de

"12.
...
Hinweis: das ReferToPages Textfeld zwingt den Bericht, die two-pass
Formatierung, wenn der Bericht gedruckt wird, zu verwenden."

Ich hatte diesem Feld keine Bedeutung zugemessen und es aus meinem
Seitenfuß gelöscht.
Jetzt ist es wieder drin und er formatiert alle Seiten und es
funktioniert wie es soll!!!


Trotzdem danke!

Den ganzen Nachmittag an dem Sch*** gesessen ;)

Lutz

Ähnliche fragen