Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBComboBox-Einträge aus Tabelle laden (https://www.delphipraxis.net/41472-dbcombobox-eintraege-aus-tabelle-laden.html)

CalganX 3. Mär 2005 19:44

Datenbank: MySQL • Version: 4.x • Zugriff über: ZEOS

DBComboBox-Einträge aus Tabelle laden
 
Hi,
ich habe jetzt mal versucht mit Hilfe der Zeos-Komponenten meinem Programm eine Datenbankanbindung zu verpassen. Soweit so gut.
Nun möchte ich eine Tabelle (languages) in einer DBComboBox anzeigen lassen (von allen Einträgen soll das Feld charName dort ein Item in der ComboBox sein). Das funktioniert nur in sofern, dass - wenn Style auf csDropDown steht - ein einziger Eintrag als Text für die ComboBox vorhanden ist, wenn ich jedoch Style auf csDropDownlist stelle, dann geht das nicht, denn dann steht nirgendwo der Inhalt der Tabelle. :?

Kann jemand von euch einem Datenbank-Anfänger ein wenig auf die Sprünge helfen? :stupid:

Chris

Stevie 4. Mär 2005 08:03

Re: DBComboBox-Einträge aus Tabelle laden
 
Hi Chak,

das ist ein beliebter Fehler! :lol:
Die DBComboBox ist nicht dafür da, eine DB-Datenmenge als Items aufzunehmen, sondern, aus einer "manuell" eingegebenen Menge an Einträgen auszuwählen, um sie in das verbundene DB-Feld einzutragen!
Wenn du allerdings aus einer DB-Datenmenge auswählen willst, um sie in ein Feld einer anderen DB-Datenmenge einzutragen, dann benötigst du eine DBLookupComboBox.
Dritter Fall wäre, dass du bloß die Elemente einer DB-Datenmenge in eine ComboBox eintragen willst, um aus diesen in deiner Anwendung auszuwählen, ohne die Auswahl irgendwo in einer anderen Datenmenge zu speichern. Dann müsstest du deine Datenmenge durchlaufen und jeden Wert in deine ComboBox.Items schreiben.

MfG
Stevie

CalganX 4. Mär 2005 13:03

Re: DBComboBox-Einträge aus Tabelle laden
 
Hi Stevie,
ah... :idea:
Okay, darauf soll man aber ja auch erstmal kommen. *g*

Gut, für mich ist nur Fall 3 interessant, da aus der ComboBox eine Sprache (also ein Eintrag in der Datenbank) ausgewählt werden soll und dadurch eine neue SQL-Abfrage gestartet werden soll. Aber das sollte nicht das Problem sein. :)

Danke für deine Hilfe,
Chris

urs.liska 4. Mär 2005 13:35

Re: DBComboBox-Einträge aus Tabelle laden
 
Ich glaube, das geht auch mit der DBLookupComboBox, indem man nur ListSource und ListField, nicht aber DataSource und DataField ausfüllt.
Dann liest die Kompo (glaube ich) die Daten aus der List-Tabelle (in Deinem Fall languages) ein, und Du kannst einen Item auswählen.

Viel Erfolg
Urs

Stevie 4. Mär 2005 14:02

Re: DBComboBox-Einträge aus Tabelle laden
 
Zitat:

Zitat von urs.liska
Ich glaube, das geht auch mit der DBLookupComboBox, indem man nur ListSource und ListField, nicht aber DataSource und DataField ausfüllt.
Dann liest die Kompo (glaube ich) die Daten aus der List-Tabelle (in Deinem Fall languages) ein, und Du kannst einen Item auswählen.

Oh, stimmt, wieder was gelernt! :???:
Also ListSource, ListField (das, was in dem Control angezeigt wird) und KeyField (der Wert, der in der anderen Datenmenge gespeichert würde, i.A. die ID) setzen und dann über DBLookupCompoBox.KeyValue den ausgewählten Wert holen. :thumb:

P.S. Wenn man KeyField vergisst, dann kann man das Teil nicht aufklappen...

CalganX 4. Mär 2005 16:07

Re: DBComboBox-Einträge aus Tabelle laden
 
Hi,
leider klappt das mit TDBLookupCombo bei mir so ganz, wie es sollte. :(
Zitat:

Zitat von Stevie
Also ListSource, ListField (das, was in dem Control angezeigt wird) und KeyField (der Wert, der in der anderen Datenmenge gespeichert würde, i.A. die ID) setzen und dann über DBLookupCompoBox.KeyValue den ausgewählten Wert holen. :thumb:

Habe bei mir (D2005) leider nur LookupSource und LookupField. Und wenn ich ersteres zu ordnen will (weise mein DataSource zu, weil ich nichts anderes auswählen kann), kommt der Fehler:
Zitat:

---------------------------
Fehler
---------------------------
LookupSource muss mit TTable-Komponente verbunden werden.
---------------------------
OK
---------------------------
Was tun? :?

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz