Neuigkeiten:

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

Mobiles Hauptmenü

Frage zur Listbox

Begonnen von accessy, Februar 12, 2013, 16:31:23

⏪ vorheriges - nächstes ⏩

accessy

Momentaner Ablauf:
Doppelklick auf Textbox öffnet eine Listbox.
Klick auf Listbox fügt den Wert in die Textbox ein.
Wunderbar, klappt echt gut.

Wenn ich aber erreichen will, dass die Textbox NUR die vorgegebenen,
vorgeschlagenen Werte akzeptiert, dann geht so (erstmal) nicht.
Denn ich kann ja die Textbox auch mit einem anderen Wert füllen, der NICHT in der Listbox steht.

Nehme ich nun statt der Listbox eine ComBo und sage bei der Erstellung "Werte aus Tabelle" nehmen,
dann ist das zwar die richtige Lösung; doch gehe ich einen DS weiter, ist der gewählte Wert in der Combo unverändert.
Das wäre falsch.

Daher meine Frage. Ich würde viel lieber auf eine ComBo-Lösung verzichten und bei meiner Listbox-Lösung bleiben.
Kann man in einem der Textbox-Ereignisse (z.B. after-update) eine IF...THEN Abfrage einbauen, die ermittelt,
ob der Wert in der Textbox auch einem der Listboxeinträge entspricht?

Oder ist die Lösung viel einfacher und ich kenne die gar nicht?

MzKlMu

Hallo,
die extra Textbox ist völlig überflüssig, kannst Du ersatzlos löschen. Der Doppelklick (inkl. Code entfällt auch. Nimm statt der Textbox gleich ein Kombifeld, nur Listeneinträge auf Ja einstellen.
Gruß Klaus

accessy

Ich glaube, ich habe es vielleicht falsch erklärt.

Die Textbox ist ein Feld im gesamten DS.
Das heißt, wenn ich diesen DS wieder aufrufe, dann muss der Eintrag, den ich "damals" aus der Listbox wählte,
wieder erscheinen.

Nehme ich aber eine ComBo, dann ist der gewählte Eintrag kein fester Bestand dieses DS.

MzKlMu

Hallo,
ich habe das schon richtig verstanden.
ZitatNehme ich aber eine ComBo, dann ist der gewählte Eintrag kein fester Bestand dieses DS.
Da irrst Du, das Combo muss an das entsprechende Tabellenfeld gebunden werden (wie die Textbox). Dann klappt das auch.
Die Datenherkunft eines Kombis ist im Regelfall eine andere Tabelle als die des Formulars. In das Kombi kommt als Steuerelementinhalt ein Feld der Tabelle für das Formular, der gleiche Steuerelementinhalt wie in der überflüssigen Textbox.
Gruß Klaus

accessy

Okay, bin fast am Ziel.
Eine Kleinigkeit fehlt wohl noch.

Ich habe mit Hilfe des Assistenten nach folgendem Ablauf eine Combo erstellt.
Combo eingefügt ins Feld
1. Combo soll die Werte aus einer Tabelle holen
2. Tabelle ausgewählt
3. Das Feld gewählt, ist eh nur ein Feld
4. Breite der Combo... egal...weiter
5. Wert speichern in Feld gewählt
6. Das Feld ausgewählt
7. Beschriftung, also Namen geben
8. Fertig

Problem:
Ich kann irgendetwas in die Combo schreiben, was NICHT in der Tabelle existiert. Das ist nicht mein Ziel.
Was muss ich noch anklicken, abwählen, oder machen, damit die Combo wirklich NUR die Tabellenwerte akzeptiert?

MzKlMu

Hallo,
ZitatWas muss ich noch anklicken, abwählen, oder machen, damit die Combo wirklich NUR die Tabellenwerte akzeptiert?
Es gibt die Dateneigenschaft "Nur Listeneinträge" die stellst Du auf Ja.
Gruß Klaus

accessy

Mist, das hätte ich auch selber erkennen können; neeee müssen.
Na egal,
Vielen Dank für die Infos und Hinweise dazu.

accessy

Ich muss nochmal nachfassen.
Ich habe jetzt alle Listboxen in die Tonne gehauen und alle Textboxen,
die ihre Daten aus der Listbox erhielten, gegen eine Combo getauscht.
Alle Combos haben als Vorgabe "Nur Listboxeinträge = Ja".

Ich habe eine automatische Sperrung, einen Schreibschutz der Textboxen eingebaut.
Will man einen Wert in einer Textbox ändern, muss man erst den Status LOCKED über einen CommandButton aufheben.
Das funktioniert gut. Aber leider lässt sich die Combo nicht auf LOCKED stellen.

Oder gibt es da einen mir nicht bekannten Weg?

MzKlMu

Hallo,
ZitatAber leider lässt sich die Combo nicht auf LOCKED stellen.
wie kommst Du darauf?
Eine Combo lässt sich wie jede Textbox auch auf LOCKED stellen.
Gruß Klaus

accessy

Mist !!
Immer diese Kleinigkeiten, oder Unachtsamkeiten.
Fehler gefunden.