![]() |
abnormales paradox verhalten
es geht um folgenden code:
Delphi-Quellcode:
Eigentlich sollte der aus meiner tabelle ja alle datensätze, in denen keep nicht i ist, löschen. Die datenbank hat ca. 25.000 Datensätze, übrig bleiben sollen 1388 (das weiß ich aus ner sql abfrage) nun, wenn ich diesen code einmal ausführe sind danach noch ca. 7000 datensätze vorhanden. durch mehrmaliges ausführen des codes komm ich auch irgendwan auf die 1388. aber warum? eigentlich sollte doch einmaliges ausführen reichen,oder?
Table1.Active := false;
Table1.IndexName := ''; Table1.Active := true; Table1.First; repeat if Table1Keep.Value = 1 then begin end else Table1.Delete; until Table1.FindNext = false; |
Re: abnormales paradox verhalten
Hi,
hast du schonmal mit ner SQL-Abfrage versucht? Wenn ja, kommt da das gleiche raus? |
Re: abnormales paradox verhalten
Hallo,
1. Warum dieser Aufwand, das kann man doch sicher mit einer DELETE-Abfrage erschlagen. Z.B. mit
SQL-Code:
oder so ähnlich.
DELETE FROM Table1 WHERE KEEP <> 1
2. Ich glaube das Problem liegt darin das das Löschen von Datensätzen das FindNext etwas verwirrt und womöglich das folgende passiert: Du findest einen zu löschenden Datensatz an Position 3 und löschst ihn. Die darüberliegenden Fallen alle Position runter. Wenn jetzt der ehemals vierte (jetzt dritte) auch zu löschen wäre wird der aber bei FindNext verschlabbert weil ja erst beim jetzigen vierten (ehemals fünf) wieder weitergesucht wird. |
Re: abnormales paradox verhalten
Um deine Frage zu beantworten, warum deine Routine nicht funktioniert:
Paradox setzt den Datensatz-Zeiger automatisch auf den nächsten Datensatz, wenn du einen Datensatz löschst. Du weist aber auch nach einem Delete ein Next an, das bedeutet, daß du einen Datensatz ungeprüft überspringst. Eine Mögliche Lösung wäre:
Code:
Grüße
while not Table1.Eof do
if Table1Keep.Value = 1 then Table1.Next else Table1.Delete; Mikhal |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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