Anzahl einer SQL-Abfrage ermitteln?

Hallo,

ich habe in meinem Programm eine Suchfunktion mit Hilfe einer SQL-Abfrage eingebaut. Die gefundenen Treffer stelle ich in einem DBGrid dar. Das funktioniert auch alles einwandfrei. Aber nun möchte ich noch in einem Extra-Feld die Anzahl der gefundenen Ergebnisse anzeigen. Ich habe es schon mit einem berechneten Feld versucht. Doch was gebe ich da als Programmiercode ein?
Oder gibt es eine andere Möglichkeit?

Danke schon mal im Voraus.

Gruß Ebi

Einerseits, werden deine suchtreffer vermutlich in einem array zurückgegeben. Hier lässtsich die anzahl der elemente auslesen.
Andererseits gibt es die möglichkeit deine abfrage mit SELECT COUNT (was auch immer) zu wiederholen, das liefert die anzahl der „treffer“

Greez n eze Tom

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

COUNT ist nicht wirklich eine gute Idee, dann macht die DB die Abfrage zweimal, was entsprechend Zeit braucht. Nimm einfach das RecordCount-Property.

Andererseits gibt es die möglichkeit deine abfrage mit SELECT
COUNT (was auch immer) zu wiederholen, das liefert die anzahl
der „treffer“

Hallo Tom,

die Idee mit „SELECT COUNT“ habe ich verwirklicht und das scheint auch zu funktionieren. Leider weiß ich nicht, wie ich das Ergebnis zur Anzeige bringe.

Zum besseren Verständnis hier mein Code:
SQLSuche.Close;
SQLSuche.SQL.Clear;
SQLSuche.SQL.Add(‚SELECT COUNT(*) FROM adressen.db‘);
SQLSuche.SQL.Add(‚WHERE ‚+AktSuchbegriff+‘ IS NOT NULL‘);
SQLSuche.Open;
LabelANZAHL.Caption := ???

Gruß Ebi

die Idee mit „SELECT COUNT“ habe ich verwirklicht und das
scheint auch zu funktionieren. Leider weiß ich nicht, wie ich
das Ergebnis zur Anzeige bringe.

Wenn du das Programm unbedingt langsamer machen willst, machst du das halt so

SQLSuche.Close;
SQLSuche.SQL.Clear;
SQLSuche.SQL.Add(‚SELECT COUNT(*) FROM adressen.db‘);
SQLSuche.SQL.Add(‚WHERE ‚+AktSuchbegriff+‘ IS NOT NULL‘);
SQLSuche.Open;
LabelANZAHL.Caption := ???

LabelANZAHL.Caption := SQLSuche.Fields[0].AsString;

Vernünftiger wär die Komplettlösung - Suche & Info in einem:

SQLSuche.Close;
SQLSuche.SQL.Clear;
SQLSuche.SQL.Add(‚SELECT * FROM adressen.db‘);
SQLSuche.SQL.Add(‚WHERE ’ + AktSuchbegriff + ’ IS NOT NULL‘);
SQLSuche.Open;
LabelANZAHL.Caption := IntToStr(SQLSuche.RecordCount);

1 Like

Hallo Roger,

vielen Dank für Deine Hilfe.

Natürlich habe ich jetzt die schnelle Variante genommen. Das funktioniert auch prima. Ich wußte halt nur nicht, wie man das macht.

Gruß Ebi