DELETE() [erledigt]
Moderator: Moderatoren
- Herbert
- Der Entwickler von "Deep Thought"
- Beiträge: 1991
- Registriert: Do, 14. Aug 2008 0:22
- Wohnort: Gmunden am Traunsee, Österreich
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
DELETE() [erledigt]
Ich hatte einen Schreibfehler in der Source und eben DELETE() anstelle des simplen DELETE geschrieben gehabt.
Allerdings wird mit Delete() kein Satz gelöscht. Es passiert nichts.
Da der Compiler keinen Fehler brachte, heisst das doch, dass irgendwo eine Delete()-Funktion exisitiert.
Was macht denn das Delete()?
Allerdings wird mit Delete() kein Satz gelöscht. Es passiert nichts.
Da der Compiler keinen Fehler brachte, heisst das doch, dass irgendwo eine Delete()-Funktion exisitiert.
Was macht denn das Delete()?
Zuletzt geändert von Herbert am Mo, 09. Aug 2010 23:15, insgesamt 1-mal geändert.
Grüsse Herbert
Immer in Bewegung...
Immer in Bewegung...
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: DELETE()
Hi Herbert,
sowie ich das verstanden habe, kannst du mit delete() innerhalb einer schleife bzw. einer vorgabe mehrere Datensätze löschen.
ich arbeite immer mit Dbdelete() - 123->(DbDetele()) - innerhalb einer do - while schleife.
in beiden Fällen sind die datensätze als gelöcht markiert. - mit (Dbpack()) sind sie ja weg.
sowie ich das verstanden habe, kannst du mit delete() innerhalb einer schleife bzw. einer vorgabe mehrere Datensätze löschen.
ich arbeite immer mit Dbdelete() - 123->(DbDetele()) - innerhalb einer do - while schleife.
in beiden Fällen sind die datensätze als gelöcht markiert. - mit (Dbpack()) sind sie ja weg.
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: DELETE()
Hallo,
schau doch mal in die PPO (compilerschalter /P setzen) Datei, dann siehst du die internen Befehle.
schau doch mal in die PPO (compilerschalter /P setzen) Datei, dann siehst du die internen Befehle.
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: DELETE()
Offenbar hat die nichtdokumentierte Funktion dieselbe Wirkung wie die (dokumentierte) Funktion "Deleted()". Jedenfalls deute das hier darauf hin:
@Herbert: Im PPO-Code bleibt der Funktionsaufruf schlicht stehen.
Code: Alles auswählen
FUNCTION Main()
USE test NEW
DbGoTop() // erster Satz ist gelöscht
? Delete() // Ja
? Deleted() // auch Ja
DbSkip(1) // zweiter Satz ist NICHT gelöscht
? Delete() // Nein
? Deleted() // auch Nein
CLOSE
RETURN nil
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: DELETE()
Hallo, Rolf.
Die Funktion "Delete()" gibt es offiziell überhaupt nicht, sie macht aber - siehe oben - offenbar dasselbe wie die Funktion "Deleted()", nämlich anzeigen, ob ein Datensatz gelöscht ist.
Nur zum (besseren) Verständnis: Mit dem Kommando "DELETE" (also ohne Klammern) kann man einzelne Datensätze löschen. Die Direktivdatei "STD.CH" macht daraus das "DbDelete()", das Du auch verwendest. Es spielt also keine Rolle, ob man Kommando oder die äquivalente Funktion DbDelete() benutzt, jedenfalls bis zu dem Punkt, an dem man mit Alias-Operatoren arbeitet oder Rückgabewerte verarbeiten will.sowie ich das verstanden habe, kannst du mit delete() innerhalb einer schleife bzw. einer vorgabe mehrere Datensätze löschen.
Die Funktion "Delete()" gibt es offiziell überhaupt nicht, sie macht aber - siehe oben - offenbar dasselbe wie die Funktion "Deleted()", nämlich anzeigen, ob ein Datensatz gelöscht ist.
Herzlich,
Tom
Tom
- Martin Altmann
- 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()
Tja - und warum macht sie das wohl?
Aus dem selben Grund warum z.B. solche Dinge auch funz(t)en:
Es reicht unter Clipper doch aus, die ersten vier Buchstaben eines Kommandos zu schreiben - sofern es dadurch eineindeutig ist!
Viele Grüße,
Martin
Aus dem selben Grund warum z.B. solche Dinge auch funz(t)en:
Code: Alles auswählen
SET DELE ON
SET PROC TO bla.prg
Viele Grüße,
Martin
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.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: DELETE()
Hallo, Martin.
Verblüffend aber, dass das auch für Funktionen gelten soll. Ich habe gerade mal getestet - das hier funktioniert wirklich:
Ganz erstaunlich.
Verblüffend aber, dass das auch für Funktionen gelten soll. Ich habe gerade mal getestet - das hier funktioniert wirklich:
Code: Alles auswählen
? Round(5,2) // 5.00
? Roun(5,2) // 5.00
? Dele() // .F. - keine Tabelle geöffnet
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: DELETE()
Ah. Licht am Horizont. If everything fails, read the f*cking manual. Bei "Elemente eines Xbase++-Programms", Unterbereich "Funktionen" wird ausgeführt:
Einige reservierte Funktionsnamen unterliegen aus Gründen der Kompatibilität der dBase Konvention, wonach ein Bezeichner bis auf die ersten vier Buchstaben abgekürzt werden kann.
Darunter "Deleted()" und - Zufallstreffer - "Round()". Es handelt sich um:
Replicate()
Transform()
DevPos()
Round()
Deleted()
Lower()
RTrim()
Break()
Seconds()
Upper()
Select()
Empty()
SetPos()
ValType()
CMonth()
Space()
PCount()
Inkey()
SubStr()
Einige reservierte Funktionsnamen unterliegen aus Gründen der Kompatibilität der dBase Konvention, wonach ein Bezeichner bis auf die ersten vier Buchstaben abgekürzt werden kann.
Darunter "Deleted()" und - Zufallstreffer - "Round()". Es handelt sich um:
Replicate()
Transform()
DevPos()
Round()
Deleted()
Lower()
RTrim()
Break()
Seconds()
Upper()
Select()
Empty()
SetPos()
ValType()
CMonth()
Space()
PCount()
Inkey()
SubStr()
Herzlich,
Tom
Tom