Entwickler-Ecke

Datenbanken - ComboBox mit Attributwerten füllen - zeigt nur den 1.Wert an


loriot - Mo 10.11.08 21:53
Titel: ComboBox mit Attributwerten füllen - zeigt nur den 1.Wert an
Ich möchte eine ComboBox mit Attributwerten einer Spalte einer Tabelle aus einer MySQL Datenbank füllen. Der Nutzer des Programms soll dann z.B. einen Namen auswählen können und in einem DBGrid etwa die Adressdaten dieses Namens angezeigt bekommen (das aber später-jetzt erstmal das Anzeigen aller Namen).

Bei mir zeigt es stets nur den ersten Datensatz aus der tabelle an und nicht alle.

for j:=1 to Table1.RecordCount do
Table1.First;
ComboBox1.Items.add(Table1.FieldByName('Name').AsString);
Table1.Next;


Table1 ist die Tabelle, wo die Namen in der DB drin stehen.

DANKE!!!


Xentar - Mo 10.11.08 22:00

1. Delphi TAGs hier im Forum verwenden
2. begin und end fehlen
3. Wieso "Table1.First" IN der Schleife?! Kein Wunder, dass nur der erste angezeigt wird.
4. Gibt ne Komponente namens "DBCombobox" oder so ähnlich - die macht das soweit ich weiß schon automatisch.


loriot - Mo 10.11.08 22:12

var j:integer;
begin
Table1.first;
for j:=0 to Table1.RecordCount-1 do
begin
ComboBox1.Items.add(Table1.FieldByName('Name').AsString);
Table1.Next;
end;
end;

Erledigt - DANKE!


Xentar - Mo 10.11.08 22:15

Bleiben noch die Puntke 1 und 4 ;)


loriot - Mo 10.11.08 23:03

Zu Punkt 1 - Ich bin (leider) absoluter Newbie ! Wie geht das?


Ich möchte jetzt den ausgewählten Attributwert an den Query geben:


procedure TForm1.ComboBox1Change(Sender: TObject);
var i:integer;
begin
Query1.Active:=false;
Query1.SQL:=
'Select Geburtsdatum, Ort, Telefon FROM Freunde WHERE Name='
+ComboBox1.items.text[ComboBox1.itemindex];
Query1.Active:=true;
end;


Doch ich bekomme den Fehler:
[Fehler] Unit1.pas(54): Inkompatible Typen: 'TStrings' und 'String'

Kannst du mir bitte nochmal helfen.

zu Punkt 4 - In der DBComboBox wird auch nur ein Wert angezeigt

DANKE!!!


loriot - Mo 10.11.08 23:17


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 procedure TForm1.ComboBox1Change(Sender: TObject); 
var i:integer; 
begin 
Query1.Active:=false; 
Query1.SQL.text:= 
'Select Geburtsdatum, Ort, Telefon FROM Freunde WHERE Name=' 
+ComboBox1.items.text[ComboBox1.itemindex]; 
Query1.Active:=true; 
end;



funktioniert
Grüße!


Xentar - Di 11.11.08 00:50

Hnnng..
[ Delphi] [ /Delphi]
ohne Leerzeichen in den Klammern:


Delphi-Quelltext
1:
2:
3:
4:
procedure test;
begin
  ShowMessagE('So funktionieren Delphi TAGs');
end;


Funktioniert das nun?

Und mit DBCombobox meinte ich: Da muss man normalerweise keinen Quellcode selber schreiben - man stellt einfach nur die Datenbank + Spalte ein, und die wird automatisch gefüllt.


loriot - Di 11.11.08 22:47

Ja - funktioniert jetzt! - Danke für den Tipp mit den Tags!

Mit der DBCombobox habe ich das Problem, dass immer nur der erste Wert in der ausgewählten Spalte angezeigt wird - egal ob DragMode auf Manual oder Automatic steht - im Gegensatz zur DBLookupComboBox - dort geht das wunderbar.
Scheint also eine Eigenschaft bei der DBComboBox zu geben, die man erst aktivieren muss - ich habs jetzt über die normale ComboBox mit obigem Quelltext gelöst.

Grüße und nochmal sorry für die fehlenden Tags...