Announcement

Collapse
No announcement yet.

Record sperren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Record sperren

    Wie kann ich in einer Acess DB auf die mittels Delphi u. BDE zugegriffen
    wird verhindern, daß ein Record gleichzeitig von 2 Personen editiert wird. Kann man Records sperren ?

    Danke Jörg

  • #2
    Hi Jörg Richmann!

    nein, man kann keine Records sperren (ausser man programmiert es selber aus)!

    Access sperrt sogenannte Pages ... dh. immer eine gewisse Anzahl an Records davor und danach - durch den Native-Treiber Einsatz bekommt deine Anwendung das aber nicht mit (mittels BDE-ODBC funktionierts) und man kann allen DB-Qualitaetsanforderungen widersprechend DirtyReads und so weiter beobachten!

    Die einzige Möglichkeit mit dem NativeTreiber leigt in der eigenen Implementation des RecordLock!

    Dazu gibt es einiges zu beachten ...
    <pre>
    ich fuege dazu 2 neue Felder hinzu:
    Benutzer (wer editiert das Feld)
    Zeitpunkt (wann wurde begonnen diesen Record zu bearbeiten)

    wenn jemand den Datensatz bearbeiten will, pruefen ob in Benutzer kein Inhalt ist - wenn ja dann lasse ich die bearbeitung erst 2 Stunden später zu ... oder ein SuperUser kann die sperre aufheben!

    Wenn man aber diese Tabelle bereits geoeffnet hat und man will einen Datensatz bearbeiten, dann kann man nicht davon ausgehen, dasz in diesem Feld wirklich nichts drinnen steht - denn deine DB-Session hat von einer etwaigen Aenderung nichts mitbekommen.
    Daher bleibt immer ein kleines Restrisiko ... man kann eventuell eine 2. Session offen haben, in der man dann eine Query startet, welche kontrolliert ob in diesem Feld was drinnensteht oder nicht!

    auf jeden fall ist es eine unlustige sache!
    </pre>

    mfg
    -Brislinger Thoma

    Comment

    Working...
    X