Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism RecordCount (https://www.delphipraxis.net/57887-recordcount.html)

michael.cohrs 28. Nov 2005 12:52

Datenbank: Interbase • Zugriff über: anderes

RecordCount
 
Hallo zusammen,

ich versuche hier gread ne kleine Dephi.NET anwendung zu schreiben, der Interbase Server läuft auf einem entfernten Rechner. Ich möchte nun die Anzahl der enthaltenen Datensätze lesen, leider gibt es scheinbar soetwas wie RecordCount nicht mehr. Kann mir jemand sagen oder vieleicht nen CodeSnipsel zur Verfügung stellen wie ich an die Anzahl der Datensätze komme?

Vielen Dank

Michael

BeerBear 28. Nov 2005 13:11

Re: RecordCount
 
Keine Ahnung von .NET, aber hier hätte ich n SQL Statement für dich.
SQL-Code:
select count(*) from TABELLE

Igotcha 28. Nov 2005 13:48

Re: RecordCount
 
Hm, darauf würde ich mich aber nicht verlassen, wenn man mit den Daten iterieren möchte.

Ein
Delphi-Quellcode:
SELECT * FROM user WHERE name='Maier'
gibt im Query.Recordcount genau die Anzahl der Datensätze zurück, die in dieser Abfrage angefallen sind. Wenn man z.B. so weiterarbeiten möchte:

Delphi-Quellcode:
Query.Open;
iRecordCount:=Query.Recordcount;
ShowMessage(inttostr(iRecordCount)+' Datensätze mit den Kriterien vorhanden, welche jetzt bearbeitet werden');
While not Query.eof do
begin
    mache was mit den Records
    Query.Next;
end;
ist man auf der sicheren Seite.

Wenn man jetzt aber den Weg zu Fuß macht mit:

Delphi-Quellcode:
Query.SQL.Text:='SELECT COUNT(*) FROM user WHERE name='Maier'';
Query.Open;
iRecordCount:=Query.Fields[0].asInteger;
ShowMessage(inttostr(iRecordCount)+' Datensätze mit den Kriterien vorhanden, welche jetzt bearbeitet werden');

und dann ein

For ix:=0 to iRecordCount do
begin
   mache was mit den Records
   Query.Next;
end;
kann es unter Umständen sein, dass dies durch den zeitlichen Abstand nich immer zu den gewünschten Ergebnissen führt.

Wenn es nicht anders geht, wäre evtl. eine Alternative bei Variante 2 den Table solange zu locken.

Gruß Igotcha

michael.cohrs 28. Nov 2005 13:51

Re: RecordCount
 
das problem ist das ich bei .net keine query habe und es gibt dort ebenfalls keine fields mehr so wie ich es aus den älteren delphi versionen kenne. mir fehlen die kenntnisse in delphi .net um an die anzahl der einträge der datenbank zu kommen

BeerBear 29. Nov 2005 17:00

Re: RecordCount
 
Wenn du irgendwie n SQL Statement "ablassen" kannst, sollte mein Statement oben dich weiterbringen.
Eine where Clause kannst du bei Bedarf auch dranhängen.

Elvis 29. Nov 2005 17:24

Re: RecordCount
 
Hier mal ein Schnipsel, den man hier mit etwas Mühe auch selbst gefunden bzw daraus abgeleitet hätte. ;)
Delphi-Quellcode:
var
  connection : IDbconnection;
  command   : IDbCommand;
  reader    : IDataReader;
  parameter : IDataParameter;
begin

  connection := deineConnection;
  command := connection.CreateCommand();
  try
    command.CommandText := 'SELECT X FROM Y WHERE Z = :Z';
    parameter := command.CreateParameter();
    command.Parameters.Add(parameter);
    parameter.DbType := DbType.Int32;
    parameter.Value := 1;
   
    reader := command.ExecuteReader();
    try
      while reader.Read() do
       irgendeinContainer.Add(new SomeClass(reader.GetInt32(0)));
    finally
      reader.Dispose();
    end;
  finally
    command.Dispose();
  end;
  Anzahl := irgendeinContainer.Count;
  // mache was mit den Daten...
Für einen einzelnen Wert würde auch das reichen:

Delphi-Quellcode:
  command := connection.CreateCommand();
  try
    command.CommandText := 'SELECT count(X) FROM Y WHERE Z = :Z';
    parameter := command.CreateParameter();
    command.Parameters.Add(parameter);
    parameter.DbType := DbType.Int32;
    parameter.Value := 1;
    Anzahl := command.ExecuteScalar() as Integer;
  finally
    command.Dispose();
  end;
Auch das war eigentlich ziemlich offensichtlich. Schaue mal in die SDK Doku (findest du im Start menü), da werden sie geholfen. ;)

michael.cohrs 29. Nov 2005 18:24

Re: RecordCount
 
Vielen Dank für eure Hilfe,

ich habe das Problem mit eurer Hilfe gelöst, irgendwie hab ich den Baum vor lauter Blätter nicht gesehen. Einen schönen Abend euch und nochnmals vielen Dank

Michael Cohrs


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 Uhr.

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