hab folgendes Problem: ich hab eine View die als ControlSource eine eine
Tabelle hat.
Wenn der User sich nun auf einem bestimmten Datensatz befindet, soll er die
Möglichkeit
haben diesen Datensatz zu löschen. Aber wie finde ich raus welcher Datensatz
es ist.
Löschen ist einfach:
delete XXX
pack
Aber die Parameter für den Deletebefehl kenn ich nicht.
Danke dir!
> Wenn der User sich nun auf einem bestimmten Datensatz befindet, soll er
die
> Möglichkeit
> haben diesen Datensatz zu löschen. Aber wie finde ich raus welcher
Datensatz
> es ist.
hä... ?
Wenn du den Datensatz löschen willst, auf dem du stehst, dann reicht doch
ein einfaches DELETE !
Damit wird der Satz im View gelöscht, und wenn der entsprechende Datensatz
in der Tabelle ebenfalls verschwinden soll, dann muss der Vier updatable
sein und nach dem DELETE müsstest du ein TABLEUPDATE(.t.,.t.,"viewname")
machen.
--
Tschüß,
Holger Vorberg
MS Visual FoxPro MVP
|\_/| ------ ProLib - programmers liberty ---------
(.. ) Unsere 3 MVPs bringen den Fuchs zum Laufen...
- / http://www.prolib.de
Argumente
Scope
Gibt einen Bereich von Datensätzen an, die zum Löschen markiert werden
sollen. Die Bereichsklauseln sind: ALL, NEXT nRecords, RECORD nRecordNumber
und REST.
Weitere Informationen zu Bereichsklauseln finden Sie unter Bereichsklauseln.
Weitere Informationen zu Bereichsklauseln finden Sie unter Überblick über
die Sprache.
Der Standardbereich für DELETE ist der aktuelle Datensatz (NEXT 1).
Zusätzlich zu dem nicht korrekt übergebenen Parameter (delete record xxx)
hast anscheinend nicht daran gedacht, daß Du nur den Datensatz innerhalb der
Ansicht (VIEW) damit löscht. Insofern ist das ausführen des PACK-Befehl
nicht nur nicht hilfreich, sondern auch auf die Ursprungstabelle zwecklos.
Denn erst ein =
TABLEUPDATE([nRows [, lForce]] [, cTableAlias | nWorkArea][, cErrorArray])
schreibt Änderungen in die Ursprungstabelle(n) zurück.
Bei der Verwendung von PACK ist die Tatsache zu berücksichtigen, daß man
a) exklusiven Zugriff auf die (Ursprungs)Tabelle haben muß,
b) die Tabelle komplett neu von VFP angelegt wird. D.h. alle Datensätze,
außer der zum Löschen markierten, werden in eine neue DBF kopiert, dann wird
die Ursprungstabelle gelöscht, und die frisch aufgefüllte Tabelle erhält den
Namen der Ursprungstabelle. Wenn die ganze Aktion über das Netz geht kann
das bei größeren Datenbeständen schon einige Zeit in Anspruch nehmen.
c) Meiner Meinung nach ist es besser sich Gedanken über eine
Wiederverwendung von gelöschten Datensätzen zu machen, als jedesmal ein
Pack-Befehl abzusetzen.
--
MFG
Wolfgang
danke Wolfgang, war sehr nütlich. Ich hab noch zwei Fragen:
a.) was wäre eine Alternative zum Pack befehl (falls ich einen Datensatz
wirklich physikalisch löschen möchte)
b.) wenn ich nun einen Datensatz mit delete "gelöscht" habe, wie kann ich
diesen wieder anzeigen lassen?
MfG TJ
Thomas Jungkind wrote:
> Hallo,
>
> danke Wolfgang, war sehr nütlich. Ich hab noch zwei Fragen:
> a.) was wäre eine Alternative zum Pack befehl (falls ich einen Datensatz
> wirklich physikalisch löschen möchte)
Einen SQL-Server benutzen. Mit FoxPro direkt nicht möglich. Man
kann Datensätze allerdings über ein Flag 'löschen' (man setzt
einfach den Zustand dieses Flags um) und schaut beim nächsten
Insert, ob solche 'gelöschten' Datensätze bestehen? Wenn ja,
wird ein solcher anstatt des Inserts einfach überschrieben.
Damit sortiert man 'gelöschte' Datensätze mit der Zeit aus.
> b.) wenn ich nun einen Datensatz mit delete "gelöscht" habe, wie kann ich
> diesen wieder anzeigen lassen?
Schaue Dir mal den Befehl Recall an.
>
> MfG TJ
>
Guido Sommer
--
das sind die Basics. Du solltest erst mal ein Handbuch
lesen! Auch die Online-Hilfe ist hier sehr nützlich.
Aus der Microsoft Press gibt es ein gaaanz tolles Handbuch
aus der Seminar - Reihe.
Gruß
Michael
>-----Originalnachricht-----
>.
>
für weitere Hilfe beim Fuchsbändigen darf ich dir das Forum der Deutschen
FoxPro-User-Group unter
http://www.dfpug.de empfehlen.
In verschiedenen deutschen Großstädten gibt es
Fox-Programmierer-Stammtische, die sich monatlich in einer real
existierenden Gaststätte treffen.
Viele Grüße
Turan Fettahoglu
es gibt ein gutes deutschsprachiges Buch zu VFP 6.0/7.0. Es heisst "Der
VFP-Anwendungsentwickler".
Es ist im 'Addison-Wesley Verlag' erschienen und der Autor heisst Patrick
Schärer.
Vielleicht solltest Du das mal durcharbeiten, dann hast Du eine gute
Grundlage, um mit VFP Anwendungen zu erstellen.
mit freundlichen Grüssen
Klaus Sobel
Microsoft Developer Support EMEA
"Thomas Jungkind" <tJun...@systemgruppe.de> wrote in message
news:OohUBRBhCHA.2592@tkmsftngp12...
Yep ... kann ich nur empfehlen.
Oder mach bei ProLib ne Grundlagenschulung.
Da gibt´s das Buch gleich obendrauf .... Woody war da Co-Autor wenn ich
mich nicht täusche.
Ansonsten hilft Dir aber stets ein beherzter Druck auf die F1 Taste, am
besten mit markierten Befehl ;)
Aufheben kannst Du zum Löschen markierte Datensätze mit RECALL.
Und ignorieren ob der Datensatz zum löschen markiert ist, oder nicht,
kannst Du mit SET DELETED [ON | OFF]
Gruß
Lars