Neuigkeiten:

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

Mobiles Hauptmenü

Neuen Datensatz "halbautomatisch" anlegen

Begonnen von schlabalu, August 26, 2017, 17:32:06

⏪ vorheriges - nächstes ⏩

schlabalu

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

MzKlMu

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 ?
Gruß Klaus

DF6GL

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)

schlabalu

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

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

schlabalu

Danke für den Tipp, jetzt funktioniert alles wie gewünscht!