Announcement

Collapse
No announcement yet.

Datensatz Lock/Unlock

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

  • Datensatz Lock/Unlock

    Hallo,
    gibt es, wie einst in älteren Sprachen, die Befehle Lock und Unlock in Delphi nicht? Um eine Datensatz(Record) einer einfachen relativen Datei zu sperren oder auf readonly zu setzen. Ohne ADO, BDE etc. zu verwenden.<br>
    Das sah mal so o.ä. aus: lock(#1,127) Damit wurde im File #1 der Datensatz Nr. 127 gesperrt um Streß im Netz zu vermeiden. Weder Hilfe noch Forum reagieren passend zum Thema.

    Thanks und gruss
    Fred Ziebell

  • #2
    Hallo,

    das liegt schlicht und einfach darin, dass pessimistische Sperrverfahren nicht mehr in die heutige Zeit (Client/Server oder Three-tier) passen ;-)

    Allerdings kann man auch heute noch eine pessimistische Sperre (Lock) setzen, wobei die Vorgehensweise jedoch sehr stark von der verwendeten Datenbank abhängt. Bei allen SQL-Datenbanken bieten die Transaktionen sowie der geeignete Transaction Isolation Level die Option an, einen Datensatz effektiv für andere Benutzer exklusiv zu sperren.

    Bei einer Desktop-Datenbank wie zum Beispiel dBASE wird eine "versteckte" zusätzliche Tabellenspalte verwendet, um einen Datensatz als gesperrt zu markieren. Diese Sperre liegt direkt in der Datenbankstruktur und hat somit nichts mit Delphi oder der BDE zu tun.

    Da jede Datenbank die Sperren in eigener Art und Weise handhabt, kann es in Delphi keine universell passende Lösung geben. Die Middleware-Treiberschichten wie BDE oder ADO versuchen so gut es geht, die einheitlichen Konfigurations-Eigenschaften über den eingebundenen Datenbanktreiber in die datenbankspezifischen Aufrufe umzusetzen.

    Comment


    • #3
      Gut, verstehe veraltete Technologie...aber meiner Meinung nach unproblematisch und leicht zu verwenden.<br>
      Wie auch immer..besten Dank. Ich werde die Geschichte mit dem versteckten Eintrag verwenden

      Gruss Fred Ziebel

      Comment


      • #4
        Hallo,
        ich weiß zwar nicht welche DB du benutzt, aber ich benutze
        die bde-Funktionen bei Paradox
        DbiGetRecord zum sperren
        DbiRelRecordLock zum entsperren
        DbiIsRecordLocked zum abrufen der Sperr

        Comment


        • #5
          Hallo, wie ich schon oben erwähnte, handelt es sich um eine einfache relative Datei. zu Fuß programmiert. Ohne BDE, OHNE ADO, ohne irgendwas. Also so, wie man früher(DOS) Daten abgelegt hat. Nur eben nicht sequentiell, sondern relativ mit festen Datensatzlängen.<br>
          Ich habe übrigens schon einige Experimente diesbezüglich gemacht und werde für die, die es interessiert oder die, die sich nicht mehr erinnern können die entsprechenden Basisroutinen hier ablegen(Open,R,W,Search,Del,Add...eben Basisgeschichten).<br>

          Gruss Fred Ziebel

          Comment

          Working...
          X