Wir haben ein großes Problem mit den Seitenzahlen von Berichten in Access
2000. Da es äußerst wichtig ist, stelle ich hier die selbe Frage noch mal,
die ich bereits im MSDN-Forum "Office System" gestellt hatte, in der
Hoffnung, dass hier jemand reinschaut, vielleicht 'ne Idee hat (obwohl ja
diese NG eigentlich gar nicht mehr existiert?):
Nach der Berichtserstellung muss eine globale Variable mit der aktuellen
Seitengesamtzahl des Berichtes versorgt werden. Zu diesem Zweck wurde
folgende Eventroutine für jeden der betroffenen Berichte eingesetzt:
Private Sub Seitenfußbereich_Print(Cancel As Integer, PrintCount As Integer)
gRepCountBericht = Me.Pages
End Sub
Das funktionierte bisher auch ganz prima.
Dann mussten die Berichte umgestellt werden, u.a. enthalten sie nun
Unterberichte an Stelle des ehemaligen Detailbereiches. Das funktioniert auch
alles ganz prima, nur:
das o.g. Event liefert seit der Änderung immer nur den Wert 0. Auch andere
events im Hauptbericht und im Unterbericht liefern 0. Fehlerursache
unbekannt, liegt es an den Unterberichten? Aber der Hauptbericht müsste doch
trotzdem seine Seitenzahl kennen, zumal er sie auch korrekt ausdruckt!
Bin hilflos und ratlos. Bitte um Entschuldigung wegen "cross-postig". Vielen
Dank für Ideen oder Tipps!
Raimund Gryszik, Berlin
Schwer zu sagen.
Du könntest eine kleine Test-DB mit dem Problem irgendwo hochstellen.
Wenn du keine Webseite hast, dann z.B. bei http://myfreefilehosting.com/
Dann kann man sich das ansehen.
--
Servus
Karl
****************
http://www.donkarl.com Access-FAQ
http://www.donkarl.com/?aek 13. Access-Entwickler-Konferenz
25./26.09.2010 in Nürnberg, 16./17.10.2010 in Hannover
vielen Dank für deine Antwort. Ich kann das Problem jetzt noch besser
formulieren. Es tritt für mehrere verschiedene Access-Berichte in gleicher
Form auf. Ich formuliere es jetzt für einen, stellvertretend für alle:
Ursprünglich gab es einen Bericht "Rep_ALT", dessen Gesamtseitenzahl im
Event Seitenfußbereich_Print mit me.pages ermittelt wird. Das funktioniert
auch heute noch mit diesem alten Bericht problemlos!
Dann musste der Bericht umgestellt werden, u.a. wurde das Papierformat
geändert, der ehemalige Detailbereich wurde zu einem Unterbericht verändert,
und es werden zwei Spalten gedruckt. Ich nenne das jetzt mal Rep_NEU.
Seitdem liefert me.pages in allen denkbaren Events immer 0 ab.
Ich habe nun folgendes mit Rep_NEU gemacht: Reduktion der Spaltenzahl auf 1,
Eliminieren des Unterberichtes. Das Problem besteht weiterhin. Nun habe ich
in das Event Seitenfußbereich_Print einen Debug-Haltepunkt gesetzt, und mir
sämtliche Eigenschaften des Objektes ME (ist der Bericht, nicht der
Seitenfuß) für ALT und NEU ausgedruckt. Bis auf die inhaltlichen Änderungen,
z.B. auch Breite und Höhe, sind alle Eigenschaften identisch, nur PAGES ist
eben bei dem alten =3 und bei dem neuen =0.
Ist Access kaputt? Was tun?
Die Datenbank selbst ist sehr groß, besteht aus mehreren mdb. Wenn nichts
hilft, könnte ich sie tatsächlich von allen geschäftlichen Inhalten befreien,
und dann auf meine privaten Homepage zur Verfügung stellen. Aber ich werde
jetzt erst mal bei Rep_ALT sämtliche Einzelschritte wieder nachvollziehen, um
zu Rep_NEU zu kommen, um den Fehler zu lokalisieren. Das wird mich tagelang
beschäftigen.
Danke für das Hilfe-Angebot
Raimund
ch habe die (zunächst unerklärliche) Fehlerursache nun selbst gefunden, hier
die Beschreibung:
Wenn in irgendeinem Steuerelement/Textfeld im Bericht die "interne" Variable
[Seiten] verwendet bzw. ausgedruckt wird, dann steht in me.pages die korrekte
Zahl.
Wenn diese Variable [Seiten] jedoch nicht benutzt wird bzw. in keinem
Steuerelement auftaucht, dann steht in PAGES immer Null!
[Seiten] dient nämlich zum Ausdrucken der Gesamtseitenzahl des Berichtes.
Uff!
Danke!
Raimund
0
>
> [Seiten] dient nämlich zum Ausdrucken der Gesamtseitenzahl des
> Berichtes.
Zitat aus <F1> zu "Pages":
*****
Damit Sie in einem Makro oder in Visual Basic auf die Pages-Eigenschaft
verweisen können, muss das Formular oder der Bericht ein Textfeld enthalten,
dessen ControlSource-Eigenschaft auf einen Ausdruck festgelegt ist, in dem
Pages verwendet wird.
Beispielsweise können Sie die ControlSource-Eigenschaft für ein Textfeld,
das sich in einem Seitenfuß befindet, auf einen der folgenden Ausdrücke
festlegen.Ausdruck Es wird gedruckt
=Seite Eine Seitenzahl (z.B. 1, 2, 3) im Seitenfuß.
="Seite" & Seite & "von" & Seiten "Seite n von nn"
...
*****
Da du aber scheinbar von einem solchen Steuerelement berichtetest:
> ...der Hauptbericht müsste doch trotzdem seine Seitenzahl kennen,
> zumal er sie auch korrekt ausdruckt!
habe ich diese Problemvariante gar nicht erst erwähnt.