SQL-String ... WHERE deleted()=.f.

25/02/2009 - 15:44 von Kretschmann, Juergen | Report spam
Hallo,

ich hànge an einem hoffentlich kleinem Problem mit VFP 9 und hoffe, dass
mir jemand weiterhelfen kann.

Mit Hilfe des folgenden SQL-Strings erstelle ich einen Cursor:

SELECT Artikel.ArtBez, Detail.Wert, Detail.Zusatz;
FROM "Detail.dbf" INNER JOIN "Artikel.dbf" ON Detail.Id = Artikel.Id;
WHERE ((Detail.Wert > 0));
ORDER BY Detail.Wert DESC , Detail.Zusatz;
INTO CURSOR "curTest"

Das funktioniert auch. Leider sind in Detail.dbf ein paar Datensàtze
"deleted", die ich aus diversen Gründen vorab nicht löschen kann. Im
Cursor kann ich die "deleteten" Daten nicht mehr filtern, da alle
Datensàtze im Cursor DELETED()=.f. sind.

Lösunsversuche:
1.
SELECT Artikel.ArtBez, Detail.Wert, Detail.Zusatz;
FROM "Detail.dbf" INNER JOIN "Artikel.dbf" ON Detail.Id = Artikel.Id;
WHERE ((Detail.Wert > 0) AND (Detail.deleted()=.f.));
ORDER BY Detail.Wert DESC , Detail.Zusatz;
INTO CURSOR "curTest"
Leider klappt das mit dem WHERE ... Detail.deleted()=.f. nicht. Es gibt
eine Fehlermeldung.

2. Funktioniert, ist aber nicht besonders elegant:
USE "Detail.dbf" IN 0
COPY TO "Detail2" FOR DELETED()=.f.
USE IN "Detail"

SELECT Artikel.ArtBez, Detail.Wert, Detail.Zusatz;
FROM "Detail2.dbf" INNER JOIN "Artikel.dbf" ON Detail.Id = Artikel.Id;
WHERE ((Detail.Wert > 0));
ORDER BY Detail.Wert DESC , Detail.Zusatz;
INTO CURSOR "curTest"

Gibt es nicht eine funktionierende Möglichkeit vom Typ meines 1.
Versuchs? Google-n hat mich leider nicht weiter gebracht. Offenbar habe
ich nicht die richtigen Suchbegriffe gefunden.

Vielen Dank
Viele Grüße
J. Kretschmann
 

Lesen sie die antworten

#1 Dag Westerkamp
25/02/2009 - 15:55 | Warnen spam
Kretschmann, Juergen schrieb:
Hallo,

ich hànge an einem hoffentlich kleinem Problem mit VFP 9 und hoffe, dass
mir jemand weiterhelfen kann.

Mit Hilfe des folgenden SQL-Strings erstelle ich einen Cursor:

SELECT Artikel.ArtBez, Detail.Wert, Detail.Zusatz;
FROM "Detail.dbf" INNER JOIN "Artikel.dbf" ON Detail.Id = Artikel.Id;
WHERE ((Detail.Wert > 0));
ORDER BY Detail.Wert DESC , Detail.Zusatz;
INTO CURSOR "curTest"

Das funktioniert auch. Leider sind in Detail.dbf ein paar Datensàtze
"deleted", die ich aus diversen Gründen vorab nicht löschen kann. Im
Cursor kann ich die "deleteten" Daten nicht mehr filtern, da alle
Datensàtze im Cursor DELETED()=.f. sind.



set deleted on

SELECT Artikel.ArtBez, Detail.Wert, Detail.Zusatz;
FROM "Detail.dbf" INNER JOIN "Artikel.dbf" ON Detail.Id = Artikel.Id;
WHERE ((Detail.Wert > 0));
ORDER BY Detail.Wert DESC , Detail.Zusatz;
INTO CURSOR "curTest"

Ähnliche fragen