Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Rowsaffected oder RecordCount (https://www.delphipraxis.net/125622-rowsaffected-oder-recordcount.html)

khh 9. Dez 2008 08:42

Datenbank: firebird • Version: 2.1 • Zugriff über: ZEOS

Rowsaffected oder RecordCount
 
hallo zusammen,

ich habe eine query :
select * from ....where...

das ergebnis ist in diesem Falle kein ds da die bedingungen der abfrage in der where-Klausel nicht zutreffen.
warum aber bringt Rowsaffected ( bei EXECsql) als Ergebnis 1 und RecordCount (bei open) als ergebnis 0 ?

Danke Gruss KH

DeddyH 9. Dez 2008 09:06

Re: Rowsaffected oder RecordCount
 
Ein RecordCount von 0 heißt ja, dass keine passenden Daten gefunden wurden, was hier ja auch nach Deiner Aussage zutrifft. Wenn man aber eine Abfrage mit ExecSQL ausführt, darf man sich über merkwürdige Rückgaben nicht wundern. Wieso RowsAffected (=Anzahl der von einer Änderung/Löschung betroffenen Datensätze) 1 zurückgibt, kann ich allerdings auch nicht erklären, das soll mal ein Profi tun.

mkinzler 9. Dez 2008 14:32

Re: Rowsaffected oder RecordCount
 
Möglichweise wurde nicht alle DS gefetcht. Was zeigt er an, wenn du auf den letzten DS gehst?

khh 9. Dez 2008 17:27

Re: Rowsaffected oder RecordCount
 
Zitat:

Zitat von mkinzler
Möglichweise wurde nicht alle DS gefetcht. Was zeigt er an, wenn du auf den letzten DS gehst?

was meinst du mit anzeigen, wie auf den letzten Satz gehen?
ich mache nur ein select um festzustellen ob ein wert des DS true oder false ist.
Da dieser Wert in diesem Satz false ist ist es ja richtig dass er keinen findet wenn ich in diesem Satz nach true abfrage. :|

Nochmal zum Verständnis:
ich frage ab ob ein Satz mit einer eindeutigen id in einem bestimmten feld true stehen hat.
Da dies nicht der Fall ist, bringt RecordCount 0.
RowsAffected bringt aber 1 :-(
warum?

Gruss KH

gmc616 9. Dez 2008 17:53

Re: Rowsaffected oder RecordCount
 
Die Frage nach RowsAffected mach mMn nur Sinn, wenn du Daten änderst mit INSERT, UPDATE oder DELETE.

RecordCount bringt dir bei einem SELECT die Anzahl der getroffen/gefundenen Datensätze.

Warum allerdings nach einem SELECT mit 0 Treffern RowsAffected = 1 ist, kann ich die auch nicht sagen.
Aber wie gesagt. Macht eigentlich auch keinen Sinn danach zu fragen, oder?

khh 9. Dez 2008 18:08

Re: Rowsaffected oder RecordCount
 
Zitat:

Zitat von gmc616
Die Frage nach RowsAffected mach mMn nur Sinn, wenn du Daten änderst mit INSERT, UPDATE oder DELETE.

RecordCount bringt dir bei einem SELECT die Anzahl der getroffen/gefundenen Datensätze.

Warum allerdings nach einem SELECT mit 0 Treffern RowsAffected = 1 ist, kann ich die auch nicht sagen.
Aber wie gesagt. Macht eigentlich auch keinen Sinn danach zu fragen, oder?

da hast du sicher Recht,ist aber trotzdem interessant zu wissen, _warum_ das so ist.


Gruss Kh

mkinzler 9. Dez 2008 20:06

Re: Rowsaffected oder RecordCount
 
Zitat:

was meinst du mit anzeigen, wie auf den letzten Satz gehen?
Delphi-Quellcode:
<DS>.Last;
bevore du dir
Delphi-Quellcode:
<DS>.RecordCount
anzeigen lässt

Sir Rufo 9. Dez 2008 20:11

Re: Rowsaffected oder RecordCount
 
Zitat:

Zitat von mkinzler
Zitat:

was meinst du mit anzeigen, wie auf den letzten Satz gehen?
Delphi-Quellcode:
<DS>.Last;
bevore du dir
Delphi-Quellcode:
<DS>.RecordCount
anzeigen lässt

Das habe ich aber bisher nur dann erlebt, wenn ich die Tabelle dynamisch öffnen lasse. Bei einer statischen Abfrage ist in RecordCount nach dem Öffnen immer der richtige Wert drin (natürlich auch kein asynchroner Fetch ;) )


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