1

Ich konvertiere Anwendung in DBExpress geschrieben, um neue FireDAC-Komponenten zu verwenden. Die grundlegenden Dinge wie das Öffnen der Abfrage, das Ändern des Filters oder Sortierens, das Anzeigen im Raster funktionieren ordnungsgemäß. Aber ich bin überrascht, dass sich einige Funktionen im Vergleich zu dbexpress anders verhalten und ich das nicht nachvollziehen kann.FireDAC ApplyUpdates und Transaktionssteuerung

Meine Anwendung enthält Datenbankeditor. Wenn der Benutzer den Editor öffnet, wird die neue Transaktion durch Aufrufen der Methode TFDConnection::StartTransaction gestartet. Wenn der Benutzer auf OK klickt, wird die aktive Transaktion festgeschrieben und der Editor geschlossen.

Im Editor verwende ich zwei Abfragen, um Datensätze zu bearbeiten. In der ersten Abfrage erstelle ich den SQL Update Befehl (wie "update TEST set NAME='some name' where ID=1234") manuell und führe ihn aus. So weit, ist es gut.

zweite Abfrage ist mit TDBAdvGrid (entspricht TDBGrid von TMS Software Firma) und CachedUpdates = true haben. Wenn ich einen Datensatz in diesem Raster ändere, rufe ich TFDQuery::Post und TFDQuery::ApplyUpdates.

Whats seltsame Aufruf TFDQuery::ApplyUpdates Commits nicht nur ausstehende Änderungen in dieser spezifischen Abfrage, sondern alle Abfragen mit Instanz TFDConnection verbunden. Ich dachte, dass der Aufruf von ApplyUpdates SQL-Update-Aufrufe ausgeben sollte, aber die Transaktionssteuerung nicht beeinträchtigen sollte.

Ich möchte dem Benutzer die Option geben, alle von ihm vorgenommenen Änderungen im Datenbankeditorfenster abzulehnen. Wie mache ich das richtig? Sollte ich den Anruf auf ApplyUpdates auf Zeit beim Schließen des Fensters verschieben? Was ist dann der Zweck von TFDQuery::CommitUpdates und TFDConnection::Commit, wenn alles, was notwendig ist, ist der Anruf von TFDQuery::ApplyUpdates?

Antwort

0

Setzen Sie TFDConnection :: TxOptions :: StopOptions :: xoIfCmdsInactive auf false. Dadurch wird auch die Option TFDConnection :: TxOptions :: AutoCommit deaktiviert, und die Anwendung kann Transaktionen selbst steuern.

Verwandte Themen