PDA

Vollständige Version anzeigen : Bericht überprüft ob neuer DS ...


HaWeLL
09.05.2004, 16:57
hey ..

mal ne frage,

ich habe in einem Bericht n bissel VBA-Code hängen .. (im Deteilbereich)

das läuft auch ganz okay so .
aber wenn ich an den bericht 2 DS übergebe dann geht das nimmer ..

ich brauch also eine möglichkeit das wenn ein neuer DS kommt der code "resetet" wird und wieder von neuem beginnt .


geht das ?

SWR
09.05.2004, 17:38
was steht denn da für Code (bzw. was soll passieren?).

Der Berich muß halt immer wieder geöffnet werden, wenn's was
zum Drucken gibt. Ganz durchschaue ich Dein Prob nicht....

Code vielleicht "BeimÖffnen", "Beim Drucken" usw. setzen....

HaWeLL
09.05.2004, 17:51
mein prblem ist das der code sich auf die letzte seite des berichts bezieht,

aber wenn ich jetzt mehrer DS in den bericht gebe dann ist ja die letzte seite des berichts nicht die letzte seite des DS...
dann kommt der Bericht etwas durcheinader ..

wenn ich die DS alle einzeln in den bericht übergebe geht es perfekt ..
gibt es da nicht eine möglichkeit das er die alle einzeln ausdrucken will oder so .
oder wie schon gesagt den code immer nur auf einen DS bezieht und dann wieder neu anfängt ?

SWR
09.05.2004, 18:09
hmm, so genau raff' ich's immer noch nicht....

Vielleicht per Code alle Datensätze in 'ner Schleife durchlaufen,
jeden DS im RecordSet dann einzelnen an Bericht geben?

set rs = CurrentDb.OpenRecordSet("SELECT.......FROM... WHERE....)
do while not rs.eof
rs.movefirst
docmd.openreport("DeinBericht"),acViewNormal
rs.movenext
loop

Halt so 'ne Idee..... (in immer noch leichter Unkenntnis des Probs)

HaWeLL
09.05.2004, 19:18
hey ..
die ursache ist:

der code in dem Bericht untersucht die letzte seite des berichtes,
also wenn ich einen DS habe der sich über mehrere seiten erstreckt dann wird auf der letzten seite eine "formatänderung" durchgeführt.

dies geschieht aber nur auf der letzten seite.
wenn ich jetzt aber 2 DS übergebe, (beide erstrecken sich z.B. über 2 seiten) dann erkennt der code das ja nicht.
demzufolge löst er erst auf der 4 seite aus.

sollte aber auf der 2 seite dies schon tun (weil der erste DS ja schon auf der 2 seite endet und dann auf der 3 seite der 2 DS beginnt) und dann nochmals auf der 4 seite.
Vielleicht per Code alle Datensätze in 'ner Schleife durchlaufen,
jeden DS im RecordSet dann einzelnen an Bericht geben?

set rs = CurrentDb.OpenRecordSet("SELECT.......FROM... WHERE....)
do while not rs.eof
rs.movefirst
docmd.openreport("DeinBericht"),acViewNormal
rs.movenext
loop


das höt sich schon mal nciht schlecht an .. kannst du mal die "..." noch ausfüllen mit beispiel daten dann teste ich das mal durch

HaWeLL
10.05.2004, 20:22
noch mal on top ..

HaWeLL
14.05.2004, 18:29
hat denn hier keiner eine idee ?? :(