Rubrik: Access | VB-Versionen: VBA | 24.09.15 |
ACCESS Bericht Nur erste Seite anzeigen Manchmal möchte man nur die erste Berichtsseite eines Gesamt- oder Teil- Datenumfangs sehen. Dieser Tipp könnte dabei helfen. | ||
Autor: Richard Mittelstädt | Bewertung: | Views: 7.170 |
ohne Homepage | System: WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Ich verwende den Code (etwas erweitert) zum Anzeigen folgender Sätze:
- (ca.) 20 letzte neueste Messwert-Sätze
- + maximal 40 leere Dummy-Sätze für manuelles Bleistift-Eintragen beim Messen
Dieses Blatt muss schnell und einfach gedruckt werden können. Die Dummy-Sätze enthalten u.a. nützliche Hilfslinien.
Viel Spass !
' Nur die erste Seite eines Berichts anzeigen/drucken. ' Datenherkunft ist eine Tabelle oder eine Abfrage. ' Es muss allerdings ein Feld mit aufsteigender laufender Nummer da sein: ' hier das Feld [LNr] !!! ' Beim ersten Formatieren des Detailbereichs wird der ERSTE Seite-2-Satz "rausgefischt". ' Die Nummer des LETZTEN Seite-1-Satzes ist damit bekannt. ' Bei nachfolgenden Formatierungen wird nur noch alles bis zum LETZTEN Seite-1-Satz dargestellt. ' Die "überflüssigen" Seite-2-Sätze werden unterdrückt/ ausgeblendet mittels ' der Methoden Me.MoveLayout und Me.PrintSection.
' 1. ---- Globale Variable in einem Modul deklarieren: ------------------------------------ Global NurSEITE_1 As Boolean ' Nur 1.Seite des Berichts anzeigen
' 2. ---- Variablen im Deklarionsbereich des Berichts-Moduls: ----------------------------- Dim iLNrLAST As Long ' 2015-09-16 Höchste LNr auf Seite 1
' 3. ---- Evtl. "muss" dabei auch der Berichts-Fuss ausgeblendet werden: ------------------ Private Sub Berichtsfuß_Format(Cancel As Integer, FormatCount As Integer) If NurSEITE_1 = True Then ' Nur Seite 1 anzeigen (ohne Fuss!) Cancel = True End If End Sub
' 4. ---- Restliche Sätze (LNr > iLNrLAST) ausblenden (Detailbereich_Format): ------------- Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer) If NurSEITE_1 = True Then ' Nur 1.Seite des Berichts anzeigen If FormatCount = 2 Then ' Hier passiert es, hier ist schon Seite 2. iLNrLAST = [LNr] - 1 ' Nr vom Satz davor merken (Letzter auf Seite 1) End If If iLNrLAST > 0 And [LNr] >= iLNrLAST Then Me.MoveLayout = False ' Für Rest-Sätze nicht weitergehen! If [LNr] > iLNrLAST Then ' Text vom Letzten Satz nicht überschreiben mit Text von "Seite 2"-Sätzen Me.PrintSection = False End If End If End If End Sub
' 5. ---- Aufruf zum Öffnen des Berichts irgendwo im Code: -------------------------------- NurSEITE_1 = True ' Nur 1.Seite des Berichts anzeigen DoCmd.OpenReport "BerichtName", acViewPreview NurSEITE_1 = False ' Rücksetzen