Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Automatische Aktualisierung datensensitiver Komponenten (https://www.delphipraxis.net/133138-automatische-aktualisierung-datensensitiver-komponenten.html)

fw.burns 26. Apr 2009 18:31

Datenbank: noch undefiniert • Zugriff über: ZEOS 6.6.4

Automatische Aktualisierung datensensitiver Komponenten
 
Hallo Forum,

ich arbeite mit einer Datenbank, auf welche ich mittels den ZEOS Komponenten (Version 6.6.4) zugreife. Die Daten werden anschließend über ein DataSource in einem DBGrid dargestellt. Da auf den Datenbankserver mehrere Benutzer zugreifen können, werden die Daten fortlaufend geändert. Wie schaffe ich es nun, dass bei jedem Client immer die aktuellen Daten im DBGrid erscheinen? Sprich, die datensensitive Komponente sollte automatisch (ohne manuellen Refresh etc) erkennen, wenn sich die abgebildete Datenmenge ändert. (Das muss irgendwie funktionieren, sonst macht ein Datenbanksystem keinen Sinn…)
Welches Datenbanksystem ist dafür am besten geeignet (mySql, Firebird, ...)?

Ich hab bereits Google mit mehreren Stichworten gefragt, komme aber nicht zum gewünschten Ergebnis.

Grüße
Benny

mkinzler 26. Apr 2009 18:36

Re: Automatische Aktualisierung datensensitiver Komponenten
 
Bei Interbase/FireBird: Events in Triggern aulösen.

fw.burns 26. Apr 2009 20:08

Re: Automatische Aktualisierung datensensitiver Komponenten
 
Hallo,

gibt es auch eine Möglichkeit bei mySql? Ansonsten müsste ich sämtliche Tabellen auf Firebird übertragen.

Wundert mich, dass es so kompliziert ist. Ich dachte es müsste lediglich eine Eigenschaft bei einer Komponente gesetzt werden.
Eigentlich gehört es doch zu den Grundaufgaben einer Datenbank, dass beim Client immer die aktuellen Daten erscheinen.

Wie funkioniert das genau mit den Events in Triggern?

mjustin 26. Apr 2009 20:17

Re: Automatische Aktualisierung datensensitiver Komponenten
 
Zitat:

Zitat von fw.burns
Eigentlich gehört es doch zu den Grundaufgaben einer Datenbank, dass beim Client immer die aktuellen Daten erscheinen.

Und dass sie einen guten Kaffee kochen kann, auch :)

Events haben wir zu Zeiten von InterBase 5 benutzt, irgendwie hat das die Client regelmäßig abgeschossen, daher haben wir es wieder gelassen.

Neben der Push-Technik mit Triggern / Stored Procedures (die ja dann voraussetzt, überall wo gewünscht DELETE / INSERT / UPDATE-Trigger zu schreiben) besteht auch die Möglichkeit

a) eine PULL-Methode zu wählen, bei der timergesteuert eine Statustabelle abgefragt wird (in der dann z.B. unter dem Key 'LAST_INSERT_IN_KUNDENTABELL' ein Zeitstempel steht, den der Client dann abfragt und mit einem lokal gespeicherten Wert vergleicht

b) eine PUSH-Methode auf der Basis eines "Chatprogramms", so wie Ajax im Webbrowser auch arbeitet (und wie man z.B. bei Stackoverflow.com sieht, ganz ordentlich funktioniert) - dazu benötigt man einen Server, der dann über TCP/IP alle Clients verbindet. In Enterprise Systemen ist es nicht ungewöhnlich, neben einem Datenbankserver auch noch andere Methoden zur Datenübertragung zu verwenden :)

Cheers,


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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