Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank öffnen (https://www.delphipraxis.net/55318-datenbank-oeffnen.html)

MasterBasti 19. Okt 2005 14:37

Datenbank: Interbase • Zugriff über: IBComponenten

Datenbank öffnen
 
Hallo zusammen,

habe komischerweise mit den Interbase Datenbanken folgendes Problem:

Und zwar versuche ich mittels einer Schleife Daten aus einer beliebigen Tabelle zu lesen,
so weit so gut, leider findet der aber nur den ersten Datensatz. Heisst, wenn ich mit showmessage den RecordCount
ausgebe, steht dieser auf 1. Was kann das sein ?

Wenn ich hingegen im aktiven Fenster ein DBGrid geöffnet habe, zeigt der mir die richtige Anzahl an
Datensätzen an. Muss ich da noch irgendwas einstellen ?

Wäre sehr dankbar für Hilfe.

Gruß

MasterBasti

Duke_2004 19. Okt 2005 14:42

Re: Datenbank öffnen
 
Das Problem hab ich auch immer mit dem RecordCount... Wenn man zum letzten Datensatz springt und gleich wieder zum ersten, zeigt er im RecordCount die richtige Anzahl an... Is ja wohl aber eigentlich net der Sinn der Sache...

MasterBasti 19. Okt 2005 14:51

Re: Datenbank öffnen
 
Ich danke dir vielmals Duke! Klasse Tipp. Hast mir sehr weitergeholfen....
Super Forum hier, musste nichtmal 10 Minuten warten ;-)

Gruß

MasterBasti

Duke_2004 19. Okt 2005 15:00

Re: Datenbank öffnen
 
Naja, schön und gut... Aber als DIE ultimative Lösung würd ich das jetzt net betrachten... :mrgreen:

MasterBasti 19. Okt 2005 15:17

Re: Datenbank öffnen
 
Das ist war, evtl. ein dicker Bug ?
Wie dem auch sei, es geht weiter ;-)

dfried 19. Okt 2005 15:19

Re: Datenbank öffnen
 
Bug ist das mit Sicherheit keiner! Eher ein Feature :)

Wenn du die Schleife nicht über den Recordcount machst sondern einfach "while not IBTable.EOF" (kann auch query sein) bekommst du immer alle Datensätze. Recordcount enthält bei den IB Komponenten immer nur die Anzahl Datensätze die schon vom Server gelesen wurden und standardmäßig werden halt nicht alle gelesen (Was bei SQL-Datenbanken auch durchaus Sinn macht!). Alternativ kannst du auch "FetchAll" aufrufen, dann werden alle Datensätze vom Server erst mal gelesen.

Jelly 19. Okt 2005 15:28

Re: Datenbank öffnen
 
Zitat:

Zitat von MasterBasti
Das ist war, evtl. ein dicker Bug ?

Kein Bug, sondern liegt am Cursor, den Du nutzt um auf die Datenbank zuzgreifen. Liegt der Cursor auf Serverseite, kann dein Client, also dein Delphi Programm, nicht wissen, wieviele Datensätze deine Query liefert, da nicht sofort alle Datensätze zum Client übertragen werden. Durch einen Lastbefehl, scrollst du von Delphi Seite her durch deine ganze Datenmenge, dadurch ist nun auch Delphi die Anzahl bekannt.

Bessere Lösung: ein eigener SQL Befehl der Dir die Datensatzanzahl ausspuckt:
SQL-Code:
select count(ID) from Tabelle where ....


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