![]() |
Datenbank: PostgreSQL • Version: 8.3 • Zugriff über: ZEOS
ZEOS-Query gibt falschen Recordcount zurück
Hallo zusammen!
Bisher hatte ich kaum mal echte Probleme bei der Verwendung der ZEOS-Komponenten. Doch nun stehe ich vor einem kleinen Rätsel. Ich möchte aus einer ganz einfachen Tabelle sämtliche Datensätze holen. Das mache ich so:
Delphi-Quellcode:
lcon:=TZConnection.Create(nil);
lcon.Protocol:='...'; lcon.HostName:='...'; lcon.Port:=5432; lcon.User:='...'; lcon.Database:='...'; lcon.Password:='...'; lcon.Properties.Values['codepage']:='UTF8'; lcon.Properties.Values['client_encoding']:='UTF8'; lcon.Connect; lroq:=TZQuery.Create(nil); lroq.Options:=[doOemTranslate,doCalcDefaults]; lroq.Connection:=con; lroq.SQL.Clear; lroq.SQL.Add('SELECT * FROM basket;'); lroq.ExecSQL; lroq.Open; Direkt danach frage ich ab, wieviele Ergebnis-Datensätze ich bekommen habe:
Delphi-Quellcode:
Ich habe ganz exakt eine Zeile in der Datenbank, allerdings ist c gleich 2. Wenn ich die Ergebnisse in der nun folgenden Schleife abfrage, dann bekomme ich auch zwei Mal den Inhalt der einen, tatsächlich existierenden Zeile aus der DB. Und ja, ich rufe lroq.Next auf.
c:=lroq.RecordCount;
Kann mich jemand mit der Nase in meinen Fehler reindrücken, den ich noch nicht sehe? Oder ist das vielleicht ein bekanntes Problem der ZEOS Library? Besten Dank :) |
Re: ZEOS-Query gibt falschen Recordcount zurück
Und wenn Du die Zeile mit ExecSQL mal weglässt?
|
Re: ZEOS-Query gibt falschen Recordcount zurück
Danke für Deine Antwort. Leider ändert sich dadurch nichts.
|
Re: ZEOS-Query gibt falschen Recordcount zurück
Hallo,
bei einer SQL-Datenbank sollte man RecordCount nicht verwenden. Es kann sein, dass ZEOS hier was falsch macht. Dafür gibt es Select Count(*)
Delphi-Quellcode:
Wozu brauchst du das überhaupt ?
with Query do begin Open; try while not Eof do begin // Datensatz lesen und verwenden Next; end; finally Close; end; end; Heiko |
Re: ZEOS-Query gibt falschen Recordcount zurück
Ah, interessant. Dann werde ich mich künftig an Deine Methode halten.
Aber mir ist gerade die Lösung meines Problems aufgefallen: Meine Query geht an die falsche Datenbank - und zwar wegen der mir angeborenen Blödheit.
Delphi-Quellcode:
Da ich ein Stück Quelltext kopiert und nicht korrekt angepasst habe, geht meine Query an die falsche Datenbank raus, nämlich an "con", nicht "lcon".
lroq.Connection:=con;
Tut mir Leid, die Pferde scheu gemacht zu haben! Nix für ungut :cheers: |
Re: ZEOS-Query gibt falschen Recordcount zurück
Hallo,
argzzzzzz, was für Variablen-Namen ;) lcon, local con ? Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 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