Announcement

Collapse
No announcement yet.

Datenbank exklusiv öffnen

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

  • Datenbank exklusiv öffnen

    Wie kann man erreichen, dass man einen Nutzer exklusiv bei der Datenbank anmeldet. z.B. für Wartungsarbeiten, Update etc.
    Die Anmeldung erfolgt aus einer Delphi-App. mit IBX.
    Danke für Eure Hilfe

    Hartmuth Prüfer

  • #2
    Diese Funktionsweise habe ich z. B. für einen Inventurabschluß integriert:<BR><BR>

    a. TIBTransaction TExclusivLesezugriff anlegen mit nowait, read, consistency<BR>
    b. TIBTransaction TExclusivSperre anlegen mit nowait, consistency, lock_write=EXCLUSIV, exclusive<BR>
    c. In Datenbank Dummy-Tabelle EXCLUSIV und ein entsprechendes TIBDataset anlegen<BR>
    (mit oder ohne Datensätze, ist egal)<BR>

    Jede Programminstanz macht beim Start folgendes:<BR><BR>
    try<BR>
    1. Datenbankverbindung herstellen<BR>
    2. TExclusivLesezugriff.Starttransaction<BR>
    3. IBExclusiv.open; //bleibt offen = Lesezugriff während der gesamten Sitzung<BR>
    4. IBExclusiv.Edit;<BR>
    Except<BR>
    TExclusivLesezugriff.Rollback;<BR>
    Messagedlg('Derzeit arbeitet ein Benutzer mit Exclusivzugriff ...<BR>
    Application.Terminate;<BR>
    end;<BR>

    Jede Programminstanz, die Exclusivzugriff will, macht folgendes:<BR>
    <PRE>try
    If TExclusivLesezugriff.active = true then
    TExclusivLesezugriff.Rollback;
    //sonst behindert der eigene Exclusiv-Lesezugriff

    If TExclusivSperre.active = false then
    TExclusivSperre.Starttransaction;
    IBExclusiv.active := true;
    IBExclusiv.Edit;
    //bleibt so bis zum Ende der Aktion, die Exclusivrechte braucht
    except
    If TExclusivSperre.active = true then
    TExclusivSperre.Rollback;
    Messagedlg('Exclusivzugriff derzeit nicht möglich, weil anderer Benutzer online...
    end;
    ...
    //nach Ende der Aktion wieder Exculsiv-Lesezugriff wie oben beschrieben
    </PRE&gt

    Comment


    • #3
      Vielen Dank für die Hilfe.
      Klappt super.

      Gruß Hartmut

      Comment

      Working...
      X