PDA

Vollständige Version anzeigen : pessimistisches Sperren von Datensätzen


<Gucky>
25.04.2002, 14:37
Hi Gurus,

Frage: Wenn in einer Multiuser-Umgebung unter Access 2000 bearbeitende Datensätze pess. gesperrt sind, so kann ich das nur am Datensatzmarkierer erkennen, ob dieser Datensatz gesperrt ist oder nicht. Da ich keinen Datensatzmarkierer verwende (Hässlich und uninteressant) bekomme ich nur das typische Windows-Signal, das irgend etwas nicht stimmt.

Ich hätte aber gerne eine Meldung mit Anzeige des Benutzernamens, der gerade den Datensatz bearbeitet.

Aus einschlägigen Fachbüchern geht so etwas nicht
hervor.

Hat da jemand einen Tip wie man das bewerkstelligen könnte ???

Danke im Voraus.

Sascha Trowitzsch
25.04.2002, 19:18
IMHO geht das nicht oder ist was für absolute DAO-Eingeweihte. Es ist ja schon schwierig genug, rauszukriegen, wer überhaupt in die Datenbank eingeloggt ist (... mit der Zusatz-DLL msldbusr.dll...), aber den User, der gerade den DS bearbeitet herauszufinden ... ich glaub' nicht.
Es werden zwar Locking-Flags in die DB geschrieben, aber welcher User die gesetzt hat wird wahrscheinlich nicht protoklliert.
Da ist dann wohl ein Workaround notwendig, indem du in einer Zusatztabelle dauernd die Aktionen der User protokollierst.

Ciao, Sascha

<Gucky>
26.04.2002, 17:50
Danke, das habe ich mir fast gedacht.

ceki
19.11.2002, 14:21
Hi Gucky,

es gibt doch einen Weg.
Und zwar löse ich das Problem so, daß ich in der Tabelle ein zusätzliches Feld (z.B. "sperre")anhänge.
Wird ein Datensatz im Formular angezeigt schreibe ich über die Eigenschaft "Beim Anzeigen" den NT-User-Namen in dieses Feld.
Möchte ein anderer User dann ebenfalls diesen Datensatz anzeigen, und ist das Feld "sperre" <> Null, lass ich eine MsgBox hochkommen, die dann einen Text wie z.B. "Sorry, dieser Datensatz wird gerade von User xy bearbeitet".
Ist zwar etwas umständlich, aber das Ergebnis paßt.
Ich hoffe, es ist noch nicht zu spät. ;o)

Gruß
Karl

JuergenL
18.12.2003, 10:32
Hmmm,

Du sperrst also somit die Anzeige des Satzes und nicht nur die Änderung oder habe ich das falsch verstanden?

In der Eigenschaft des Tabellenfelds "sperre" schreibst Du "=currentuser()", richtig?

Kann ich auch nur den Wechsel zwischen Anzeigen und Ändern verhindern, d.h. ein Anzeigen des Satzes ist möglich, eine Änderung nicht?

Danke, Jürgen

Arne Dieckmann
18.12.2003, 10:42
Denkbar (ungetestet) wäre beim Formular-Ereignis "Beim Anzeigen" der Einzeiler:

Me.AllowEdits=IsNull(Me![Sperre])