Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: jogie63 am März 29, 2020, 15:41:17

Titel: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: jogie63 am März 29, 2020, 15:41:17
Hallo,

ich habe da ein Problem bei dem ich schon viel gesucht habe, aber nicht gefunden habe.
Aus einem Bestellformular mit Unterformular übergebe ich die benötigten Informationen an den Bericht, der dann auch angezeigt wird.
In der Vorschau wird 1 Seite angezeigt.
Wenn ich jetzt aber auf den Access Drucken Button gehe, wird mir ebenfalls nur eine Seite angezeigt. Tippe ich auf drucken, dann werden alle ungefilterten Datensätze des Formulars ausgedruckt.

Das passiert nur wenn ich die Bestellung neu angelegt habe und drucken möchte. Schließe ich die Bestellung und öffne sie wieder, passiert der Fehler nicht.

Ich habe schon alles versucht, aber ich kann den Fehler nicht finden.

Habt Ihr eine Idee?
Titel: Re: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: DF6GL am März 29, 2020, 15:56:57
Hallo,


ZitatDas passiert nur wenn ich die Bestellung neu angelegt habe und drucken möchte

Ohne Kenntnis der genauen Vorgänge (Code), die da passieren, kann ich nur vermuten:

Der neue Datensatz wurde noch nicht gespeichert, hat also noch keine Datensatz-ID und dem Bericht wird vermutlich beim Öffnen (Openreport) ein  Kriterium der Like-Operator mit einem Sternchen übergeben.
Titel: Re: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: jogie63 am März 29, 2020, 16:04:19
Jetzt wo Du es schreibst...
Hier mal der code.
--
Private Sub but_drucken_Click()
    ' Drucken auf Standarddrucker, anschliessend Forular sperren
    ' DoEvents
    ' DoCmd.RunCommand acCmdPrint
    On Error Resume Next
   
    Dim a As Integer
    Dim Filter As String
   
    Filter = Me.fld_Cust_Order_headID
   
    Me.AllowEdits = True
    DoCmd.RunCommand acCmdSaveRecord
    Me.AllowEdits = False
   
    a = MsgBox("Soll ein Ausdruck erfolgen?", vbYesNo, "Ausdruck")
   
    If a = 6 Then
        DoCmd.OpenReport "ber_Order_Customer", acViewPreview, , "fld_Cust_Order_headID = " & Filter
    End If
   
    Me.fld_Cust_Ord_Printed.Value = -1
    Call sperren
    Call Buchen
   
End Sub
---

Ich denke die Zeile
Filter = Me.fld_Cust_Order_headID
hätte ich erst hinter die Zeile
DoCmd.RunCommand acCmdSaveRecord

machen sollen.

Es macht ja keinen Sinn erst die ID abzufragen und dann den Datensatz zu speichern.

Danke für den Hinweis!
Titel: Re: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: PhilS am März 29, 2020, 19:11:51
Zitat von: jogie63 am März 29, 2020, 16:04:19
Ich denke die Zeile
Filter = Me.fld_Cust_Order_headID
hätte ich erst hinter die Zeile
DoCmd.RunCommand acCmdSaveRecord

machen sollen.
Das könnte schon die Lösung sein.
Bei Gelegenheit könntest du noch den Sinn von On Error Resume Next in deinem Code hinterfragen.
Titel: Re: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: jogie63 am März 30, 2020, 10:23:09
Danke für die Info.

Was mich nur wudert ist, das in der Voransicht korrekt nur eine Seite angezeigt wird. Es ist auch nicht möglich vorzublättern.
Erst wenn ich drucke, dann werden 200 Seiten an den Drucker gesendet.

Ich konnte es noch nicht nachvollziehen, aber ich habe den Eindruck das wenn ich im Einzelschrittmodus die Zeilen durcharbeite der Fahler nicht passiert.
Jetzt habe ich gerade drei Bestellungen angelegt, bei der dritten Bestellung ist der Fehler wieder vorgekommen.

Siehe Anhang. Die Nummer wurde korrrekt übergeben und es ist nur eine Seite in der Vorschau (beides gelb markiert)

Mit dem 'On Error...'
Ich spiele mit dem Gedanken eine globale Variable zu definieren. So wie ich gelesen habe verlieren sie bei einem Fehler der nicht über 'on Error...' abgearbeitet wurde den Wert.
Ja ich weiss, meine Fehlerbearbeitung lässt zu wünschen übrig (shame on me...)
Titel: Re: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: jogie63 am März 30, 2020, 10:39:27
Ich hab nochmal was angehängt...
Wie gesagt, das ist kein Button von mir, sondern der Button 'drucken' von Access!
Titel: Re: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: MzKlMu am März 30, 2020, 10:45:52
Hallo,
das ist doch kein Bericht was Du da druckst.
In der Meldung steht doch Druck von Navigationsformular.
Titel: Re: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: DF6GL am März 30, 2020, 10:50:07
Hallo,

etwas unklar, was Du genau machst..


Du ruft den Bericht in Seiten-Voransicht auf und willst dann mit Kontextmenü/Drucken die (einzelne) Seite drucken?


Oder druckst Du das Navigationsformular?

Code (ohne Errorhandler und ohne Prüfung, ob korrekt ausgedruckt wurde):
Private Sub but_drucken_Click()
     
  DoCmd.RunCommand acCmdSaveRecord
   
If  MsgBox("Soll ein Ausdruck erfolgen?", vbYesNo, "Ausdruck") = vbYes  Then
        DoCmd.OpenReport "ber_Order_Customer", acViewPreview, , "fld_Cust_Order_headID = " & Me.fld_Cust_Order_headID   
 
         Me.fld_Cust_Ord_Printed.Value = -1
         Call sperren
         Call Buchen
End If
End Sub
Titel: Re: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: jogie63 am März 30, 2020, 21:18:50
Exakt. Ich rufe den Bericht in der Seiten Voransicht auf und er wird dann korrekt angezeigt. Mit korrekter ID und nur eine Seite.
Wenn ich jetzt über das Kontextmenu/Drucken gehe dann wird aber das Navigationsformular ausgedruckt. Und zwar ALLE Datensätze. Das sind derzeit so um die 2500.
Das verstehe ich ja nicht. Das ist kein Druckmenu von mir das ich per VBA kreiert habe, sondern es ist von Access.
Titel: Re: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: MzKlMu am März 30, 2020, 23:06:48
Hallo,
welches Kontextmenü meinst Du ?
Das Menü das sich mit Rechtsklick öffnet ?

Du musst aufpassen, dass Du mit dem Mauszeiger beim Rechtsklick auf der Seitenvorschau des Berichts stehts.
Titel: Re: Ausdruck Bericht funktioniert nicht korrekt
Beitrag von: DF6GL am März 31, 2020, 08:25:07
Hallo,

vermutlich benutzt Du das falsche Menu (das im Ribbon-Band, und das ist nicht das Kontext-Menü) und mach es so, wie Klaus es sagt.

Drucke auch mal den Bericht per VBA:

DoCmd.OpenReport "ber_Order_Customer", , , "fld_Cust_Order_headID = " & Me.fld_Cust_Order_headID