In Fields befinden sich alle Spalten aus dem Ergebnis des SQLs, die erste Spalte ist in Fields[0], die zweite in Fields[1], ...
In
query.Fields.Count steht die Anzahl der Spalten aus dem Abfrageergebnis. Enthält das Ergebnis (wie hier) nur eine Spalte, so ist
query.Fields.Count = 1 und der Inhalt dieser einen Spalte ist in
query.Fields[0] zu finden. Enthält das Ergebnis einer Abfrage zehn Spalten, so ist
query.Fields.Count = 10 und die einzelnen Spalteninhalte können
query.Fields[0] bis
query.Fields[9] entnommen werden.
Da das etwas abstrakt und vor allem auch unhandlich ist, kann man auch die von Lemmy angedeutete Variante nutzen.
Delphi-Quellcode:
query.SQL.Text := '
SELECT COUNT(*) AS Anzahl FROM BeginnerDB';
query.Open();
outputMemo.Text :=
query.FieldByName('
Anzahl').AsString;
Im
SQL gibt man für jede Spalte den Namen an, bei
select * from Tabelle
werden die Namen aus der Tabelle genommen.
Im Quelltext kann man dann die Werte der Spalten über
query.FieldByName('NameDerSpalte') erhalten, was deutlich einfacher und verständlicher ist, da man hier nicht wissen muss, an welcher Position sich die Spalte im Abfrageergebnis befindet. Hier ist es also egal, ob sich eine Spalte im Ergebnis nun in
query.Fields[0],
query.Fields[1], ...,
query.Fields[n] befindet. Die "Suche" nimmt einem FieldByName ab und bei Änderungen in der Abfrage und einer daraus eventuell resultierenden Verschiebung der Spalten im Ergebnis, muss hier nicht im Quelltext "nachgebessert" werden, um sicherzustellen, das
query.Fields[0] ... noch auf die korrekte Spalte verweisen.