Zitat von
smart:
... dass eine Tabelle schneller ist.
Nun ja, bei der ABS ist das nicht sooo wichtig. Aber bei einem richtigen
DB-Server würdest Du es ganz schnell merken.
Eine TTable überträgt immer
alle Felder und
alleZeilen einer Tabelle zum Client. Filterungen finden dann lokal (beim Client stat).
Wenn Du also eine Tabelle in der Datenbank hast die pro Datensatz 1 kByte belegt und es sind 1000 Datensätze vorhanden wird
immer 1 MegaByte vom Server zum Client übertragen. Auch dann wenn Du viele der Daten überhaupt nicht benötigst.
Bei einem TQuery wird genau das zum Client gesendet was Du vom Server haben möchtest. Wenn Du zum Beispiel:
SELECT feld1 FROM tabellename WHERE ID = 1
an den Server sendest (ID ist ein PK) dann bekommst Du
exakt ein Feld (und halt nur die Datenmeng welches es belegt) vom Server zurück.
Um zu deinem Fall zu kommen:
Delphi-Quellcode:
procedure TForm1.btn_FillComboBoxClick(Sender: TObject);
var
inhalt :
string;
begin
ComboBox1.Clear;
with ABSQuery1
do
begin
Close;
SQL.Text := '
SELECT feld1 FROM tabelle ORDER BY feld1';
Open
First;
while not (Eof)
do
begin
inhalt := Fields[0].AsString;
// Wir wissen das es Feld 0 sein muss!
ComboBox1.Items.Add(inhalt);
Next;
end;
Close;
end;
end;
Wir wissen das der Fielinex 0 sein muss weil wir ja nur ein Feld aus der Tabelle zurückgebenlassen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"