none
Einzugebende Daten vor BeforeInsert festtellen

    Frage

  • Hallo,

    ich möchte in einem Unterformular (endlos), das im Wesentlichen nur aus eine Kombobox besteht, einen neuen Datensatz einfügen. Die Kombobox enthält eine Liste fest vorgegebener Werte. Im Unterformular können Datensätze angefügt werden (AllowAdditions = True).

    Im Form_BeforeInsert-Event möchte ich den Anwender fragen, ob er denn wirklich einen Datensatz anfügen will. (Dies ist mit weiteren Konsequenzen verbunden, auf die hingewiesen werden soll.) Das ist an sich natülich simpel. Ich hätte aber ganz gerne
    a) zuvor geprüft, ob der ausgewählte Wert bereits vorliegt und
    b) in der Frage angezeigt, was er/sie denn gerade anfügen wollen.

    a) wird letztlich durch entsprechende Datenbankeinstellungen (unique keys) sicher gestellt. Es tritt ein Fehler und eine entsprechende Meldung auf. Schöner wär's halt, wenn es vorher abgefangen wäre.

    b) Hier tritt erschwerend hinzu, dass bei einer Messagebox-Frage die Kombobox im Hintegrund aufgeklappt ist und per Maus über die angezeigten Listeneinträge gefahren werden kann, und so ein anderer als der zunächst gewählte Eintrag schwarz markiert sein kann, was sicher irritierend ist. Es wäre also die Anzeige des gewählten Wertes im Meldungstext sehr wünschenswert.

    Mein Problem ist, dass ich nicht an den einzufügenden Wert komme, also Kombobox1.Value, da dieser stets NULL aufweist.

    Ich habe mal die diversen Events versucht zu durchforsten und habe festgestellt, dass unmittelbar vor BeforeInsert das GotFocus-Event der Kombobox eintritt. Aber auch dort finde ich nur NULL.

    Hat jemand eine hilfreiche Idee? Besten Dank


    Grüße aus Köln am Rhein - Klaus Trapp

    Donnerstag, 16. Januar 2014 15:44

Antworten

  • Hallo Klaus,

    kann es sein, dass sich in Deiner Tabelle auch ein Autowertfeld befindet? Dann wird nämlich bereits bei der Auswahl im Kombinationsfeld ein neuer Datensatz angelegt und der Autowert abgerufen. Der Wert im Kombinationsfeld ist in diesem Moment noch nicht gespeichert und kann daher auch nicht abgefragt werden.

    Wenn Du Deine Prüfung in das Ereignis "Before_Update" verlegst hast Du Zugriff auf die Auswahl im Kombinationsfeld. Die Prüfung an dieser Stelle macht auch Sinn, da so auch bei einer nachträglichen Änderung eines Datensatzes Deine Prüfung auch Dubletten duurchlaufen wird.

    HTH


    Thomas@Team-Moeller.de
    Blog: Blog.Team-Moeller.de
    Homepage: www.Team-Moeller.de





    Samstag, 18. Januar 2014 11:13

Alle Antworten

  • Hallo Klaus,

    kann es sein, dass sich in Deiner Tabelle auch ein Autowertfeld befindet? Dann wird nämlich bereits bei der Auswahl im Kombinationsfeld ein neuer Datensatz angelegt und der Autowert abgerufen. Der Wert im Kombinationsfeld ist in diesem Moment noch nicht gespeichert und kann daher auch nicht abgefragt werden.

    Wenn Du Deine Prüfung in das Ereignis "Before_Update" verlegst hast Du Zugriff auf die Auswahl im Kombinationsfeld. Die Prüfung an dieser Stelle macht auch Sinn, da so auch bei einer nachträglichen Änderung eines Datensatzes Deine Prüfung auch Dubletten duurchlaufen wird.

    HTH


    Thomas@Team-Moeller.de
    Blog: Blog.Team-Moeller.de
    Homepage: www.Team-Moeller.de





    Samstag, 18. Januar 2014 11:13
  • Hallo Thomas,

    an den Autowert-Keys lag es sicher nicht. Das entscheidende Stichwort war
    Before_Update.

    Hier ist in der Tat alles da - im Gegensatz zu
    Before_Insert,
    wo alles nur NULL ist.

    Über Before_Update läuft es. Danke!


    Grüße aus Köln am Rhein - Klaus Trapp

    Sonntag, 19. Januar 2014 15:44