Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Mitbekommen wenn sich Daten in der Datenbank ändern (https://www.delphipraxis.net/152240-mitbekommen-wenn-sich-daten-der-datenbank-aendern.html)

DelphiManiac 16. Jun 2010 09:43

Datenbank: SQL Server • Version: 2008 • Zugriff über: ADO

Mitbekommen wenn sich Daten in der Datenbank ändern
 
Hallo,

ich nutze SQL-Server 2008 als Backend und bilde damit eine Terminplanungssoftware ab.
Es gibt mehrere Windows Clients, die Termine buchen können, alle greifen auf die selbe DB zu.

Jetzt meine Frage, wie kann ich meinen Terminplaner immer aktuelle halten, ohne immer wieder zyklisch SQL-Abfragen nach dem aktuellen Inhalt durchzuführen.
Ein Tipp von dem Hersteller der Terminplanerkomponente (TMS-Software) war das man einen Datenbank-Trigger nutzen kann.

Könnt ihr mir da weiterhelfen?!
Danke
Gruß
DelphiManiac

borwin 16. Jun 2010 09:49

AW: Mitbekommen wenn sich Daten in der Datenbank ändern
 
Mit dem Trigger ist schon gut. Jetzt brauchst Du nur noch eine Info an den Client. In Firebird oder Oracle gibt es Events die man nach bedarf "feuern" kann und die Clients eine Info erhalten doch mal ihre Daten zu aktualisieren.
Schau mal ob es sowas auch bei MSSQL gibt. Ich denke schon.

Grß Hartmuth

joachimd 16. Jun 2010 10:39

AW: Mitbekommen wenn sich Daten in der Datenbank ändern
 
Zitat:

Zitat von DelphiManiac (Beitrag 1029248)
Ein Tipp von dem Hersteller der Terminplanerkomponente (TMS-Software) war das man einen Datenbank-Trigger nutzen kann.

1) Du arbeitest über _eine_ Message-Tabelle, in welche alle Events eingetragen werden und pollst diese (einfachste Variante, nur eine Tabelle statt jeder abfragen)
2) Du könntest in .NET (Prism?) eine Stored Procedure schreiben, welche auf dem Netzwerk einen UDP-Broadcast machst und auf diese Pakete client-seitig lauschen
3) Du verwendest Event Notification (ein schneller Google-Lookup zeigt, das die sogar schon in MS SQL 2005 vorhanden sein sollte)

DelphiManiac 18. Jun 2010 09:21

AW: Mitbekommen wenn sich Daten in der Datenbank ändern
 
Hi,

danke für eure Antworten,
ich tendiere zu Punkt 3.) Event Notifications,

kannst du mir darüber was sagen, wie man diese nutzt ganz generell?!

Gruß
und Danke

hoika 18. Jun 2010 09:26

AW: Mitbekommen wenn sich Daten in der Datenbank ändern
 
Hallo,

ein kleine Google-Suche ...

http://www.exforsys.com/tutorials/sq...fications.html


Heiko

Bernhard Geyer 18. Jun 2010 09:38

AW: Mitbekommen wenn sich Daten in der Datenbank ändern
 
Weiter Alternative: Umstellung der Anwendung auf N-Tier-Architektur. Nur eine Serverkomponente kommuniziert mit der DB und kann so sehr einfach alle änderungen an alle angemeldeten Clients verteilen.

Als Vorstufe davon gibt es nur eine Event-Komponente die z.B. von jedem Client über änderungen benachrichtigt wird wenn diese Daten in der DB ändern.

DelphiManiac 18. Jun 2010 09:48

AW: Mitbekommen wenn sich Daten in der Datenbank ändern
 
Hallo Bernhard,

ich würde liebend gerne noch eine Schicht (Serverschicht) dazwischen setzten, leider denke ich dass ich mir dann einige Probleme ins Haus hole,
da die Terminplanerkomponente (TDBPlanner) von TMS (die im übrigen richtig klasse ist) eine direkte DB-Anbindung benötigt.

oder aber ich nutze dann die DB Verbindungslose Komponente (TPlanner) und setzte dann die Items (Buchungen) selbst ohne direkte DB-Verbindung...

Gruß
DelphiManiac

Bernhard Geyer 18. Jun 2010 10:11

AW: Mitbekommen wenn sich Daten in der Datenbank ändern
 
Zitat:

Zitat von DelphiManiac (Beitrag 1029871)
ich würde liebend gerne noch eine Schicht (Serverschicht) dazwischen setzten, leider denke ich dass ich mir dann einige Probleme ins Haus hole,
da die Terminplanerkomponente (TDBPlanner) von TMS (die im übrigen richtig klasse ist) eine direkte DB-Anbindung benötigt.

Wenn du eh nur unter Windows arbeitest könntest du mit ADO-Recordssets arbeiten. Diese können über Rechnergrenzen (vom Middle-Tier zum Client) übertragen werden um am Client einer TADODataset untergeschoben werden so das die DB-Kompos wie gewohnt arbeiten. Frag mich aber nicht nach Details. Ist schon ca. 10 Jahre her das ich das gemacht habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz