![]() |
RecordCount ?????
Hi!
Habe gerade von einem Kollegen erfahren, dass das Benutzen des "RecordCount" nur bei Desktopdatenbanken richtig funktioniert????? Ich weis nicht, ob das stimmt, was er mir erzählt hat! Kann mir da jemand ne Antowort drauf geben?!?! mfg Snyderburn |
Re: RecordCount ?????
Das stimmt in den meisten Fällen schon. Aber mit einer einfachen SQL-Abfrage kann man das umgehen.
SQL-Code:
oder wie auch immer Deine Bedingung sein soll. Im ersten zurückgelieferten Record, im ersten Feld steht dann die Gesamtanzahl aller Records.
SELECT Count(1) FROM tblAaky WHERE (ID < 50546)
...:cat:... |
Re: RecordCount ?????
Zitat:
Bei MS-SQL bekommt man bei Zugriff über ADO und einem Client-Cursor auch einen gültigen RecordCount. RecordCount ist auch dann gültig wenn mittels MoveLast (Ich hoffe richtiger Methodenname) zum letzten Datensatz gesprungen wird und damit alle Datensätze zum Client übertragen werden müssen. |
Re: RecordCount ?????
Sakuras Methode funktioniert in jedem Fall.
Da musst du nicht erst durch sämtlich Records laufen... (Und hast auch keine Fummeleien mit irgendwelchen Eigenheiten der Compo mit der du auf die DB zugreifst) |
Re: RecordCount ?????
Sakuras Methode hat aber 2 Nachteile:
1, Wenn der SQL-String dynamisch zusammengebaut wurde muß ich mir einen passenden SQL-Count-String aus dem SQl-String erstellen 2, Falls die SQL-Abfrage komplizierter ist (z.B. 2-3 Sekunden auf dem Server benötigt), so wird diese Zeit in ähnlichen Rahmen nochmal für die Count-Abfrage benötigt |
Re: RecordCount ?????
Hallo Snyderburn,
bei Interbase werden z.B. nur soviele Datensätze auf einmal heruntergeladen wie angezeigt werden können. Werden die Daten gar nicht angezeigt, wird genau ein Datensatz heruntergeladen. RecordCount zeigt dann die Anzahl vom Server geholter Datensätze an. die IBx Komponenten kennen die Methode FetchAll, die alle Datensätze holt, dann stimmt auch RecordCount. Im allgemeinen ist eine direkte Abfrage:
SQL-Code:
die sicherste Methode.
SELECT COUNT (*) FROM myTable
|
Re: RecordCount ?????
Wie bei einem Cursor in der DB bekommst du mit ".RecordCount" die Anzahl der Datensätze, die bis dahin durchlaufen wurden.
Hast du einen Abfrage, die meinetwegen ein Grid füllt, ausgeführt und willst zum Schluss die Anzahl der Einträge wissen. Dann wird dir RecordCount auch die exakte Anzahl zeigen. Ansonsten musst du "SELECT Count(*)" nutzen. Wenn du auf einer prof. DB arbeitest dann wird der Optimizer sowieso erkennen, dass du nicht den Inhalt der Tabelle willst, sondern nur die Anzahl der Einträge.
SQL-Code:
ist deshalb immer schneller als
SELECT count(*)
FROM Tabelle
SQL-Code:
SELECT *
FROM Tabelle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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