Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.433 Beiträge
 
Delphi 7 Professional
 
#5

AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 12:28
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.
  Mit Zitat antworten Zitat