Announcement

Collapse
No announcement yet.

Wie Daten in Datenbank (physisch) zurückschreiben ?

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

  • Wie Daten in Datenbank (physisch) zurückschreiben ?

    Hallo,
    Daten werden bei einer Datenbankanwendung (BDE) offensichtlich erst physisch in die Datei zurückgeschrieben, wenn die Anwendung verlassen wird - was aber bei einem (Windows-)Absturz zum Datenverlust führt.

    Mit welcher Anweisung kann die DB-Datei von der Anwendung aus aktualisiert werden? (D2)

    Gruß Ernst

  • #2
    Hallo,

    >..wenn die Anwendung verlassen wird..

    Es gibt gleich 2 mögliche Ursachen für dieses Problem: <br>
    1. Der interne Datensatzpuffer der BDE wurde noch nicht geleert (wirkt jedoch nur kurzzeitig) <br>
    2. Die BDE greift auf eine SQL-Datenbank zu, schaltet AUTOCOMMIT ab und ruft nur am Ende der Anwendung COMMIT auf.

    Für den Fall 1) kann man folgendes machen: Wenn die Unit <b>BDE</b> eingebunden wird, stehen die folgenden IDAPI-Funktionen zur Verfügung: <br>
    a) <b>DbiUseIdleTime</b> (kann über Application.OnIdle aufgerufen werden) <br>
    b) <b>DbiSaveChanges</b> (kann in der Ereignisbehandlungsmethode für AfterPost aufgerufen werden)

    <pre>
    (* Daten aus dem Puffer in die Tabelle schreiben, sobald
    das Ereignis »AfterPost« eintritt. *)

    procedure TForm1.TableFlashAfterPost(DataSet: TDataset);
    begin
    DbiSaveChanges(TableFlash.Handle)
    end;
    </pre>
    Für den Fall 2) muss sich die eigene Anwendung um die Transaktionen kümmern, oder muss den AUTOCOMMIT-Mechanismus der BDE ausnutzen (was als Vorgabekonfiguration normalerweise wirksam ist)

    Comment

    Working...
    X