Hallo Zusammen,
ich habe ein Formular " Frm_Daten_Import _Check , das auf eine Abfrage basiert "Qry_Daten_Import ", welches beim Ereignis "Beim Anzeigen" Daten ändert oder ergänzt und durch eine Speicher Taste DATEN überprüft.
Nur leider muss der User immer wieder Speichern und dann die Goto Next Record-Taste drücken.
Und das einige Male....
ich hab schon etwas mit der Timerfunktion rumgespielt es aber nicht hinbekommen..
Wie stellt man den Ablauf automatisch dar ?
Also ich möchte das das Fromular angezeigt wird und folgender Code durchgeführt wird ...
' CHECK ABSENDER
' -------------------------------------------
If IsNull(Me.ABG_FirmenName1) Then
MsgBox " Sie müssen einen Absender eingeben!!", vbInformation
Me.ABG_FirmenName1.SetFocus
Exit Sub
End If
If IsNull(Me.ABG_Land) Then
MsgBox " Sie müssen ein Abgangsland eingeben!!", vbInformation
Me.ABG_Land.SetFocus
Exit Sub
End If
If IsNull(Me.ABG_Plz) Then
MsgBox " Sie müssen eine Abgangspostleitzahl eingeben!!", vbInformation
Me.ABG_Plz.SetFocus
Exit Sub
End If
If IsNull(Me.ABG_Ort) Then
MsgBox " Sie müssen einen Abgangsort eingeben!!", vbInformation
Me.ABG_Ort.SetFocus
Exit Sub
End If
' CHECK EMPFÄNGER
' -------------------------------------------
If IsNull(Me.EMPF_FirmenName1) Then
MsgBox " Sie müssen einen Empfänger eingeben!!", vbInformation
Me.EMPF_FirmenName1.SetFocus
Exit Sub
End If
If IsNull(Me.EMPF_Land) Then
MsgBox " Sie müssen ein Empfangsland eingeben!!", vbInformation
Me.EMPF_Land.SetFocus
Exit Sub
End If
If IsNull(Me.EMPF_Plz) Then
MsgBox " Sie müssen eine Empfangspostleitzahl eingeben!!", vbInformation
Me.EMPF_Plz.SetFocus
Exit Sub
End If
If IsNull(Me.EMPF_Ort) Then
MsgBox " Sie müssen einen Empfangsort eingeben!!", vbInformation
Me.EMPF_Ort.SetFocus
Exit Sub
End If
' CHECK Ladedatum
' -------------------------------------------
If IsNull(Me.Ladedatum) Then
MsgBox " Sie müssen ein Ladedatum eingeben!!", vbInformation
Me.Ladedatum.SetFocus
Exit Sub
End If
If IsNull(Me.EntLadedatum) Then
MsgBox " Sie müssen ein Entladedatum eingeben!!", vbInformation
Me.EntLadedatum.SetFocus
Exit Sub
End If
' CHECK Auftragsnummer
' -------------------------------------------
If IsNull(Me.Auftragsnummer) Or Me.Auftragsnummer = 0 Then
MsgBox " Sie müssen eine Auftragsnummer eingeben!!", vbInformation
Me.Auftragsnummer.SetFocus
Exit Sub
End If
' SPEICHERN
'--------------------------------------------------------
On Error GoTo Err_BT_Speichern_Click
strMsg = "Möchten Sie diesen Auftrag speichern? "
If MsgBox(strMsg, vbYesNo + vbQuestion, "Abbrechen:") = vbYes Then
Me.Geändert_am = Now
Me.Geändert_von = Me.CurrentUser
Me.BT_bearbeiten.Enabled = True
Me.Import_Status = 1
Me.STATUS_SNDG = 2
Me.TOURNR = Null
If Me.LagerCode = "FK" Then
Me.LadePos = 1
Else
Me.LadePos = Null
End If
'RunCommand acCmdSaveRecord
Me.AllowAdditions = False
Else
DoCmd.RunCommand acCmdUndo
Me.AllowAdditions = True
End If
Exit_BT_Speichern_Click:
Exit Sub
Err_BT_Speichern_Click:
MsgBox Err.Description
Resume Exit_BT_Speichern_Click
End If
Wenn alle Kriterien erfüllt wurden ...soll das pop_Up "strMsg = "Möchten Sie diesen Auftrag speichern? "
" erscheinen..drückt der User dann "JA" soll automatisch der nexte Datensatz kommen...
und zwar solange bis der letzte DS erreicht wurde.. dann soll nach dem POPUP"strMsg = "Möchten Sie diesen Auftrag speichern? "
das Formular geschlossen werden...
Möglich ? wenn ja wie ?
Danke für eure Antworten...
Hoffe ich hab meine Frage dieses Mal ordentlich formuliert :-)
Gruss Benrie
Hallo,
Du willst wirklich die angezeigten DS automatisch bis zum Ende durchlaufen?
.
.
.
Me.LadePos = Null
End If
'RunCommand acCmdSaveRecord
Docmd.Gotorecord , acNext
Me.AllowAdditions = False
.
.
und über den Error-Handler prüfst Du die Fehlersituation (die Fehlernummer) , die auftritt, wenn der letzte Record überschritten werden würde und reagierst mit dem Schliessen des Forms..
Hallo Franz,
ja das möchte ich. spricht dagegen was ?
"und über den Error-Handler prüfst Du die Fehlersituation (die Fehlernummer) , die auftritt, wenn der letzte Record überschritten werden würde und reagierst mit dem Schliessen des Forms.."
ok wie meinst du das ?
Ich weiss nicht wie ich prüfen kann ob der letzte datensatz erreicht wurde ???
gruss Bernie
Hallo,
naja, mir kommt es halt exotisch vor...
Errorhandler:
wenn "hinter" den letzten DS fährst, tritt ein Fehler mit einer bestimmten Nummer auf, die Du mit IF abfragen kannst.
Sub DeineSub()
On Error goto MyErr
.
.
.
Exit_Sub:
Exit Sub
MyErr:
If Err.Number =xxxx Then
Docmd.close acForm, Me.Name
Else
Msgbox Err.numner & "" & Err.Description
End if
Resume Exit_Sub
End Sub
Ok funktioniert so wie ich es mir vorstelle danke ! ;)