Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Prozessunterbruch bis ein Dokument gedruckt ist

Begonnen von smily68, Juni 04, 2012, 17:46:51

⏪ vorheriges - nächstes ⏩

smily68

Hallo

Ich habe folgende Konstellation: Es geht um einen Verkaufsauftrag. In diesem Verkaufsauftrag gibt es einen Verkaufsprozess. 1. Auftragsbestätigung erstellen, 2. Produktionspapier erstellen, 3. Teillieferung erstellen 4. Lieferschein erstellen. 5. Rechnung erstellen. Mit einem Button "nächster Status" geht der Auftrag in den nächsten Status. Ich kann diesen Status auch manuell manipulieren z.B zurücksetzen mit einem Auswahlfeld.
Diese verschieden Statuse sind in einer anderen Tabelle abgelegt. In dieser Tabelle kann ich verschieden Aktion festlegen die auf einem Status erfolgen sollen. z.B. soll an einem Status angehalten werden, oder soll dieser überhüpft werden, soll ein Dokument ausgedruckt werden, soll das Dokument am Bildschirm angezeigt werden oder gedruckt werden, soll die Debischnittstelle ausgeführt werden, soll der Auftrag archiviert werden.
Ich kann jederzeit zusätzlich Aktionen einbauen, ohne das ich den Code ändern muss. Dies funktioniert alles einwandfrei.

Nun zu meinem Problem: Ich habe auf der Ebene Positionen eine Auswahl von, Lieferung offen, liefern, geliefert. Auf dem Lieferschein erscheinen alle Positionen die den Status liefern haben. Im Normalfall werden alle Positionen gleichzeitig geliefert. So habe ich in meinem Prozess MsgBox eingebaut die frägt ob alle offenen Positionen auf liefern gestellt werden sollen. Mit Nein bleiben die Einstellungen auf den Positionen, der Lieferschein wird gedruckt und der Prozess auf Teillieferung gestellt. Mit ja werden alle offenen Positionen auf liefern gestellt, danach wird der Lieferschein gedruckt und danach alle Positionen von liefern auf geliefert gestellt und der Prozess auf Lieferschein erstellt gestellt. Mein Problem nun: Auf dem Dokument werden die Lieferposition nicht angezeigt, da inzwischen der Prozess schon weitergegangen ist und alle Positione auf geliefert gestellt hat. Wie kann ich den Prozess unterbrechen, so dass erst nach dem Ausdrucken oder nach dem Schliessen des Dokumentes der Prozess weitergeht?

Hier der Betreffende Ausschnitt aus meinem Code:

                'Teil / Gesamtlieferung
                Dim strText2 As String, intMeldung2 As Integer
   
                strText2 = "Sollen alle offenen Positionen auf liefern gestellt werden?"
               
                If rsStatus!auftrSt_Lief = True Then
                    intMeldung2 = MsgBox(strText2, vbYesNo + vbQuestion)
                    If intMeldung2 = vbNo Then
                        Me.cboAuftrK_Stat_IDF = DLookup("[auftrSt_Nr]", "tblAuftrStatus", "[auftrSt_TeilLief] = True")
                    Else
                        Call Liefern
                    End If
                End If
               
   
                'Auftragspapiere drucken
                If rsStatus!auftrSt_DokuDruck = True Then
                   
                    Dim strBericht As String, strDruckArt As String, intBerichtNr As Integer
   
                    intBerichtNr = rsStatus!auftrSt_DokuArt_IDF
                    strBericht = DLookup("[from_Formular]", "tblFormulare", "[form_ID] = " & intBerichtNr)
                    intAuftrID = Me.auftrK_ID
   
                    Me.Refresh
                   
                    Select Case rsStatus!auftrSt_DruckArt_IDF
                        Case "1"
                            DoCmd.OpenReport strBericht, acViewNormal, , "[auftrK_ID] = " & intAuftrID
                           
                        Case "2"
                            DoCmd.OpenReport strBericht, acViewPreview, , "[auftrK_ID] = " & intAuftrID
                    End Select
                End If
               
                'Bei Status Lieferschein erstellt Lieferposition auf geliefert stellen
               
                Call Geliefert


Private Sub Liefern()
'alle offenen Positionen auf liefern setzen

    Dim db As DAO.Database
    Dim rsAuftrPos As DAO.Recordset
   
    Set db = CurrentDb
    Set rsAuftrPos = Me!frmAuftrPosListe.Form.RecordsetClone
   
    If rsAuftrPos.RecordCount > 0 Then
        rsAuftrPos.MoveFirst
        Do Until rsAuftrPos.EOF
            If rsAuftrPos!auftrD_LiefStatus = 1 Then
                rsAuftrPos.Edit
                rsAuftrPos!auftrD_LiefStatus = 2
                rsAuftrPos.Update
            End If
            rsAuftrPos.MoveNext
        Loop
    End If
   
    Set rsAuftrPos = Nothing

End Sub

Private Sub Geliefert()
'alle Liefer-Positionen auf geliefert setzen

    Dim db As DAO.Database
    Dim rsAuftrPos As DAO.Recordset
   
    Set db = CurrentDb
    Set rsAuftrPos = Me!frmAuftrPosListe.Form.RecordsetClone
   
    If rsAuftrPos.RecordCount > 0 Then
        rsAuftrPos.MoveFirst
        Do Until rsAuftrPos.EOF
            If rsAuftrPos!auftrD_LiefStatus = 2 Then
                rsAuftrPos.Edit
                rsAuftrPos!auftrD_LiefStatus = 3
                rsAuftrPos.Update
            End If
            rsAuftrPos.MoveNext
        Loop
    End If
   
    Set rsAuftrPos = Nothing

End Sub

database

#1
Hallo,

eine Möglichkeit wäre es m.E. den weiteren Ablauf des Codes durch eine Messagebox zu unterbrechen:


'Bei Status Lieferschein erstellt Lieferposition auf geliefert stellen
 
   If MsgBox ("Sollen die Positionen auf 'geliefert' gesetzt werden?",vbQuestion+vbYesNo,"Lieferschein erstellen") = vbYes Then            
        Call Geliefert
   Else
       .... ev. andere Aktion einbauen
   End If



HTH