![]() |
AW: Delphi 7 MySQL TEXT fields
Da hast du schon recht, aber:
Zitat:
|
AW: Delphi 7 MySQL TEXT fields
Ja, aber bei TQuery verlasse ich mich nicht auf RecordCount, weil es eben nicht bei allen Datenbanken sofort auf dem tatsächlichen Wert der zu verarbeitenden Datensätze steht.
Bei DBase wurde beim Lesen von RecordCount das Lesen der gesamten Datenmenge veranlasst. Aber dies erfolgte nicht grundsätzlich für alle beliebigen Datenbanken, sondern nur bei DBase reproduzierbar. Und im aktuellen Fall scheint es ja nicht so zu sein, sonst müsste die For-Schleife ja korrekt funktionieren, weil ja spätestens bei
Delphi-Quellcode:
das holen aller Datensätze engestoßen werden müsste und damit hier ReordCount nicht mehr 1 sein dürfte.
for x := 1 to qry.RecordCount
Interessant wäre zu erfahren, ob ein derartiges Konstrukt zu einem geänderten Verhalten führt:
Delphi-Quellcode:
Enthält hier dann AlleSaetze die tatsächliche Anzahl an Datensätzen oder auch nur 1?
AlleSaetze := qry.RecordCount;
for x := 1 to AlleSaetze do begin ... end; |
AW: Delphi 7 MySQL TEXT fields
Zitat:
|
AW: Delphi 7 MySQL TEXT fields
Heißt das, dass ich bei einem
SQL-Code:
per
select * from tabelle
Delphi-Quellcode:
niemals die tatsächliche, datenbankseitige, Anzahl von Datensätzen bekomme, sondern immer nur die Anzahl der Sätze, die gerade beim Client angekommen ist und dieser dann lokal auswerten kann?
for x := 1 to qry.RecordCount
Das würde doch dann bedeuten, dass das im Eingangspost gezeigte Konstrukt der For-Schleife (gegen eine MySQL-Datenbank) noch nie (bzw. nur zufällig) korrekt gearbeitet haben kann?!? |
AW: Delphi 7 MySQL TEXT fields
Zitat:
Ich hatte in einem alten Programm mal das Problem, dass das RecordCount genau so lange wunderbar funktioniert hat, wie die tatsächliche Anzahl der Datensätze kleiner oder gleich 50 war, denn in diesem Fall war 50 meine Page-Größe. Ob das in deinem Fall auch so war, hängt von den Einstellungen der Query ab, die hier schon ausgiebig diskutiert wurden. Ich habe aus diesem und anderen Gründen der Verwendung von RecordCount schon vor geraumer Zeit abgeschworen, da man zu viele Dinge beachten muss und es dementsprechend eine riesige Fehlerquelle darstellt. |
AW: Delphi 7 MySQL TEXT fields
Zitat:
Zitat:
|
AW: Delphi 7 MySQL TEXT fields
Wie gesagt: Je nach Implementierung zählt RecordCount einfach. Aber auch wenn nicht bzw wenn man selber per COUNT() die Anzahl ermittelt, heißt das nicht, dass sich die Anzahl in Folge nicht ändern kann. Stichworte: Transaktionen/Isolation Level.
Also: for i:=1 to RecordCount ist jedenfalls nicht gut. Besser Next until EOF. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:46 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