// Die Anzahl der Sätze einer Datenbank kann man eigentlich über die Eigenschaft
//
RecordCount ermitteln. Seltsamerweise liefert diese Eigenschaft nicht immer
// den korrekten Wert. Besser ist es, die Sätze mittels SQL zu zählen. Das hat
// zusätzlich den Vorteil, durch eine Bedingung nur bestimmte Sätze auszählen
// zu können.

// Getestet mit D4 unter WinME

function DB_Anzahl(tb: TTable; Bedingung: string): longint; 
begin 
  if Bedingung <> '' then Bedingung := ' WHERE ' + Bedingung; 
  with TQuery.Create(nil) do 
  try 
    SQL.Text := 'SELECT COUNT(*) FROM "' + tb.Tablename + '"' + Bedingung + ';'; 
    Open; 
    result := Fields[0].AsInteger; 
  finally 
    free; 
  end; 
end; 
 
 
// alle Datensätze werden gezählt 
procedure TForm1.Button4Click(Sender: TObject); 
var 
  vergleich: string; 
begin 
  vergleich := ''; 
  showmessage(inttostr(DB_Anzahl(Table1, vergleich))); 
end; 
 
// alle Datensätze, bei denen im Feld NAME das Wort Meier eingetragen 
// ist, werden gezählt 
procedure TForm1.Button5Click(Sender: TObject); 
var 
  vergleich: string; 
begin 
  vergleich := 'NAME = "Meier"'; 
  showmessage(inttostr(DB_Anzahl(Table1, vergleich))); 
end; 
 
// alle Datensätze, bei denen im Feld NAME ein 'sch' vorhanden 
// ist, werden gezählt. Groß- und Kleinschreibung  beachten! 
procedure TForm1.Button6Click(Sender: TObject); 
var 
  vergleich: string; 
begin 
  vergleich := 'NAME LIKE "%sch%"'; 
  showmessage(inttostr(DB_Anzahl(Table1, vergleich))); 
end; 
 
// alle Datensätze Derjenigen, die am aktuellen Datum 
// Geburtstag haben, werden gezählt. 
// Bedingung: Das Feld GEBOREN ist ein Datumsfeld und kein String 
procedure TForm1.Button7Click(Sender: TObject); 
var 
  vergleich: string; 
  Year, Month, Day: word; 
begin 
  decodedate(date, Year, Month, Day); 
  vergleich := '(EXTRACT(MONTH FROM GEBOREN) = "' + inttostr(month) + 
    '") AND (EXTRACT(DAY FROM GEBOREN) = "' + inttostr(day) + '")'; 
  showmessage(inttostr(DB_Anzahl(Table1, vergleich))); 
end;

 



Zugriffe seit 6.9.2001 auf Delphi-Ecke