Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Delte und pack

39 views
Skip to first unread message

Thomas Jungkind

unread,
Nov 4, 2002, 10:11:26 AM11/4/02
to
Hallo,

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!


Holger Vorberg

unread,
Nov 4, 2002, 12:31:49 PM11/4/02
to
Hi,

> 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

Wolfgang Schmale

unread,
Nov 4, 2002, 1:25:19 PM11/4/02
to
Hallo Thomas!
Zum Löschen des aktuellen Datensatzes brauche ich keinen weiteren Parameter
angeben Einfach DELETE absetzen und der aktuelle Datensatz wird gelöscht.
Hier ein Auszug aus der immer wieder hilfreichen VFP-Hilfe was den
DELETE-Befehl betrifft:
DELETE
[Scope] [FOR lExpression1] [WHILE lExpression2]
[IN nWorkArea | cTableAlias]
[NOOPTIMIZE]

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

Thomas Jungkind

unread,
Nov 5, 2002, 5:48:52 AM11/5/02
to
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)
b.) wenn ich nun einen Datensatz mit delete "gelöscht" habe, wie kann ich
diesen wieder anzeigen lassen?

MfG TJ


Guido Sommer

unread,
Nov 5, 2002, 6:28:30 AM11/5/02
to

Hi!

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

--

Michel Theis

unread,
Nov 5, 2002, 7:44:41 AM11/5/02
to
Hallo Thomas,

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-----

>.
>

Turan Fettahoglu

unread,
Nov 6, 2002, 6:50:26 AM11/6/02
to
Lieber Thomas,

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


Klaus Sobel

unread,
Nov 6, 2002, 11:16:55 AM11/6/02
to
Hallo Thomas,

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...

Lars Eggert

unread,
Nov 6, 2002, 1:09:12 PM11/6/02
to
>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.

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

0 new messages