Interbase (vermutlich Transaktions-) Problem

Supa

Erfahrenes Mitglied
Hy...

Ich arbeite mit dem BCB 6 und einer Interbase Datenbank 6.0.1
Der IB-Server liegt im Netzwerk und arbeitet da so vor sich hin...
Dann hab ich noch 'n schönes Programm geschrieben das auf diese DB zugreift. Das funktioniert soweit auch ganz gut, solange nur EIN Client auf die DB zugreift.

Wenn ich jetzt mehr als ein Client gestartet wird, der auf die DB zugreift, gibt's auch erstmal keine kritischen Probleme. Erst wenn Client A einen Datensatz schreibt und danach Client B diesen Datensatz lesen will. Client B bekommst nämlich jetzt nicht die geänderten Daten, sondern die "alten Daten", wie sie waren bevor sie von Client A geändert wurden.

Meiner Meinung nach is das ein Transaktionsproblem. Also Client A schreibt in einer eigenen Transaktion die Daten in die DB. Jetzt kommt Client B und liest in seiner eigenen Transaktion den selben Datensatz.

Normalerweise kann man so eine Transaktion einfach mit einem "Commit" beenden, so das ihre Daten fest in die DB geschrieben werden. Und wenn dann Jemand anderes kommt und die Daten lesen will, bekommt er automatisch die aktuellsten Daten.

Soviel zu Theorie. Irgendwie Funktioniert das nur leider, wie so oft nicht richtig. Mein Programm kann immer nur so auf die Daten zugreifen, wie sie waren, als es gestartet wurde. Nur ein Neustart des Programms kann die Daten auf den aktuellsten Stand bringen. Jetzt kann man sich natürlich vorstellen, das es ziemlich nervig ist, das Programm jedensmal neu zu starten um mit aktuellen Daten arbeiten zu können, nicht wahr?

Letztendlich möchte ich das sobald ein Client Daten in der DB geändert hat, sie auf allen anderen Clients zum Zugriff bereit stehn, so dass niemals "alte" Daten aus der DB gelesen werden.

Weiß jemand, woran das liegt, bzw. wie ich das Problem lösen kann?

(Ich hoffe ich hab das Problem vernünftig geschildert?!)
 
Alles klar! ich hab des Problems Lösung:

Die Daten müssen "Commited" gelesen werden. Das geht mit eine paar einfachen Parametern in der IBTransaction-Komponente. Doppelklick drauf, dann öffnet sich ein Fenster in der man diese Parametrierung vornehmen kann...

gruß Supa
 
Zurück