AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Mitbekommen wenn sich Daten in der Datenbank ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Mitbekommen wenn sich Daten in der Datenbank ändern

Ein Thema von DelphiManiac · begonnen am 16. Jun 2010 · letzter Beitrag vom 18. Jun 2010
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Mitbekommen wenn sich Daten in der Datenbank ändern

  Alt 16. Jun 2010, 10:43
Datenbank: SQL Server • Version: 2008 • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
borwin

Registriert seit: 14. Sep 2006
Ort: Rostock
72 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Mitbekommen wenn sich Daten in der Datenbank ändern

  Alt 16. Jun 2010, 10:49
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
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#3

AW: Mitbekommen wenn sich Daten in der Datenbank ändern

  Alt 16. Jun 2010, 11:39
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)
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#4

AW: Mitbekommen wenn sich Daten in der Datenbank ändern

  Alt 18. Jun 2010, 10:21
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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Mitbekommen wenn sich Daten in der Datenbank ändern

  Alt 18. Jun 2010, 10:26
Hallo,

ein kleine Google-Suche ...

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


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Mitbekommen wenn sich Daten in der Datenbank ändern

  Alt 18. Jun 2010, 10:38
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#7

AW: Mitbekommen wenn sich Daten in der Datenbank ändern

  Alt 18. Jun 2010, 10:48
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Mitbekommen wenn sich Daten in der Datenbank ändern

  Alt 18. Jun 2010, 11:11
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 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