Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ComboBox mit Daten einer SQL-Abfrage füllen (https://www.delphipraxis.net/22413-combobox-mit-daten-einer-sql-abfrage-fuellen.html)

Coder18 17. Mai 2004 14:20


ComboBox mit Daten einer SQL-Abfrage füllen
 
Hallo Allezusammen!

ich bins schon wieder.
Hab ein kleines Problem mit dem Füllen einer ComboBox mit Daten aus einer SQL-Abfrage:

Zur Erklärung ich hab auf meinem Formular eine Datenbank-Tabelle in der mehrere Daten
(Mehrzahl von Datum) in einer Spalte stehen. Diese Daten möchte ich ,nachdem ich Sie per
SQL-Anweisung gruppiert habe, zu einer ComboBox hinzufügen.

Die SQL-Anweisung sieht folgendermaßen aus:

Delphi-Quellcode:
Select Aus_Name As Name, Aus_Datum As Datum
from "W:\Jagusch\FSystem\Fragesystem21_Echt\DB\Auswertung.db"
Where Aus_Name = "Max"
Group By Aus_Name,Aus_Datum;
Diese Anweisung funktioniert auch so wie ich es wollte.

Die Probleme liegen bei der Umsetzung in Delphi. Der Code dazu sieht so aus:

Delphi-Quellcode:
With Query1 do begin
     Active := False;
     SQL.Add('Select Aus_Name As Name, Aus_Datum As Datum');
     SQL.Add('From Tabelle1');
     SQL.Add('Where Aus_Name = "Max"');
     SQL.Add('Group By Aus_Name, Aus_Datum');
     Open;
     ComboBox1.Items.Add(FieldByName('Datum').As String); //Hier liegt das Problem
     Active := False;
end;
Wenn ich den Code so ausführe wird immer nur ein Datum in der ComboBox angezeigt.
Was mache ich falsch? :gruebel:

Danke und Gruß

Tim

Stevie 17. Mai 2004 14:24

Re: ComboBox mit Daten einer SQL-Abfrage füllen
 
Wenn du die Datenmenge öffnest, dann wird der Datencursor im Dataset auf den ersten Satz gelegt. Du musst selber durch die Datenmenge iterieren:

Delphi-Quellcode:
Query1.Open;
while not Query1.Eof do
begin
  ComboBox1.Items.Add(FieldByName('Datum').As String);
  Query1.Next;
end;
Query1.First; //Setzt den Cursor wieder auf die Ausgangsposition
P.S. zu lahm :lol:

Jens Schumann 17. Mai 2004 14:25

Re: ComboBox mit Daten einer SQL-Abfrage füllen
 
Hallo,
wie wäre es damit:
Delphi-Quellcode:
With Query1 do begin
     Active := False;
     SQL.Add('Select Aus_Name As Name, Aus_Datum As Datum');
     SQL.Add('From Tabelle1');
     SQL.Add('Where Aus_Name = "Max"');
     SQL.Add('Group By Aus_Name, Aus_Datum');
     Open;
     While Not EOF do
       begin
       ComboBox1.Items.Add(FieldByName('Datum').As String); //Hier liegt das Problem
       Next;
       end;
     Active := False;
end;

Sharky 17. Mai 2004 14:25

Re: ComboBox mit Daten einer SQL-Abfrage füllen
 
Delphi-Quellcode:
begin
  ComboBox1.Clear // Vorher immer brav die ComboBox leeren
  With Query1 do begin
     Active := False;
     SQL.Add('Select Aus_Name As Name, Aus_Datum As Datum');
     SQL.Add('From Tabelle1');
     SQL.Add('Where Aus_Name = "Max"');
     SQL.Add('Group By Aus_Name, Aus_Datum');
     Open;
     First; // Gehe zum ersten Datensatz
     While Not (Eof) do //Gibt es noch Datensätze
     begin
       ComboBox1.Items.Add(FieldByName('Datum').As String); //Hier liegt das Problem
       Next; // Gehe zum nächsten Datensatz.
     end;
     Active := False;
  end;
end;
[Edit]Und wieder war ich zu langsam :cry: Dafür habe ich schöne kommentare ;-) [/edit]

Coder18 17. Mai 2004 14:33

Re: ComboBox mit Daten einer SQL-Abfrage füllen
 
Vielen Dank an alle!
Die Lösung ist perfekt, genau das was ich gesucht habe! :thuimb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 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