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

user profile icondelphiprogrammierer hat folgendes geschrieben Zum zitierten Posting springen:
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

user profile icondelphiprogrammierer hat folgendes geschrieben Zum zitierten Posting springen:
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

user profile icondelphiprogrammierer hat folgendes geschrieben Zum zitierten Posting springen:
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

user profile icondelphiprogrammierer hat folgendes geschrieben Zum zitierten Posting springen:
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

user profile iconrob87 hat folgendes geschrieben Zum zitierten Posting springen:

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.