Probleme mit der Formatierung eines Berichtes

23/06/2008 - 17:49 von Patrick Pohlmann | Report spam
Hallo Zusammen,

ich habe ein Bericht der das Deckblatt eines Ordners darstellt. Im
Kopfbereich steht der Titel des Ordners und im Detailbereich die jeweiligen
Register in Form eines Unterberichts. Diese Register müssen so abgedruckt
werden, dass sie am Seitenende anfangen und von dort nach oben wachsen. Je
nach Anzahl der Register (diese sind je nach Auswahl in der DB variable)
muss also dieser Unterbericht weiter unten im Detailbereich anfangen so dass
er dann exakt am Seitenende aufhört. Ich hoffe dies ist soweit verstàndlich
und vorstellbar.

Dieses Problem meinte ich durch folgende Vorgehensweise lösen zu können:

Ich setze ein Ereignis bei Format des Detailbereichs: Private Sub
Detailbereich_Format(Cancel As Integer, FormatCount As Integer)

Ich schaue nach wie hoch der Detailbereich insgesamt ist:
strDetailbereichHöhe = Me.Detailbereich.Height

Ich schaue nach wie hoch der Unterbericht ist (also ein Registerpunkt):
strHöheUnterbericht = Me!MeinUnterbericht.Height

Ich lese per ADO aus wie viele Registerpunkte diesmal gedruckt werden
sollen: strAnzahlPunkte = rst.RecordCount

Ich errechne wie hoch nun das gesamte Register ist, also der fertig
formatierte Unterbericht: strRegisterHöhe = strHöheUnterbericht *
strAnzahlPunkte

Dann ziehe ich diesen Wert von der gesamten Höhe des Detailbereichs ab und
setze den Anfang meines Unterberichts auf diesen Punkt: Me!MeinBericht.Top =
strDetailbereichHöhe - strRegisterHöhe

So sitzt tatsàchlich das Register genau auf dem Seitenfuß, da wo es
hingehört.

ABER

Ich erhalte jeweils immer eine zweite Seite auf der nur der Seitenkopf zu
sehen ist. Der Detailbereich auf dieser zweiten Seite ist jedoch leer. Das
bleibt auch so, wenn ich den Detailbereich bis zu einem gewissen Punkt
deutlich (ca. 10 cm) kleiner machen. Bis zu diesem Punkt rutscht mein
Regíster immer höher, die zweite Seite bleibt. Nach dem Punkt gibt es zwar
keine zweite Seite mehr, aber das Register endet auf der Mitte der Seite.

An der Höhe des Detailbereichs liegt es auch definitiv nicht, das habe ich
getestet indem ich einfach den gesamten Detailbereich mit einem Rechteck
ausgefüllt habe. Dieses Rechteck ist vollstàndig auf der ersten Seite zu
sehen. Im Detailbereich der zweiten Seite ist nichts.

Es nützt auch nichts, wenn ich zu der errechneten Höhe (strRegisterHöhe)
einige Punkte dazu gebe oder abziehe.

Ich weis, das ist recht kompliziert, aber vielleicht habe ich ja Glück und
jemand kann sich da reindenken?

Viele Grüße

Patrick!
 

Lesen sie die antworten

#1 Karl Donaubauer
23/06/2008 - 18:11 | Warnen spam
Patrick Pohlmann wrote:
ich habe ein Bericht der das Deckblatt eines Ordners darstellt. Im
Kopfbereich steht der Titel des Ordners und im Detailbereich die
jeweiligen Register in Form eines Unterberichts. Diese Register
müssen so abgedruckt werden, dass sie am Seitenende anfangen und von
dort nach oben wachsen. Je nach Anzahl der Register (diese sind je
nach Auswahl in der DB variable) muss also dieser Unterbericht weiter
unten im Detailbereich anfangen so dass er dann exakt am Seitenende
aufhört. Ich hoffe dies ist soweit verstàndlich und vorstellbar.

Dieses Problem meinte ich durch folgende Vorgehensweise lösen zu
können:
Ich setze ein Ereignis bei Format des Detailbereichs: Private Sub
Detailbereich_Format(Cancel As Integer, FormatCount As Integer)

Ich schaue nach wie hoch der Detailbereich insgesamt ist:
strDetailbereichHöhe = Me.Detailbereich.Height

Ich schaue nach wie hoch der Unterbericht ist (also ein
Registerpunkt): strHöheUnterbericht = Me!MeinUnterbericht.Height

Ich lese per ADO aus wie viele Registerpunkte diesmal gedruckt werden
sollen: strAnzahlPunkte = rst.RecordCount

Ich errechne wie hoch nun das gesamte Register ist, also der fertig
formatierte Unterbericht: strRegisterHöhe = strHöheUnterbericht *
strAnzahlPunkte

Dann ziehe ich diesen Wert von der gesamten Höhe des Detailbereichs
ab und setze den Anfang meines Unterberichts auf diesen Punkt:
Me!MeinBericht.Top = strDetailbereichHöhe - strRegisterHöhe

So sitzt tatsàchlich das Register genau auf dem Seitenfuß, da wo es
hingehört.

ABER

Ich erhalte jeweils immer eine zweite Seite auf der nur der
Seitenkopf zu sehen ist. Der Detailbereich auf dieser zweiten Seite
ist jedoch leer. Das bleibt auch so, wenn ich den Detailbereich bis
zu einem gewissen Punkt deutlich (ca. 10 cm) kleiner machen. Bis zu
diesem Punkt rutscht mein Regíster immer höher, die zweite Seite
bleibt. Nach dem Punkt gibt es zwar keine zweite Seite mehr, aber das
Register endet auf der Mitte der Seite.
An der Höhe des Detailbereichs liegt es auch definitiv nicht, das
habe ich getestet indem ich einfach den gesamten Detailbereich mit
einem Rechteck ausgefüllt habe. Dieses Rechteck ist vollstàndig auf
der ersten Seite zu sehen. Im Detailbereich der zweiten Seite ist
nichts.



Diesen Test solltest du nicht mit einem Steuerelement machen,
sondern indem du die Hintergrundfarbe des Detailbereiches ànderst.
Siehst du dann etwas davon auf der zweiten Seite?

Es nützt auch nichts, wenn ich zu der errechneten Höhe
(strRegisterHöhe) einige Punkte dazu gebe oder abziehe.

Ich weis, das ist recht kompliziert, aber vielleicht habe ich ja
Glück und jemand kann sich da reindenken?



HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
+ Entwickler-Konferenzen für Access (AEK) und SQL Server (SEK)

Ähnliche fragen