Hi,
möchte einen Bericht sortieren, und ausdrucken.
mein code funktioniert nur teileweise.
Desweiteren wo starte ich den code am besten, beim Bericht laden, öffnen, schließen ?
Private Sub Report_Open(Cancel As Integer)
If Me.OrderByOn Then
Reports!meinBericht.OrderBy = Me.OrderBy
Reports!meinBericht.OrderByOn = True
End If
DoCmd.RunCommand acCmdPrint
DoCmd.Close acReport, stDocName
Exit_cmdDruck_Click:
Exit Sub
Err_cmdDruck_Click:
MsgBox err.Description
Resume Exit_cmdDruck_Click
End Sub
Hallo Jürgen,
ich kann Dir leider nicht helfen, da ich mit Access-Berichten keine Erfahrung habe.
Aber sieh doch mal im Forum ms-office-forum.net nach.
Anmelden für detailierte Such ist erforderlich, kann man aber nur empfehlen.
Soweit ich weiß kann man einen aus einem Formular geöffneten Bericht nicht im Nachhinein sortieren.
Ich würde daher mehrere Berichte (unterschiedlich sortiert) erstellen und die Variable stDocName je nach gewünschter Sortierung abändern; z.B. mit einer Select-Case-Verzweigung. Das Argument acViewNormel anstatt acPreview druckt den Bericht dann gleich aus.
Hallo Jürgen, kann Dir da leider nicht weiterhelfen. Weiß auch nicht genau, was Du mit dem Code erreichen willst. „acPreView“ ist mir unbekannt. Wenn ich zur Laufzeit am Bericht was ändrn will, dann mit „acDesign“.
Gruß
Thomas
ich habe das jetzt nicht konkret ausprobiert,
glaube aber es geht mit allen Dreien nicht.
In C++ hat man fünf Ereigneisse oder mehr zum Öffnen
und ebensoviele zum Schließen sodass man an den
verschiedenen „richtigen“ Stellen des Prozesses eigene Anweisungen einbauen kann. In Access ist das nur rudimentär vorhanden. Beim Öffnen kann es sein,
dass Du an der Stelle „bevor“ das Fenster geöffnet wird,
mit Deinem Code angesprungen wirst und dann geht gar nichts. Was Du bräuchtest ist genaus die Stelle am
Ende des Öffnungsprozesses, wo alles da ist, da habe ich
aber kein geeigntes Onxxx gefunden.
Ich empfehle Dir eine Formular zu machen mit drei
Buttons, Öffnen Bericht, Sortieren, dann siehst Du
wie es danach aussieht und dann einen Drucken Button.
Ggfs. mit Makros die die verschiedenen Schritte ausführen.
Hallo Jürgen,
habe zufällig nochmals reingeschaut und meine Antwort vom Montag nicht gefunden. Hier nochmals:
Ich nehme an, dein Codebeispiel ist in einem Formular gespeichert (Ich nenne es mal „DeinFormular“) und das OrderBy Feld ist einem Listfeld (Ich nenne es mal lstOrderBy). Beim Aufruf des Reports steht bei der „where“ Stelle -> globalfilter. Was ist das? Hier wird normalerweise ein SQL Statement erwartet. Eine Position vorher wäre der Platz für das Filterelement. Der OrderBy Teil kommt in den Report unter „beim Laden“ mit Bezugnahme auf das Formular:
Me.OrderBy = forms!DeinFormular!lstOrderBy
Me.OrderByOn = true
Du kannst es auch noch mit dem „If forms!deinFormular!chkOrderBy = true then… umrahmen, ist aber nicht zu empfehlen, da dann der Bericht eventuell unsortiert rauskommt.
Den Print und Close Befehl kannst du im Formular lassen, bringt allerdings nicht viel, besser gleich den Bericht mit „AcNormal“ aufrufen.
Gruss
Fonti46
Hi,
danke für die Info, habe es auch hinbekommen, die Daten werden sortiert und anschließend mit acnormal ausgedruckt.
Toll wäre es, wenn ich noch das Bild bekomme druckerauswahl wie z.B. mit dem befehl print, habe ich versucht, dann druckt er einmal den bericht und dann noch einmal, aber jetzt mit Druckerauswahl das Formular.
Gruss Jürgen
Hallo Jürgen
Falls du Access 07 oder 10 hast würde ich den Druckbefehl in die Schnellzugriffsleiste übernehmen und wieder auf acPreview umstellen, der acCmdPrint funktioniert nur auf einen geöffneten Bericht
Gruss
Fonti46