![]() |
Show Message zu andern Host
hallo
ich habe da mal eine ganz bescheidene Frage. ich habe zwei oder drei identische Anwendungen, eine läuft auf Pc1 und die andere auf Pc2. Beide greifen auf eine Datenbank zu. Nun wird von PC1 ein Datenbankupdate ausgeführt. Wie kann ich den zweiten Pc eine message schicken wo drin steht das der User 1(PC1) ein Datenbankupdate vollzogen hat. Ist sowas überhaupt realisierbar? Ich hatte erst an einen Timmer gedacht der alle Minuten auf die DB schaut ob sich in einer Tabelle was getan hat und dies dann als Message ausgibt. Aber das ist nicht die Lösung die ich mir vorstelle. Danke schon mal für eure hilfreichen Antworten.:lol: |
AW: Show Message zu andern Host
zum einen kannst du selbst was basteln, z.B. mit Sockets und dann eine Nachricht übers Netzwerk schicken. Das wird aber schnell sehr unübersichtlich, weil entweder nutzt du einen Broadcast - dann steigt dir aber vielleicht dein Admin aufs Dach, oder du verwaltest, welcher Benutzer auf welchem Rechner aktuell(!) angemeldet ist und nutzt diese Daten.
Ein anderer Weg wären noch Events die manche DBs anbieten (von Firebird weiß ich das :) ), da kannst du zum Beispiel in einem entsprechenden Trigger ein Event auslösen. Dieses wird dann an alle Clients verschickt (über die DB-Verbindung). Leider hast du nicht geschrieben, welche Datenbank du nutzt. |
AW: Show Message zu andern Host
Sockets und eine Chat-ähnliche Lösung sind hier sicher brauchbar. Dabei wie schon gesagt keinen Broadcast senden, sondern auf dem Server einen Service laufen lassen, zu dem sich alle Anwendungs-Clients verbinden.
Code den man als Inspiration verwenden kann findet sich in der Indy Implementierung des Telnet Protokolls, bei der ein Thread benutzt wird um auf Nachrichten des Servers zu warten, aber ich glaube hier im Forum gibt es eine Reihe schlanker Chatlösungen. Über den Empfangsthread kann man asynchron zum Beispiel einen Eventhandler ansteuern, in dem das Client Programm dem Benutzer eine Nachricht anzeigt. |
AW: Show Message zu andern Host
ich benutze MS SQL Datenbanken.
das mit den triggern hört sich ganz interessant an |
AW: Show Message zu andern Host
Ist eine Datenbank für sowas vorgesehen? :gruebel: Ich denke, dass hier eine entsprechende Verbindung über die Sockets/Indys schon sinnvoller wäre. Ebenso würde das System dann weiterhin laufen, selbst wenn der DB-Server down wäre (Wartung/Stromausfall etc.). Selbst wenn man die Meldungen mitloggen wollte, also in einer DB, könnte man der Server-Applikation eine DB-Schnittstelle einbauen. Dann könnte man auch eine DB nutzen, die keine solchen Trigger unterstützt.
|
AW: Show Message zu andern Host
Von der Idee her ist es eigentlich die perfekte Lösung, wie die Events bei Firebird funktionieren sollten. Ob es so etwas bei MSSQL gibt, kann ich nicht sagen.
Leider habe ich festgestellt, das die Event-Geschichte nicht immer zuverlässig funktioniert, oft kommen die Nachrichten leider nicht an. Eine wirkliche Ursache konnte ich nicht finden. Andere Lösungsmöglichkeit: Ein Trigger schreibt bei jeder Änderung z.B. den aktuellen Zeitwert in eine Änderungstabelle, die zwei Felder enthält, Tabellenname und Datum/Zeit. Die Client-Programme fragen diese Tabelle ab und prüfen, ob der Wert für Datum/Zeit sich für die jeweils interessante Tabelle geändert hat. Das kann man z.B. über einen Thread realisieren, der die Abfrage etwa 1 * je Sekunde ausführt. Ist was passiert, kann man dann die entsprechende Aktion auslösen. Ralf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 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