PDA

Vollständige Version anzeigen : bedingter Seitenumbruch nach Zeilenzahl


OpaDiddi
21.01.2008, 17:59
Hallo Access - Freunde,
mein Problem:
der auszudruckende Bericht fußt auf einen einzigen Datensatz, der aus verschiedenen miteinander verknüpften Tabellen zusammengesetzt ist (Datenblatt für einen bestimmten Werkstoff).
Je nach Datenbestand ist dieser Bericht unterschiedlich lang (2 bis 5 Seiten)
mit mehreren Unterberichten, die bei Bedarf aus- oder eingeblendet werden und auch selbst je nach Werkstoff unterschiedlich lang sind.
Der automatische Seitenumbruch führt oft zu unschönen Ergebnissen (Überschrift auf der vorhergehenden Seite, Text auf der nächsten). Die Eigenschaft "zusammenhalten" hat mir bisher nicht weitergeholfen.

In dBaseIV konnte ich im Programm die aktuelle Druckzeilenzahl abfragen und in dem Sinne programmieren: Wenn Zeilenzahl größer als 45, mache neue Seite. In VBA sehe ich keine Möglichkeit, die aktuelle Druckzeile abzufragen.

Gibt es in VBA eine ähnliche Lösung?
Gruß
OpaDiddi

gpswanderer
21.01.2008, 18:21
Hallo,
lege im bericht ein unsichtbares ungebundenes Feld an, nenne das Feld Zeilenzähler. Steuerelementinhalt:
=1
Laufende Summe: Über alles, und schon hast Du Deinen Zeilenzähler.
Dann folgender Code ins Ereignis "Beim Formatieren" des Detailbereichs:

Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
If ZeilenZähler Mod 45 = 0 Then
Me.Detailbereich.ForceNewPage = 2
Else
Me.Detailbereich.ForceNewPage = 0
End If
End Sub

OpaDiddi
22.01.2008, 17:07
Hallo gpswanderer
vielen Dank für die schnelle Anwort. Aber wenn ich alles richtig verstanden habe, kann man mit Deiner Methode die Anzahl der im Detailbereich verarbeiteten Datensätze (Datenzeilen) ermitteln, nicht aber die Anzahl der gedruckten Zeilen. Meinem Bericht liegt nur ein einziger Datensatz zu Grunde; d.h. der Detailbereich wird nur einmal durchlaufen. Dein Zeilenzähler würde immer nur "1" anzeigen.
Allerdings sind die Daten in dieser einen Datenzeile unterschiedlich umfangreich, so dass sich unterschiedlich lange Berichte ergeben.

Gruß
OpaDiddi

Lanz Rudolf
22.01.2008, 17:40
Hallo
Ja hast Du den Zeilenumbrüche in den Daten oder wie mus man das Verstehen
Allerdings sind die Daten in dieser einen Datenzeile unterschiedlich umfangreich, so dass sich unterschiedlich lange Berichte ergeben.

OpaDiddi
22.01.2008, 19:52
Hallo Access - Freunde,

es handelt sich um eine Werkstoffdatenbank mit ca. 200 verschiedenen Werkstoffen. Die Access-Haupttabelle enthält die chemische Zusammensetzung (eine solche haben alle Werkstoffe). Dann gibt es eine Datentabelle mit Normen (DIN,ASTM etc.), die die jeweiligen Werkstoffe beinhalten (manche sind in vielen Normen vertreten, andere gar nicht).
Es gibt eine Tabelle mit physikalischen Eigenschaften (manche Werkstoffe haben derer viele, andere weniger), eine Tabelle mit mechanischen Eigenschaften und so fort. Der Bericht, um den es hier geht, soll ein Werkstoffblatt zu einem bestimmten Werkstoff erstellen, d.h. der Bericht muß aus allen vorhandenen Tabellen die Daten heraussuchen, die den jeweiligen Werkstoff betreffen. Der Bericht muß entsprechend flexibel sein, damit alle Werkstoffe dargestellt werden können. Er besteht aus vielen Zeilen der Art:
Wenn Data vorhanden ....visible = true, wenn nicht ....visible = false
Da werden auch vergrößerbare und verkleinerbare Unterberichte bei Bedarf ein- und ausgeblendet.

Das Ganze funktioniert prächtig; leider manchmal unschön, weil der Seitenumbruch an ungünstiger Stelle erfolgt. Da die ausgedruckten Berichte (Werkstoffblätter) an Kunden weitergegeben werden sollen, ist das Problem schon schwerwiegend.

Gruß
OpaDiddi

OpaDiddi
22.01.2008, 19:57
Hallo Access - Freunde,

es handelt sich um eine Werkstoffdatenbank mit ca. 200 verschiedenen Werkstoffen. Die Access-Haupttabelle enthält die chemische Zusammensetzung (eine solche haben alle Werkstoffe). Dann gibt es eine Datentabelle mit Normen (DIN,ASTM etc.), die die jeweiligen Werkstoffe beinhalten (manche sind in vielen Normen vertreten, andere gar nicht).
Es gibt eine Tabelle mit physikalischen Eigenschaften (manche Werkstoffe haben derer viele, andere weniger), eine Tabelle mit mechanischen Eigenschaften und so fort. Der Bericht, um den es hier geht, soll ein Werkstoffblatt zu einem bestimmten Werkstoff erstellen, d.h. der Bericht muß aus allen vorhandenen Tabellen die Daten heraussuchen, die den jeweiligen Werkstoff betreffen. Der Bericht muß entsprechend flexibel sein, damit alle Werkstoffe dargestellt werden können. Er besteht aus vielen Zeilen der Art:
Wenn Data vorhanden ....visible = true, wenn nicht ....visible = false
Da werden auch vergrößerbare und verkleinerbare Unterberichte bei Bedarf ein- und ausgeblendet.

Das Ganze funktioniert prächtig; leider manchmal unschön, weil der Seitenumbruch an ungünstiger Stelle erfolgt. Da die ausgedruckten Berichte (Werkstoffblätter) an Kunden weitergegeben werden sollen, ist das Problem schon schwerwiegend.

Gruß
OpaDiddi