Select der geloescheten (markierten) Saetze?

11/11/2009 - 12:16 von Silenus paparias | Report spam
Hallo.

Ich will alle saetze aus eine Tabele die eine Markierung zum Loeschen
haben, in eine array unterbringen.

Mit LIST FIELDS FOR DELETED() "sehe" ich alle Saetze aber ich kann die
nicht in einem array unterbrigen.


Mit SELECT * FROM Telefon WHERE DELETED()=.T. into myarray , habe ich
eine syntax fehler.

Wie ist hier der richtige SELECT syntax?

PS: Wo wird die loeschemarkierung in der Tabelle hinterlegt bzw. wie
referenziere ich sie?

Danke im voraus
 

Lesen sie die antworten

#1 Bernhard Sander
11/11/2009 - 13:03 | Warnen spam
Hallo Silenus,

Mit SELECT * FROM Telefon WHERE DELETED()=.T. into myarray , habe ich
eine syntax fehler.

Wie ist hier der richtige SELECT syntax?


drücke im Befehlsfenster von VFP die Taste F1, dann auf der Registerkarte
"Index" im Feld "Zu suchendes Schlüsselwort" gib ein "SELECT". Schließlich
wàhlst Du in der Liste darunter den Eintrag "SELECT - SQL command". Jetzt popt
ein Fenster auf, der erste Eintrag lautet bei mir: "Arrays and SELECT - SQL"

PS: Wo wird die loeschemarkierung in der Tabelle hinterlegt bzw. wie
referenziere ich sie?


Die Löschmarkierung wird als eigenes Byte in jedem Datensatz gespeichert. Es ist
gewissermaßen ein Feld C(1), leider ohne Feldname. Wenn ich mich recht entsinne
steht dort bei gelöschten Sàtzen ein Stern, bei nicht gelöschten ein Leerzeichen.
Abfragen kann man sie mit Deleted(), setzen mit DELETE, löschen mit RECALL. Der
Befehl SET DELETED schaltet einen zusàtzlichen Filter auf dieses Feld ein oder
aus, er gilt für alle Arbeitsbereiche der gleichen Session.

Dass dieses Feld keinen eigenen Namen hat, macht sich nachteilig bemerkbar in
komplexen SQL-Befehlen, da man dieses Feld nicht explizit ansprechen kann.
Solange ein SQL-Befehl nur eine Tabelle anspricht, kann man sehr wohl die
Funktion Deleted() vernünftig einsetzen, sie bezieht sich dann eben auf diese
eine Tabelle. Bei mehreren Tabellen kann man den Parameter der Funktion
Deleted() jedoch nicht so angeben, dass er vom SQL-Befehl auf eine Tabelle
dieses Befehls bezogen werden kann. Mit Subqueries kann man sich hier aus der
Patsche helfen.

Viele Grüße
Bernhard Sander

Ähnliche fragen