Datensatzsperre

04/12/2007 - 16:05 von Elzer Helmut | Report spam
Hallo Zusammen,

ich habe eine Tabelle auf einem Server auf die von mehreren PC zugegriffen
wird ( ist ja nichts neues)

wieso sehe ich mit ISRLOCKED() den gesperrten Datensatz nicht.

wenn ich mit RLOCK('Importprozesse') den Satz sperren möchte geht das nicht
weil der Satz von einem anderem im Netzwerk gesperrt ist.

habe keine Tabellenbufferung

meine Frage
greift ISRLOCKED() im Netzwerk

mein testcode

SET MULTILOCKS on
SET REPROCESS TO 5000
SET REPROCESS TO 10 SECONDS


FOR x = 1 TO 1000
SELECT importprozesse
SCAN

? ISRLOCKED() && hier wird .F.
angezeigt obwohl
?? SYS(2011)
?? titel
IF RLOCK('Importprozesse') && hier gewartet werden
muss
replace zeit WITH 1
ENDIF
?? ISRLOCKED() && war die Sperre
local erfolgreich wird hier .T. angezeigt ist die Wartezeit abgelaufen wird
.F.
UNLOCK IN Importprozesse
ENDSCAN

next




mfg Helmut
 

Lesen sie die antworten

#1 Stefan Wuebbe
04/12/2007 - 16:36 | Warnen spam
"Elzer Helmut" <nospamxx: schrieb im
Newsbeitrag news:fj3qc9$g9g$

meine Frage
greift ISRLOCKED() im Netzwerk



Nein, es gilt nur für die lokale Instanz (um dort vorher per RLock()
gesperrte Sàtze festzustellen).
Um zu sehen, ob man eine Satz im Netz sperren kann, nimmt man
den Rückgabewert von RLock() selbst.
Sinn der Sache ist, dass eine separate Funktion um Sàtze im Netz
zu testen ganz sinnlos wàre, weil im nàchsten Sekundenbruchteil
nach Erfolg der entsprechende Satz schon wieder anderweitig
gesperrt sein könnte.


hth
-Stefan



|\_/| ProLib - programmers liberty --
(.. ) Our MVPs and MCPs make the Fox run
- / See us at www.prolib.de or www.AFPages.de

Ähnliche fragen