Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Aktualisieren von einem dbgrid im LAN (https://www.delphipraxis.net/137935-aktualisieren-von-einem-dbgrid-im-lan.html)

olaf 31. Jul 2009 11:24

Datenbank: turbodb • Version: 5.0 • Zugriff über: tdatabase + ttable von turbodb

Aktualisieren von einem dbgrid im LAN
 
Hallo,
ich arbeite an einer Applikation in der Termine für verschiedene Räume in einer Tabelle einer Datenbank gespeichert werden. Die Struktur der Termine und der zugeordneten Räume wird für 2 Jahre im voraus angelegt, sodass eine Neuanlage eines Termins nicht über ein „append“ sondern nur über „edit“ in die Datenbank eingetragen werden kann. Außerdem ist es nicht möglich die Tabelle direkt mit einem dbgrid zu koppeln um Aktualisierungen für jeden User sofort anzuzeigen. Die Anzeige der Daten erfolgt über eine SQL-Abfrage. Im Einplatzbetrieb kein Problem. Der User sucht sich eine freien Termin im dbgrid, welches über die SQL-Abfrage gespeist wurde, der dann in die Datenbanktabelle eingetragen wird. Anschließend wird die Abfrage erneut ausgeführt um das dbgrid zu aktualisieren.
Für mich stellt sich das Problem im LAN-Betrieb, wenn ein zweiter User auf die Datenbank zugreift. Wie oben beschrieben bekommt dieser Nutzer nichts von dem neu eingetragenen Termin mit, da das dbgrid ja nicht direkt mit der Datenbank verbunden ist und somit auch nicht automatisch aktualisiert wird. Er hat immer noch den alten Zustand der Termintabelle im grid, da dieser ja über eine Abfrage angezeigt wird. Wie bekomme ich es hin, wenn der User 1 einen Termin einträgt, das User2 diesen neuen Termin in seinem Grid sieht? Mit einen Button der zur Aktualisierung die Abfrage erneut ausführt, bin ich nicht glücklich. Dieses muss irgendwie automatisch passieren. Mir schwebt auch schon etwas vor, indem ich eine Userverwaltung einbaue und darüber den Zugriff von Aktualisierungen steuere. Vielleicht hat einer von euch eine elegantere, einfachere Lösung.

Olaf

hoika 31. Jul 2009 11:33

Re: Aktualisieren von einem dbgrid im LAN
 
Hallo,

eine Protokolldatei mitführen,
die mind. einträgt wann das letzte mal was gemacht wurde.
(DateOfLastChange ...)

Dann alle X Minuten oder beim Ändern-Klick des Nutzers
auslesen und mit dem selbst sich gemerkten letzten Datum vergleichen.
Ist es verschieden, wurde was geändert -> Neuladen.

Schwieriger wäre eine direkte Synchronisation,
z.B. ein Server, wo die Programme sich anmelden
und über Änderungen informieren.


Man könnte bie File-DBs auch das Dateidatum prüfen ...


Heiko

ChrisE 31. Jul 2009 11:53

Re: Aktualisieren von einem dbgrid im LAN
 
Zitat:

Zitat von hoika
(DateOfLastChange ...)

Soetwas ist meines Erachtens auch der beste Weg, wobei man hier anstatt eines echten Datums nach meiner Erfahrung besser einen Counter nimmt und diesen jedes mal erhöht wenn ein Client eine Änderung macht. Das kann man die DB sogar selber machen lassen in eine dafür angelegte Tabelle.
Hat den Vorteil, dass man keine absolute Zeit mehr benötigt - die es ja nicht gibt - und die Abfragen, ob die Werte noch aktuell sind, bleiben klein.

Gruß, Chris

olaf 2. Aug 2009 11:54

Re: Aktualisieren von einem dbgrid im LAN
 
Hallo,

vielen Dank für die Vorschläge. Werde einen Counter in einer Tabelle mitführen und darüber die Aktualsierungen der Clients machen, indem ich in kurzen Zeitintervallen den Counter abfrage. Einfach und genial, hat mir sehr geholfen.

Olaf


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 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-2025 by Thomas Breitkreuz