Neuigkeiten:

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

Mobiles Hauptmenü

Combobox Index -1, wenn Wert ""

Begonnen von Stele4, Juni 07, 2025, 21:13:11

⏪ vorheriges - nächstes ⏩

Stele4

Hallo!
Eine Liste einer Combobox hat als 1. Eintrag der Wert "" oder Null oder auch " ".
Bei Auswahl dieses Eintrages ist Listindex -1 statt 0.
Warum ist das so?
Wie kann man ermitteln, ob ein Eintrag ausgewählt wurde?

Gruß Stele

Knobbi38


Stele4

Hallo Knobbi!
Die Erklärung für mein Problem habe ich in dem Text nicht gefunden.
Ich erwarte den Listindex 0, wenn ich den 1. Eintrag auswähle.
Egal, was drin steht.

Gruß Stele

MzKlMu

Hallo,
Zitathat als 1. Eintrag der Wert "" oder Null oder auch " ".
NULL geht ja, aber wie bekommst Du "" (Leerstring) und " " (Leerzeichen) in ein Feld ?
Gruß Klaus

Knobbi38

#4
Hallo Stele,

ZitatIch erwarte den Listindex 0, wenn ich den 1. Eintrag auswähle.

So ist es und das kannst du auch selber sehr einfach ausprobieren. Wenn das bei dir nicht so ist, dann stimmt etwas anderes nicht, was man aus der Ferne ohne weitere Informationen aber nicht beurteilen kann.

ZitatWie kann man ermitteln, ob ein Eintrag ausgewählt wurde?
Da gibt es mehrere Möglichkeiten, z.B. mit Hilfe der Itemsselected Auflistung, mit der ListIndex Eigenschaft oder ganz einfach, ob der Wert der Kombobox ungleich NULL ist.
 

Gruß Knobbi38


Stele4

Hallo!
Ich habe es noch nicht geprueft, doch die NULL nehme ich zurueck.

Beim Nachbau fuer die Demo ist es aufgefallen:
Wenn bei einem 1-spaltigen Feld die BoundColumn auf 1 gesetzt wird, erhaelt man lustige Effekte.
Leere Strings ergeben den ListIndex -1.
Ein Leerzeichen ergibt -1, wenn kein leerer Eintrag in der Liste ist. Sonst den korrekten Index.
Korrekt ist aber relativ.
Der Index des 1. Eintrags kann auch 1 sein, wenn in der Liste noch ein leerer Eintrag vorhanden ist.
Usw...

Das korrekte Setzen der BoundColumn verhindert diese Effekte.

Dank und Gruss
Stele

Knobbi38

Hallo Stele,

du hättest auch gleich darauf hinweisen können daß du mit einer Werteliste und einer ungebundenen Kombobox herum experimentierst und nicht wie gewöhnlich eine Datenquelle verwendest.

Unabhängig davon ist doch alles wie es sein soll und wenn du dich selber austrickst, dann kommen eben solche Ergebnisse zustande - nichts ungewöhnliches.
 
Wenn du einer Kombobox den Wert NULL oder einen String der Länge(0) zuweist, was in diesem Fall gleichwertig ist, dann setzt du die Kombobox zurück und es ist kein Eintrag selektiert. Demzufolge liefert Listindex dann auch ganz korrekt den Wert -1.

Btw.: zum Testen hättest du dir auch einfach die entsprechenden Werte (Value, Listindex) im Überwachungsfenster ansehen können, daß Change-Event einer Kombobox ist dafür ungeeignet, normalerweise wird dafür das AfterUpdate Ereignis verwendet.

Gruß Knobbi38





Stele4

Hallo Knobbi!
Ich stimme nicht ganz zu.
Das Rumexperimetieren mit der Werteliste ergab sich beim Versuch der Fehlereingrenzung.
Tabelle und Werteliste ergaben dieselben Effekte.
Das war im Ueberwachungsfenster mit entsprechenden Werten zu erkennen.
Dass bei Auswahl eines leeren Strings die Combobox zurueck gesetzt wird, ist mEa nicht richtg.
Wenn die BoundColumn korrekt gesetzt ist, kommt auch der ListIndex 0.. (wie es der Laie erwartet).
OnChange wird verwendet, um beim Eintippen die Zieltabelle zu filtern.

Gruss Stele

Knobbi38

Hallo Stele,

mal ehrlich, wer lädt denn einen Leerstring bzw. einen String mit einem Blank in eine Kombobox und wozu soll das gut sein? So etwas wird von den meisten Entwicklern tunlichst vermieden und OnChange wird eigentlich auch nicht in einer Kombobox verwendet, sondern so eine Art der Filterung wird eher in Verbindung mit einer Textbox verwendet.

Aber gut, wenn du das so verwenden möchtest, bleibt ja dir überlassen. Am "eigenartigen" Verhalten der Kombobox wird das aber nichts ändern.

Gruß Knobbi38


Stele4

Hallo Knobbi!
Es fuehrt allmaehlich am Thema vorbei.

Fazit: Wenn die BoundColumn in die Dimensionen der RowSource passt, gibt es kein eigenartiges Verhalten.

Gruss
Stele