![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: TIBTable, TIBDatabase, IBX
Daten auf Clients aus Netzwerk-DB werden nicht aktualisiert
Hallo!
Ich nutze in meinem Programm eine Firbirddatenbank. Diese liegt auf einem Server. Mein Programm verbindet sich nun mit der Datenbank auf diesem Server. In meinem Programm nutze ich eine TIBDatabase- verbunden einer mit IBTransaction-Komponente. Für die Tabelle eine TIBTable- mit einer TDataSource-Komponente. Die Daten werden in DBEdit-Feldern einem TDBGrid angezeigt. Wenn ich nun in meinem Programm einen neuen Datensatz mit Tabelle.Insert anlege und diesen mit Tabelle.Post speichere, ist dieser auf anderen Clients nicht sichtbar. Wenn ich den anderen Client beende und neu starte, zeigt er immer noch nicht den neuen Datensatz an. Ich muss den Client, auf dem der Datensatz erzeugt wurde, neu starte, damit er auf anderen Clients sichtbar wird. Mit Neustarten ist gemeint, dass das Programm neu gestartet wird. Das gleiche Problem besteht bei Änderungen an den Datensätzen. Wie kann ich erreichen, dass Neue Datensätze/Änderungen sofort in die DB geschrieben werden? Und wie kann ich erreichen, dass diese Änderungen auch auf den anderen Clients ohne Neustart sichtbar werden? Vielen Dank im Voraus! |
Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi
Wann commitest du die Transaktion?
|
Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi
Zitat:
|
Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi
Du kannst die Transaktion so einstellen, daß er automatisch committed. Das ist aber nicht unbedingt gut, du stellst ja damit nur das Verhalten von Paradox her und verzichtest auf den Vorteil von Transaktionen.
Transaktion dienen dazu mehrere zusammenhängende Aktionen nach dem Alle-oder-Keine-Prinzip, d.h. entweder alle Vorgänge werden durchgeführt oder alle werden zurückgenommen. |
Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi
Zitat:
DefaultAction=TACommitRetaining IdleTimer=1 Params: read_committed rec_version nowait Nun werden die Änderungen in die DB eingetragen, ohne dass ich den Client auf dem die Änderungen erfolgten, neustarten muss. Das ist schonmal gut. Aber was jetzt noch fehlt: Die Änderungen werden auf den anderen Clients nicht angezeigt. Ich muss auf den anderen Clients die App erst neustarten. Wie können die Änderungen in den anderen Clients automatisch angezeigt werden? Ich habe in den Clients ein DBGrid, das immer die aktuellen Stand der Datenbank anzeigen soll. |
Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi
Erzeuge beim Ändern einen Event und lasse die anderen Clients darauf reagieren ( Event-Alerter)
|
Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi
Das, oder die 'Quick&Dirty-Lösung': Du packst einen Timer dazu und lässt die DataSource an der die Grid hängt einfach alle N Sekunden refreshen. Das das ist tatsächlich etwas Dirty - wobei es schon okay ist wenn es sich hier wirklich um eine reine Datenanzeige handelt und Du Dir die Einarbeitung in die Events & Alerts auf Firebird für den Moment ersparen willst.
Dennoch lohnt es sich da einen Blick drauf zu werfen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz