Hallo, ich habe in meiner Datenbank beim Öffnen eine Abfrage eingebaut, die nur 1x am Tag beim 1. Öffnen als MsgJaNein erscheint. Bei Ja soll ein Formular geöffnet und ein neuer Datensatz mit festgelegten Daten angelegt werden.
Leider passiert beim 1. Klick auf Ja nichts außer dass die MsgBox kurz weggeht und dann wieder erscheint.
Beim 2. Klick wird alles ausgeführt, nur dass die Daten in den letzten Datensatz geschrieben wurden.
Private Sub Form_Open(Cancel As Integer)
DoCmd.RunCommand acCmdRecordsGoToLast
If (Zugriff = Date) Then
DoCmd.Close acForm, "Zugriff", acSaveNo
Else
If MsgBox("Küchenrolle entnommen?", vbYesNo, "Küchenrolle entnommen?") = vbNo Then
Me.Zugriff = Date
DoCmd.Close acForm, "Zugriff", acSaveNo
Else
If MsgBox("Küchenrolle entnommen?", vbYesNo, "Küchenrolle?") = vbYes Then
DoCmd.OpenForm "Küchenrollen"
DoCmd.GoToRecord , , acNewRec
Me.Datum = Date
Me.Entnahme = 1
Me.Zugriff = Date
DoCmd.Close acForm, "Küchenrollen", acSaveYes
DoCmd.Close acForm, "Zugriff", acSaveNo
End If
End If
End If
End Sub
Hallo,
kannst Du das mal genauer erklären ?
Hast Du für jeden Artikel ein eigenes Formular ?
Mit anderen Worten gibt es weitere Formulare mit sprechenden Namen (Z.B. Papiertaschentücher) ?
Was bezweckst Du mit acSaveYes bzw. acSaveNo ?
Hallo,
erklär erst mal den Hintergrund/Sinn dieses Unterfangens...
Weiterhin wäre eine Check-Funktion besser angebracht als dieses Formular-Gehopse.
z. B. (in einem Standard-Modul)
Public Function fktCheckKüchenrolle()
If Dcount("*","tblKüchenrollenTabelle","Zugriff=Date()") =0 Then
If Msgbox ("Heute noch keine Küchenrolle entnommen. Jetzt entnehmen? ", vbyesNo) = vbYes Then
Currentdb.Execute "Insert into tblKüchenrollenTabelle ([Datum],Entnahme, Zugriff) Values (Date(),1, Date())
End if
End If
End Function
Aufruf der Funktion im Autoexec-Makro (AusführenCode)
Hallo,
das ist eine einmalige Sache nur für die Küchentücher und das Fenster soll nicht bei jedem Öffnen der DB aufgehen.
Das mit dem "acSaveNo/Yes" kam durch Kopieren eines Forum-Beitrags rein; hat aber - denk ich - nicht geschadet; funktioniert auch ohne.
Mit dem Funktionscode hat es zwar funktioniert, aber auch nur nach 2x Yes; und der neue Datensatz wird immer vor dem letzten Datensatz eingefügt. Außerdem erscheint das Fenster bei jedem Öffnen.
Hab´s jetzt über "Entnahme.Value = Entnahme.Value + 1" im letzten Datensatz gelöst; reicht für mich, da ich nur den Lagerbestand überwachen will und keine Entnahme zeitlich protokollieren muss.
Der einzige "Schönheitsfehler" bleibt das 2x Yes; vielleicht weiß da jemand noch Abhilfe.
Ansonsten Danke für die Rückmeldungen
Hallo,
ZitatDer einzige "Schönheitsfehler" bleibt das 2x Yes; vielleicht weiß da jemand noch Abhilfe.
Lösche den Aufruf der Msgbox im Else-Zweig. Wenn du nur Ja/Nein
anbietest kann das Ergebnis nur vbYes sein, wenn du dass bei der
ersten Msgbox so anklickst, - muss also nicht noch einmal geprüft
werden.
gruss ekkehard
Danke für den Tipp, jetzt funktioniert alles wie gewünscht!