Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DataSet.RecordCount -nur sichtbare Datensätze? (https://www.delphipraxis.net/85709-dataset-recordcount-nur-sichtbare-datensaetze.html)

cugar 3. Feb 2007 16:08

Datenbank: interbase • Version: 7.5 • Zugriff über: delphi

DataSet.RecordCount -nur sichtbare Datensätze?
 
Hallo,
möchte mir die Anzahl der Datensätze einer DataSet anzeigen lassen, es sind tatsächlich 147, DBGrid zeigt mir am Stück 28 und :
DataModule1.IBDSProdukte.RecordCount liefert mir auch nur 28,
habe ich da etwas nicht verstanden??? :roll: (über SQL mit count(*) möchte ich nicht)

Gruß
cugar

Gruber_Hans_12345 3. Feb 2007 16:15

Re: DataSet.RecordCount -nur sichtbare Datensätze?
 
eventuell mal ein DataSet.FetchAll probieren, damit alle Datensätze geladen werden?

MagicAndre1981 3. Feb 2007 16:29

Re: DataSet.RecordCount -nur sichtbare Datensätze?
 
Zitat:

Zitat von cugar
möchte mir die Anzahl der Datensätze einer DataSet anzeigen lassen, es sind tatsächlich 147, DBGrid zeigt mir am Stück 28 und :
DataModule1.IBDSProdukte.RecordCount liefert mir auch nur 28,

ist alles richtig so

Zitat:

Zitat von cugar
habe ich da etwas nicht verstanden??? :roll: (über SQL mit count(*) möchte ich nicht)

genau du erwartest das alte BDE-Verhalten, das ist aber falsch. RecordCount gibt die nur die Anzahl der Datensätze wieder, die von gefetched worden sind. Du musst also über COUNT(PK) gehen :zwinker:

cugar 3. Feb 2007 16:42

Re: DataSet.RecordCount -nur sichtbare Datensätze?
 
Schade, muß ich drauf verzichten, count(*) bedeutet "Group by", will meine SQL's nicht noch komplizierter machen!

Vielen Dank und schönen Samstag Abend noch!
cugar

jbg 3. Feb 2007 16:44

Re: DataSet.RecordCount -nur sichtbare Datensätze?
 
Subselects: Select count(*) from (select ...) sollte da helfen (sofern die Datenbank das beherrscht)

cugar 3. Feb 2007 17:03

Re: DataSet.RecordCount -nur sichtbare Datensätze?
 
Werde ich versuchen, es ist InterBase 7.5

marabu 3. Feb 2007 17:42

Re: DataSet.RecordCount -nur sichtbare Datensätze?
 
Hallo cugar,

du hast zwar die Komponenten nicht verraten mit denen du auf Interbase zugreifst, aber die TIBQuery aus den Delphi IBX-Komponenten liefert dir in der Eigenschaft RowsAffected die gesuchte Zahl. Andere Komponenten dürften das ähnlich machen, da alle auf dem Call-Level-Interface der Datenbank aufsetzen - und dort ist diese Information selbstverständlich.

Grüße vom marabu

omata 3. Feb 2007 18:22

Re: DataSet.RecordCount -nur sichtbare Datensätze?
 
@cugar: Mach erst ein Query.Last und dann ein Query.First nach dem Open, dann müsste RecordCount auch korrekt sein.

Gruss
Thorsten

cugar 3. Feb 2007 19:35

Re: DataSet.RecordCount -nur sichtbare Datensätze?
 
Greife über IBDataSet auf die Tabellen in der InterBase zu, danke für Eure Tipps!

Bernhard Geyer 3. Feb 2007 20:03

Re: DataSet.RecordCount -nur sichtbare Datensätze?
 
Zitat:

Zitat von MagicAndre1981
genau du erwartest das alte BDE-Verhalten, das ist aber falsch. RecordCount gibt die nur die Anzahl der Datensätze wieder, die von gefetched worden sind. Du musst also über COUNT(PK) gehen :zwinker:

Das ist kein Verhalten der BDE sondern ist abhängig von der verwendeten Datenbank und der verwendeten Curserlocation. RecordCount kann nur dann einen gültigen Wert beinhalten wenn das Ergebnis feststeht. Da aber diverse SQL-Datenbanken es fertig bringen schon Daten zum Client zu liefern obwohl die Abfrage noch nicht komplett ausgeführt wurde kann RecordCount auch maximal den bisherigen Abfragestand am Client liefern (Bei verwendung der BDE bekommt man hier auch teilweise -1).


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 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