Entwickler-Ecke
Datenbanken - ComboBox füllt sich ned??
rob87 - Di 02.12.08 09:24
Titel: ComboBox füllt sich ned??
Hallo,
ich hab grad des seltsame Problem, dass meine ComboBox nur einen Wert enthält?? Den des ersten Datensatzes???
Meine ComboBox ist eine DBComboBox-Komponente und ich seh immer nur den Inhalt der im ersten Datensatz drinsteht. Kann die ComboBox aber ned aufmachen und den Wert ändern?
Ich mein, ich könnt die Daten auch mit ner Schleife aus der DB in ne normale ComboBox füllen, aber des muas ja ned sein, oder??
Ich will da was auswählen können, und dann soll er in einer DB den Zeiger auf den Datensatz setzen, wo er den Wert aus der CB in einem Attribut findet
delphiprogrammierer - Di 02.12.08 11:35
Hoi,
was du benötigst ist nich die DBComboBox sonder die DBLookupComboBox.
Grusse
Delphiprogrammierer
rob87 - Di 02.12.08 12:38
delphiprogrammierer hat folgendes geschrieben : |
Hoi,
was du benötigst ist nich die DBComboBox sonder die DBLookupComboBox.
Grusse
Delphiprogrammierer |
Hab ich geändert? DataSource und DataField eingebunden. Nun geht gar nix mehr :-(
rob87 - Di 02.12.08 12:40
delphiprogrammierer hat folgendes geschrieben : |
Hoi,
was du benötigst ist nich die DBComboBox sonder die DBLookupComboBox.
Grusse
Delphiprogrammierer |
Hab ich geändert? DataSource und DataField eingebunden. Nun geht gar nix mehr. Nur noch eine ComboBox die ich behandeln kann, wie wenn sie enabled = true wär ??
delphiprogrammierer - Di 02.12.08 14:47
Du must natürlich auch ListSource, ListField und KeyField angeben
Nehmen wir mal an du hast eine Tabelle mit Anreden "tbl_anrede" und eine Tabelle tbl_personen mit einem Feld refAnrede, dann sieht es so aus :
ListSource hat das SQL select internalid, bezeichnung from tbl_anrede
ListField ist auf bezeichnung gesetzt
Keyfield ist auf internalid gesetzt
DataSource ist die tabelle tbl_personen und das datafield ist refanrede. Sobald du die tabelle tbl_personen und tbl_anreden auf aktiv setzt und personen mit einer gültigen Anrede in der Tabelle stehen, wird in der ComboBox die Anrede in Textform geschrieben.
Falls noch was offen ist, einfach schreiben.
rob87 - Mi 03.12.08 09:00
delphiprogrammierer hat folgendes geschrieben : |
Du must natürlich auch ListSource, ListField und KeyField angeben
Nehmen wir mal an du hast eine Tabelle mit Anreden "tbl_anrede" und eine Tabelle tbl_personen mit einem Feld refAnrede, dann sieht es so aus :
ListSource hat das SQL select internalid, bezeichnung from tbl_anrede
ListField ist auf bezeichnung gesetzt
Keyfield ist auf internalid gesetzt
DataSource ist die tabelle tbl_personen und das datafield ist refanrede. Sobald du die tabelle tbl_personen und tbl_anreden auf aktiv setzt und personen mit einer gültigen Anrede in der Tabelle stehen, wird in der ComboBox die Anrede in Textform geschrieben.
Falls noch was offen ist, einfach schreiben. |
Hm??? Versteh ich grad noch ned ganz. :?
Also ich hab eine Tabelle. "Tab01", und der Wert des Attributes "Textfeld0815" soll in meine ComboBox.
Ich hab ein AdoQuery -> DS -> DBGrid bzw. DBComboBox/DBLookupComboBox
delphiprogrammierer - Mi 03.12.08 10:23
schreib doch einfach mal die tabellennamen dazu, damit ich mir vorstellen kann was du möchtest.
rob87 - Mi 03.12.08 10:25
delphiprogrammierer hat folgendes geschrieben : |
schreib doch einfach mal die tabellennamen dazu, damit ich mir vorstellen kann was du möchtest. |
Darf ich leider ned. Datenschutz. Sind Firmendaten :-( Aber ich versuch das Ganze nochmal etwas zu erläutern:
Mein DBGrid bzw. das Query dahinter sucht mir aus zwei Tabellen versch. Spalten zusammen und listet diese auf (ganz einfacher select mit join und where).
nun soll die ComboBox beim Programmstart mit Werten aus einer Spalte aus einer anderen Tabelle gefüllt werden. Und diese ComboBox-Auswahl wird dann weiter verarbeitet... Die Verarbeitung klappt auch. Es wird auch ein richtiger Attributwert in die ComboBox eingetragen. Aber ich kann halt eben keinen anderen auswählen
------- Soweit so gut --------------------------------------------------------------
Und meine Frage ist nun, wie kann ich eine ComboBox mit den Werten aus einer Spalte füllen und diese dann auch auswählen
1.) DBComboBox einsetzen und DataField verknüpfen
2.) Normale ComboBox zu Beginn mit einer Schleife (welche durch die eine Tabelle geht, wo meine gewünschte Spalte drin ist) füllen. Beides hab ich schon getestet
rob87 - Mi 03.12.08 11:49
rob87 hat folgendes geschrieben : |
Und meine Frage ist nun, wie kann ich eine ComboBox mit den Werten aus einer Spalte füllen und diese dann auch auswählen
1.) DBComboBox einsetzen und DataField verknüpfen
2.) Normale ComboBox zu Beginn mit einer Schleife (welche durch die eine Tabelle geht, wo meine gewünschte Spalte drin ist) füllen. Beides hab ich schon getestet |
So. Ich mach nun einfach folgendes beim FormShow:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| CBxyz.Clear; repeat CBxyz.Items.Add(Tabelle4711.FieldByName('Spalte0815').Value); Tabelle4711.Next; until Tabelle4711.Eof; CBxyz.ItemIndex := 0; |
Funktioniert. Passt. Fertig!!! Zwar seltsam mit der DBComboBox. Aber so gehts auch
Delete - Mi 03.12.08 12:49
Ich würde allerdings statt der Fußschleife (repeat) eine Kopfschleife (while) verwenden, sonst knallt es bei leeren Datenmengen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!