Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensätze mit SQL zählen (https://www.delphipraxis.net/149130-datensaetze-mit-sql-zaehlen.html)

fl63 15. Mär 2010 09:42

Datenbank: BDE • Zugriff über: BDE SQL

Datensätze mit SQL zählen
 
Hallo

Ich möchte die Datensätze einer Tabelle mit SQL zählen und als StatusPanel ausgeben.
Dafür habe ich folgenden Quelltext:

Delphi-Quellcode:
   with Query2 do
   begin
   Active:= false;
   SQL.Clear;
 SQL.Add('Select Count (feld001) as AnZahl from '+ ComboBox1.Text) ;
   StatusBar1.Panels[0].Text:=IntToStr(Anzahl ) ;
   Active := true;
  end;
In Variable Anzahl soll die gesamtZahl der Datensätze dieser Tabelle stehen. Es steht aber eine undefinierbare hohe Zahl (1243048) im Statuspanel. Egal welche Tabelle ob mit 5 oder 100000 Datensätzen diese Zahl ist dieselbe.
Auch das zurücksetzen der Variable Anzahl (Anzahl := 0) führt zu dem Ergebnis,daß in dem Statuspanel 0 steht. Für mich steht fest dieser Textmacht alles andere nur nicht zählen.
Wo ist mein Fehler?

DeddyH 15. Mär 2010 09:43

Re: Datensätze mit SQL zählen
 
Die Reihenfolge ist Dein Fehler. Du musst die Datenmenge erst öffnen, bevor Du Werte auslesen kannst.

fl63 15. Mär 2010 09:51

Re: Datensätze mit SQL zählen
 
Also etwa so? Und anschließend schliessen?
Delphi-Quellcode:
with Query2 do
   begin
   Open;
   Active:= false;
   SQL.Clear;
SQL.Add('Select Count (feld001) as AnZahl from '+ ComboBox1.Text) ;
   StatusBar1.Panels[0].Text:=IntToStr(Anzahl ) ;
   Close;
   Active := true;
  end;
Nach dem Ausprobieren: Fehlermeldung keine SQL Anweisung verfügbar.

p80286 15. Mär 2010 10:29

Re: Datensätze mit SQL zählen
 
Das Grundgerüst für eine Query sieht bei mir immer so aus:
SQL-Code:
Query.close; //sicher ist sicher
query.sql.text:='select irgendwas from irgenwo';
query.open;
if not queryeof
  repat
    ...
    query.next;
  until query.eof;
query.close;
gruß
K-H

DeddyH 15. Mär 2010 10:39

Re: Datensätze mit SQL zählen
 
Delphi-Quellcode:
//zur Sicherheit Datenmenge schließen
Query2.Close;
//Abfragetext setzen
Query2.SQL.Text := 'Select Count(feld001) as Anzahl from '+ ComboBox1.Text;
//Datenmenge öffnen
Query2.Open;
//Ergebnismenge auslesen
StatusBar1.Panels[0].Text:=IntToStr(Query2.FieldByName('Anzahl').AsInteger);
//und wieder schließen
Query2.Close;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz