delete all for [ERLEDIGT]

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

delete all for [ERLEDIGT]

Beitrag von Koverhage »

Ich habe das Problem, dass die gewünschten Datensätze nicht oder nur zum Teil gelöscht werden.
Woran könnte das liegen ?

Code: Alles auswählen

dbselectarea( "vg" )
IF vg->(flock())
   delete all for ve_az = m_az
   vg->(DbUnlock())
   msgbox("Gesamteinheiten wurden gelöscht")
ELSE
   msgbox("Datei konnte nicht gesperrt werden, bitte nochmal versuchen")
ENDIF
Zuletzt geändert von Koverhage am Di, 16. Jun 2015 11:55, insgesamt 2-mal geändert.
Gruß
Klaus
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: delte all for

Beitrag von Manfred »

Hi Klaus,

Du hast "=" da stehen. Wie sieht es aus, passen die Bedingungen immer? Oder wäre evtl. "==" besser? Oder alles Upper() oder Lower() oder so ähnlich?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: delte all for

Beitrag von Martin Altmann »

Oder hast Du vorher einen Filter/Scope auf der Datenbank aktiv, der nicht Deiner Löschbedngung entspricht?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: delte all for

Beitrag von Manfred »

reden wir von vielen Sätzen? Erweitere doch mal den Code und lass Dir anzeigen was drin steht, wenn nicht gelöscht wird. Manchmal sind es ganz blöde Fehler.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: delete all for

Beitrag von Koverhage »

Scope / Filter nicht aktiv

m_az ist eine Zahl, die gebe ich vor und ich weiß das es die Nummer gibt, sonst könnte ich nicht beurteilen, dass die nicht gelöscht werden.
Erweitere doch mal den Code und lass Dir anzeigen was drin steht, wenn nicht gelöscht wird.
Wie ? Auf den Delete ALL habe ich doch keinen Einfluß.
Ich könnte den Code aus dem PPO nehmen und dort was einbauen ?
Gruß
Klaus
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: delete all for

Beitrag von georg »

Hallo, Klaus -


die Anweisung sieht "sauber" aus. Bestehen zu der Zeit Scopes oder Filter? Das könnte das Ergebnis beeinflussen.

(Update: Martin war schneller)
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: delete all for

Beitrag von Manfred »

Klaus,

mache einfach eine Do While Schleife und Skip, oder arbeite mit DbEval() und baue eine Funktion mit IF() ein. z.B.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: delete all for

Beitrag von Tom »

DELETE ALL FOR <Bedingung> ist falsch. Entweder ALL oder FOR:

Code: Alles auswählen

DELETE FOR db->x = y
Herzlich,
Tom
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: delete all for

Beitrag von Koverhage »

Tom,

ich würde Dir ja Recht geben, sehe es auch so aber aus der Hilfe von Xbase++

DELETE ALL FOR RechDatum < Date()-730 // Löschmarkierung setzen
Gruß
Klaus
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: delete all for

Beitrag von Martin Altmann »

Tom,
auch ich nutze das Konstrukt ohne Probleme.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: delete all for

Beitrag von Koverhage »

ich habe im DBU nachgesehen auch dort wird ohne ALL gearbeitet.
Habe das jetzt so wie Tom vorgeschlagen hat geändert und es funktioniert,
obwohl es anderen Stellen funktioniert (wie auch bei Martin).

Danke
Gruß
Klaus
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: delete all for [ERLEDIGT]

Beitrag von Tom »

Ihr habt mich jetzt echt irritiert - und es steht ja tatsächlich so in der Doku, auch bei REPLACE und anderen Kommandos. Tatsächlich benutze ich solche Konstrukte nur an ganz wenigen Stellen, und dort arbeitet DELETE FOR <Bedingung> einwandfrei. Ich wüsste auch nicht, wozu man die Klausel "ALL" in dieser Variante benötigen sollte - entweder, ich will einen einzelnen Datensatz löschen (DELETE), alle Datensätze (ggf. gemäß Filter oder Scope) - also DELETE ALL - oder all solche Datensätze, die einer Bedingung genügen (DELETE FOR).
Herzlich,
Tom
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: delete all for [ERLEDIGT]

Beitrag von Martin Altmann »

Tom,
steht das nicht in deer Hilfe beschrieben?
DELETE FOR... löscht alle Datensätze AB DEM AKTUELLEN, die der Löschbedingung entsprechen!
Wenn man diese Einschränkung nicht will, muss man ALL verwenden oder auf dem ersten Datensatz stehen, wenn man das Kommando ausführt!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: delete all for [ERLEDIGT]

Beitrag von Koverhage »

Martin,

ab dem aktuellen finde ich in der DOKU nicht.
Parameter
-------------
FOR <lForCondition>
<lForCondition> ist ein optionaler logischer Ausdruck, der eine Bedingung vorgibt. Es werden nur die Datensätze zum Löschen markiert, bei denen <lForCondition> den Wert .T. (wahr) liefert.

ALL
Durch die Option ALL werden alle Datensätze zum Löschen markiert. Falls eine Bedingung angegeben ist, wird die Bedingung für alle Datensätze geprüft.
Ich habe unabhängig davon beim entfernen von ALL ein DbGoTop() eingefügt.
Gruß
Klaus
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: delete all for [ERLEDIGT]

Beitrag von Martin Altmann »

Klaus,
ich meine, dass das so mal in der Hilfe stand - frage mich jetzt bitte nicht, bei welcher Version von Xbase++

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: delete all for [ERLEDIGT]

Beitrag von Koverhage »

Vermutlich in der OS/2 Version, praktisch in der Steinzeit ;-)
Gruß
Klaus
Antworten