AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RecordCount ?????

Ein Thema von Snyderburn · begonnen am 5. Dez 2003 · letzter Beitrag vom 6. Dez 2003
Antwort Antwort
Snyderburn

Registriert seit: 19. Sep 2003
85 Beiträge
 
Delphi 2005 Architect
 
#1

RecordCount ?????

  Alt 5. Dez 2003, 09:44
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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: RecordCount ?????

  Alt 5. Dez 2003, 09:49
Das stimmt in den meisten Fällen schon. Aber mit einer einfachen SQL-Abfrage kann man das umgehen.

SELECT Count(1) FROM tblAaky WHERE (ID < 50546) oder wie auch immer Deine Bedingung sein soll. Im ersten zurückgelieferten Record, im ersten Feld steht dann die Gesamtanzahl aller Records.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: RecordCount ?????

  Alt 5. Dez 2003, 10:39
Zitat:
Habe gerade von einem Kollegen erfahren, dass das Benutzen des "RecordCount" nur bei Desktopdatenbanken richtig funktioniert?????
RecordCount funktioniert u.U. auch bei "richtigen" SQL-Datenbanken. Hierbei kommt es jedoch sowohl auf den Zugriffsweg (BDE->ODBC, ADO, ...) als auch auf den Cursor-Type an.
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.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: RecordCount ?????

  Alt 5. Dez 2003, 11:31
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)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: RecordCount ?????

  Alt 6. Dez 2003, 12:38
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
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#6

Re: RecordCount ?????

  Alt 6. Dez 2003, 17:21
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:

SELECT COUNT (*) FROM myTable die sicherste Methode.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: RecordCount ?????

  Alt 6. Dez 2003, 21:09
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:
SELECT count(*)
FROM Tabelle
ist deshalb immer schneller als
SQL-Code:
SELECT *
FROM Tabelle
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz