Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem beim Löschen des letzten Datensatzes aus Query (https://www.delphipraxis.net/87971-problem-beim-loeschen-des-letzten-datensatzes-aus-query.html)

spuster 8. Mär 2007 09:56

Datenbank: Access • Version: 2003 • Zugriff über: ADO

Problem beim Löschen des letzten Datensatzes aus Query
 
Hallo zusammen,

hab ein Problem, wenn ich den letzten Datensatz aus einer Query mittels Delete löschen möchte. Letzter Datensatz heißt hier der letzte verbliebene Datensatz in der Query. Alle anderen Datensätze wurden vorher ohne Probleme gelöscht.

Die Fehlermeldung lautet:
"Entweder BOF oder EOF ist True, oder der aktuelle Datensatz wurde gelöscht. Der angeforderte Vorgang benötigt einen aktuellen Datensatz"

Hier mein vereinfachter Programm-Code:
Delphi-Quellcode:
Query_Picture.First;
while not Query_Picture.Eof do
begin
  Filename := Query_Picture.FieldByName('filename').AsString;
  if not FileExists(Filename) then
    Query_Picture.Delete        
  else
    Query_Picture.Next;
end;
Vielleicht hat habt Ihr ja einen Tip, warum es nicht funktioniert.

Gruß,
Ben

mkinzler 8. Mär 2007 11:32

Re: Problem beim Löschen des letzten Datensatzes aus Query
 
Wenn du auf dem letzten DS stehst ist EOF true

spuster 8. Mär 2007 11:54

Re: Problem beim Löschen des letzten Datensatzes aus Query
 
also kann ich den letzten Eintrag nur ausserhalb der While-Schleife löschen?

cruiser 8. Mär 2007 12:31

Re: Problem beim Löschen des letzten Datensatzes aus Query
 
Wandel die Schleife doch um...
Delphi-Quellcode:
{finde heraus ob es Einträge gibt und bau daraus ein if}
Query_Picture.First;
repeat
  Filename := Query_Picture.FieldByName('filename').AsString;
  if not FileExists(Filename) then
    Query_Picture.Delete        
  else
    Query_Picture.Next;
until Query_Picture.Eof;
{ende vom if}

spuster 8. Mär 2007 13:47

Re: Problem beim Löschen des letzten Datensatzes aus Query
 
Danke. Werde das ausprobieren.

Ben

spuster 9. Mär 2007 12:08

Re: Problem beim Löschen des letzten Datensatzes aus Query
 
Leider läßt sich das Problem so auch nicht lösen.
Ich glaube es liegt daran, das Delete nach dem Löschen auf den nächsten Datensatz springen möchte. Genau das ist aber nicht möglich, da ja vorher schon alle anderen Datensätze gelöscht wurden.

Bin jetzt ziemlich ratlos.. :?:

shmia 9. Mär 2007 12:45

Re: Problem beim Löschen des letzten Datensatzes aus Query
 
Zitat:

Zitat von spuster
Die Fehlermeldung lautet:
"Entweder BOF oder EOF ist True, oder der aktuelle Datensatz wurde gelöscht. Der angeforderte Vorgang benötigt einen aktuellen Datensatz"

Die Fehlermeldung erinnert mich an einen Bug von Delphi 5.
Man musste das ADO Update #2 einspielen, um den Bug zu fixen.

Hast du zufällig ein Eveenthandler (z.B. AfterScroll) angekoppelt oder ein DBGrid mit eigener OnDrawColumnCell ?

spuster 9. Mär 2007 13:05

Re: Problem beim Löschen des letzten Datensatzes aus Query
 
Nein, hab ich nicht.
Warum?

shmia 9. Mär 2007 14:33

Re: Problem beim Löschen des letzten Datensatzes aus Query
 
Zitat:

Zitat von spuster
Nein, hab ich nicht. Warum?

Weil das natürlich zu einem Fehler führen würde, falls man nicht innerhalb dieser Eventhandler speziell die Bedingung Dataset.Eof abprüft.
Also muss man jetzt von einem Bug innerhalb der VCL ausgehen.

spuster 9. Mär 2007 14:42

Re: Problem beim Löschen des letzten Datensatzes aus Query
 
Ok. Danke. Werde mal sehen wie weit ich mit einem Update komme.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 Uhr.
Seite 1 von 2  1 2      

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