Ich verfüge über ein Formular zum Nachschlagen von Nachrichten, das die Informationen eines einzelnen Datensatzes anzeigt. Es gibt ein ungebundenes Kombinationsfeld in dem Datensatz, den der Benutzer verwendet, um die Elementnummer einzugeben und direkt über DoCmd.SearchForRecord zu diesem Datensatz zu gehen. Dieser Teil funktioniert gut.Zugriff Ungebundene Combobox zum Suchen und Hinzufügen von Datensätzen verwenden
Was ich auch tun möchte, ist, dass die ungebundeneKombobox in der Lage ist, neue Elemente zur Tabelle hinzuzufügen. Ich habe den NotInList jetzt auf diesen Satz:
If MsgBox("Create new inventory item " & NewData & "?", _
vbQuestion + vbYesNo) = vbNo Then
Me.PartNumberList.Undo
Response = acDataErrContinue
Exit Sub
Else
CurrentDb.Execute "INSERT INTO Inventory (PartNumber) VALUES ('" & NewData & "');"
Response = acDataErrAdded
End If
die Tabelle ist die neuen Daten empfängt, aber jetzt brauche ich die Form, bevor das Formular erneut abfragen kann die Daten finden. Wenn ich unmittelbar nach diesem Code eine "Me.Requery" -Funktion hinzufüge, denkt das Formular, dass ich versuche, dasselbe Element in das Formular einzugeben, es hat es jedoch immer noch nicht in der Tabelle gefunden, und es wird erneut gefragt, ob ich dieses Element hinzufügen möchte. Wenn ich versuche, die Combobox zuerst erneut zu fragen, sagt es mir, dass ich die Daten zuerst speichern muss. Wenn Me.Dirty hinzugefügt wird, dann wird Me.Dirty = False direkt vor dem Requery nicht behoben.
Also nach einigem Suchen fand ich, dass ich versuchen sollte, zum ersten Datensatz in der Combobox vor einer Anfrage zu bewegen. Das funktioniert, außer jetzt bekomme ich einen Hinweis "Der eingegebene Wert ist für dieses Feld nicht gültig." Ich drücke OK und dann wird alles abgefragt und ich kann jetzt manuell zu meiner neuen Teilenummer navigieren. Aber ich kann nicht genau herausfinden, was diese Nachricht wirft. On Error Resume Next wird diese Benachrichtigung nicht umgehen. Wenn ich den Code durchtrete, scheint die Benachrichtigung nach NotInList zu erfolgen und überspringt alle anderen Ereignisse. Ich werde mein BeforeUpdate oder AfterUpdate nicht auslösen.
Vielleicht gehe ich nur um meine Artikel Lookup alles falsch. Vielleicht sollte der Benutzer Elemente mit einem anderen Formular hinzufügen. Es wäre einfach praktisch, alles in einer einzigen Form zu halten. Oh, vielleicht ist es erwähnenswert, dass dieses Formular als Dialog im Add-Modus geöffnet wird. Aber die Fehler bleiben gleich, auch wenn ich das Formular selbst mit Dateneingabe aus öffne.
Vielen Dank! Das machte alles lächerlich einfach, ich versuchte viel zu schwer, es vorher zu überspielen.Die Combobox-Abfrage ist nicht notwendig, da (wie ich es verstehe) acDataErrAdded die Combobox requery automatisch nach dem NotInList-Ereignis erstellt und die Combobox als neu hinzugefügte Daten belässt. Dann übernimmt mein AfterUpdate-Code und ändert die Recordsource in den neu hinzugefügten Datensatz. –
Kühl. Ich habe nie das NotInList-Ereignis verwendet und nicht bemerkt, dass es das Requery-Ereignis intern behandelt hat. Hut ab ins Access Team, um darüber nachzudenken! Viel Glück für Sie. – DanielG