DbAppend()

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

DbAppend()

Beitrag von Bertram Hansen »

Hallo,

ich bin jetzt über die Funktion DbAppend() gestolpert. Bisher benutze ich diese immer ohne Parameter, aber in meinem aktuellen übernommenem Projekt wird oft DbAppend(1) verwendet.

Auszug aus der Doku:
Syntax
DbAppend( [<nLockMode>] ) --> NIL

Parameter
<nLockMode>
Wenn für <nLockMode> der Wert 1 eingesetzt wird, bleiben Satzsperren bestehen, die beim Aufruf von DbAppend() gesetzt waren. Andernfalls werden alle bestehenden Satzsperren aufgehoben.
Verstehe ich das jetzt richtig, dass mit dem Parameter 1 die eventuell vorher gesetzten Satzsperren (z.B. mit DbRLock() ) bestehen bleiben und ohne den Parameter nur der von mir zuletzt angefügte Satz gesperrt ist?
Wie verwendet Ihr denn die Funktion?
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DbAppend()

Beitrag von brandelh »

so sagt es die Beschreibung, ich nutze diese Form nicht.
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
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:

Re: DbAppend()

Beitrag von Herbert »

Manchmal ist man im Vorteil, wenn man die Hilfetexte nicht so intensiv nachliest...
Ich hatte APPEND BLANK verwendet. Die Frage ist, was da intern übersetzt wird. Wohl der Parameter 0, denn sonst wären bestimmt Lockerrors aufgetreten, die nie erschienen sind.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DbAppend()

Beitrag von Manfred »

mit Append Blank arbeitest Du immer in der aktuellen Workarea. Mit den Db....() Funktionen, geht das mit Alias wesentlich eleganter.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: DbAppend()

Beitrag von Jan »

Man kann ja in Xbase++ über verschiedene Funktionen ein Locking auf mehrere Datensätze erreichen. Bzw. einen speziellen oder alle Sätze wieder unlocken. Ich muß aber gestehen, daß ich für mich selber noch nie den Sinn davon gesehen habe, und das deswegen auch nicht mache.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: DbAppend()

Beitrag von Jan »

Manfred,

in diesem Fall geht es ja nicht um den Alias, sondern um die Mögliochkeit, in einer dbf mehrere Sätze parallel zu locken. Mit Append Blank geht das nicht, mit DbAppend() aber schon. Mal ganz davon abgesehen, das man eben bei DbAppend() den Alias dazu setzen kann, was den Code ganz erheblich übersichtlicher gestaltet.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DbAppend()

Beitrag von Manfred »

den Sinn für das Sperren eines Packs? Nun, ganz einfach: Wenn man eine größere Charge updaten will (z.B. Bei Rechnungen,Lieferscheinen etc.) versucht man zuerst die Gruppe der Sätze zu sperren. Wenn das geht, alles kalr, wenn nicht dann wird es rückgängig gemacht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
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:

Re: DbAppend()

Beitrag von Herbert »

Jan hat geschrieben:in diesem Fall geht es ja nicht um den Alias, sondern um die Mögliochkeit, in einer dbf mehrere Sätze parallel zu locken.
ich verstehe den Ersteintrag hier so, dass es um den Umstand geht, dass alle andern Locks aufgehoben würden, wenn man den Parameter 1 setzt. Die Frage ist, ob hier die betreffende Workarea gemeint ist oder alles. Ich meine Ersteres.
Und überhaupt, was der Sinn dahinter sein soll...
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DbAppend()

Beitrag von Manfred »

es gilt für die aktive Workarea, oder für den angegebenen Aliasbereich. Als DbAppend() arbeitet es mit Rlock(), als DbAppend(1) arbeitet es mit DbRlock() wodurch vorhandenen Satzsperren erhalten bleiben. Rlock() entsperrt andere Sätze automatisch dabei, DBRlock() nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DbAppend()

Beitrag von Tom »

<nLockMode> auf 1 ist dann sinnvoll, wenn man zwischen mehreren Datensätzen (darunter dem angehängten) Datenvertauschungen vornimmt. Ich habe Datensatz # 10292 gesperrt und will dessen Daten ans Ende verschieben, um anschließend seine Originaldaten zu aktualisieren. Da soll mir kein anderer Mechanismus dazwischenfunken. Oder so.

Selbstverständlich hebt DbAppend(0) oder DbAppend() nur die Datensatzsperren in der betroffenen Workarea auf. Alles andere wäre ziemlich haarsträubend.
Herzlich,
Tom
Antworten