Announcement

Collapse
No announcement yet.

Aktualisierung von Datensätzen mit BDE (win2000)

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

  • Aktualisierung von Datensätzen mit BDE (win2000)

    Hallo,
    ich habe ein Problem. Ich habe mit visual dBase eine Anwendung mit Zugriff auf Interbase über die BDE (Version 5.01 wird in bdeadmin angezeigt, ist aber glaube ich 5.2).<br>Wenn ich auf einem Rechnern einen Satz ändere oder neu erstelle, sieht dies ein anderer Rechner erst nach dem erneuten Öffnen des Formulars (beide haben das gleiche Formular geöffnet).<br>Auch wenn ich im zweiten Formular explizit die Abfragen aktualisiere, kommt das neue Ergebnis nicht.<br>Wenn ich allerdings vorher im zweiten Formular irgendein UPDATE auf irgendeine Tabelle mache (auch wenn gar nicht wirklich was upgedatet wird) dann sind die aktuellen Werte da.<br>
    Unter win 98 gibt es dieses Phänomen nicht.<br>
    In der BDE ist auf allen Rechnern SHAREDAUTOCOMMIT eingestellt, so dass Änderungen immer gleich in die Datenbank geschrieben werden.<br>
    Was ist da unter Windows 2000 anders? Wahrscheinlich auch unter XP.<br>
    Ich vermute, dass das Abfrageergebnis da irgendwie gecachet ist.<br>
    Hat jemand vielleiocht eine Idee?<br><br>
    Gruß<br>
    Andreas

  • #2
    Hallo,

    ein Client erhält bei jeder SQL-Datenbank im REPEATABLE READ-Modus der Transaktionssteuerung nur dann eine aktualisierte Ergebnismenge, wenn er seine SELECT-Abfrage im Kontext einer neuen Transaktion neu ausführt. Daher stimmt das geschilderte Verhalten mit der Theorie überein (Daten sind erst nach einem eigenen UPDATE sichtbar, da nur dann SHAREDAUTOCOMMIT "feuert"). Um das Problem zu beseitigen, muss der Client den Transaction Isolation Level (TIL) READ COMMITTED (tiReadCommitted) nutzen.

    Bei der BDE hängt die konkrete Umsetzung auf den InterBase-TIL neben der <b>TDatabase</b>-Konfiguration auch noch von der BDE-Version ab. Außerdem überschreibt ein global wirksamer <b>DRIVER FLAGS</b>-Wert für den SQL Link-Treiber die für TDatabase zugewiesene Einstellung:<br>
    a) Der Wert "0" aktiviert in jedem Fall <b>tiReadCommitted</b> (Hard Commit). <br>
    b) Der Wert "512" aktiviert in jedem Fall <b>tiRepeatableRead</b> (Hard Commit). <br>
    c) Der Wert "4096" aktiviert in jedem Fall <b>tiReadCommitted</b> (Soft Commit). <br>
    d) Der Wert "4608" aktiviert in jedem Fall <b>tiRepeatableRead</b> (Soft Commit).<br>

    &gt;Was ist da unter Windows 2000 anders?

    Die Konfiguration der BDE (siehe BDE-Administration | Registerseite <i>Konfiguration</i> | Treiber | Native | INTRBASE)

    Comment


    • #3
      Hallo Andreas,<br>genau das wars. Ich hatte die DriverFlags auf 4608 stehen. Vielen Dank!<br><br>Andrea

      Comment

      Working...
      X