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
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