![]() |
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 |
Re: RecordCount
Keine Ahnung von .NET, aber hier hätte ich n SQL Statement für dich.
SQL-Code:
select count(*) from TABELLE
|
Re: RecordCount
Hm, darauf würde ich mich aber nicht verlassen, wenn man mit den Daten iterieren möchte.
Ein
Delphi-Quellcode:
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:
SELECT * FROM user WHERE name='Maier'
Delphi-Quellcode:
ist man auf der sicheren Seite.
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; Wenn man jetzt aber den Weg zu Fuß macht mit:
Delphi-Quellcode:
kann es unter Umständen sein, dass dies durch den zeitlichen Abstand nich immer zu den gewünschten Ergebnissen führt.
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; Wenn es nicht anders geht, wäre evtl. eine Alternative bei Variante 2 den Table solange zu locken. Gruß Igotcha |
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
|
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. |
Re: RecordCount
Hier mal ein Schnipsel, den man hier mit etwas Mühe auch selbst gefunden bzw daraus abgeleitet hätte. ;)
Delphi-Quellcode:
Für einen einzelnen Wert würde auch das reichen:
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...
Delphi-Quellcode:
Auch das war eigentlich ziemlich offensichtlich. Schaue mal in die SDK Doku (findest du im Start menü), da werden sie geholfen. ;)
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; |
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