Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Eingabewert in Formular wird nicht übernommen

Begonnen von Hpseel, Februar 24, 2026, 21:08:39

⏪ vorheriges - nächstes ⏩

Hpseel

Hallo,
ich möchte in einem Formular in einem Textfeld einen Buchstaben eingeben, was ein Ereignis auslöst, welches  in einem Listenfeld (daneben) alle vorhandenen Orte und Adressen anzeigt, die mit diesem Buchstaben beginnen.

Alle Ereignisse, die zu dem Textfeld angeboten werden, rufen zwar die ihnen zugeordnete Prozedur (VBA) auf, der eingegebene Wert in dem Textfeld ist aber zu diesem Zeitpunkt nicht verfügbar, sondern erst wenn die Prozedur beendet ist, so dass ich ihn nicht verarbeiten kann.

Wie kann man es erreichen, dass der Eingabe-Wert schon in der Prozedur verfügbar ist?

Schon mal vielen Dank!

Hps

MzKlMu

Hallo,
Zitatrufen zwar die ihnen zugeordnete Prozedur (VBA)
Die Prozedur zu zeigen könnte sinnvoll sein, meinst Du nicht ?
Gruß Klaus

Bitsqueezer

Hallo,

Du brauchst dazu den "Change" Event, der bei jedem neuen eingegebenen Zeichen aufgerufen wird.
Während die Eingabe noch läuft, der Fokus ja noch im Feld ist, ist der gesamte eingegebene Wert nicht unter "Value" der Textbox, sondern unter "Text" abrufbar. Erst nach Verlassen des Feldes steht der komplette Wert in Value und "Text" kann nicht mehr verwendet werden.

Gruß

Christian

Hpseel

Hallo Bitsqueezer,
perfekte Antwort !

Das ist es...das betreffenden Statement in der Prozedur (zum "geändert"-Ereignis) lautet jetzt:

Name_Teil = Nz(Textfeld_xyz.Text,"") & "*"

Name_Teil wird dann in dem betreffenden Select des Listenfeldes im "Like"-Teil verwendet.

Vielen Dank !!!

Hps

Bitsqueezer

Hallo,

gerne.. :)
Denk aber dran, daß solche Methoden zwar "funky" aussehen, aber auch nicht unerheblich Netzwerklast und DB-Last erzeugen, besonders, wenn es viele User durchführen.

Man könnte sich überlegen, die Suche z.B. erst nach dem 3. Zeichen zu starten, auch weil es die Anzahl zurückgegebener Datensätze einschränkt.
Besser ist allerdings, eine Suche auf Anfrage zu machen, also etwa einen Button mit einer Lupe neben das Textfeld zu stellen und den User aktiv klicken zu lassen, wenn er zu seiner Eingabe mögliche Ergebnisse sehen will.
Das spart dann sehr viele DB-Anfragen.

Außerdem, wenn es nicht zu viele Datensätze sind, könntest Du auch einfach eine Kombobox verwenden und diese mit den Daten füllen, das Tippen von Zeichen springt dann automatisch zum ersten passenden Datensatz. Mit einer versteckten Display-Spalte (0,01cm Breite) kann man auch mehrere Datenfelder für die Suche verwenden, aber in der aufgeklappten Liste dennoch übersichtliche Spalten anzeigen.

Gruß

Christian

Hpseel

Hallo, danke für die Tipps.

Zum Mengengerüst:

Es gibt ca. 600 Adressen.
Pro Monat gibt 1 Person (aus dem Admin Bereich) ca. 5 bis 20 neue Adressen ein.
Also eher keine Performance-Frage.

Interessant ist: Der Eingabe-Mechanismus ist quasi "invers" zur Combobox:

Man möchte auf dem Eingabefeld (Textbox) bleiben und weitere Zeichen eingeben, solange man (in dem Listenfeld) sieht, dass die neu einzugebende Adresse noch nicht existiert.

Wenn sie schon existiert, geht man auf Abbruch und es wird nichts gespeichert.

Es ist sicher sinnvoll, das Listenfeld erst nach dem 2ten Zeichen anzuwerfen.

Vielen Dank nochmal !

Hps

Knobbi38

Hallo Hps,

bei der Anzahl von DS kannst du auch gleich alles in die Listbox packen.

Um die Datenlast am Server zu senken, kann auch die Listbox direkt durchsucht werden, wenn die Adressen z.B. sortiert eingelesen werden. Mithilfe eines binären Suchalgorithmus wird bereits nach wenigen Zugriffen eine passende Position für die Anzeige gefunden. Der Anwender erhält dabei u. U. auch die vorherigen und nachfolgenden Adressen zur Auswahl. 

Wird die Suche beispielsweise erst nach dem zweiten Zeichen gestartet und es werden ca. 30.000 bis 40.000 DS verwendet, lässt sich trotz langsamer Netzwerke eine geringe Serverlast und eine gute Performance erzielen, selbst dann, wenn "nur" ein sequentielle Suchalgorithmus implementiert wird.

Gruß Knobbi38