![]() |
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:
Diese Anweisung funktioniert auch so wie ich es wollte.
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; Die Probleme liegen bei der Umsetzung in Delphi. Der Code dazu sieht so aus:
Delphi-Quellcode:
Wenn ich den Code so ausführe wird immer nur ein Datum in der ComboBox angezeigt.
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; Was mache ich falsch? :gruebel: Danke und Gruß Tim |
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:
P.S. zu lahm :lol:
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 |
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; |
Re: ComboBox mit Daten einer SQL-Abfrage füllen
Delphi-Quellcode:
[Edit]Und wieder war ich zu langsam :cry: Dafür habe ich schöne kommentare ;-) [/edit]
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; |
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 10:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz