AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Show Message zu andern Host

Ein Thema von WizoHulk · begonnen am 12. Jul 2011 · letzter Beitrag vom 12. Jul 2011
Antwort Antwort
WizoHulk

Registriert seit: 25. Jun 2010
198 Beiträge
 
Delphi 5 Enterprise
 
#1

Show Message zu andern Host

  Alt 12. Jul 2011, 09:09
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.
  Mit Zitat antworten Zitat
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#2

AW: Show Message zu andern Host

  Alt 12. Jul 2011, 09:38
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.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Show Message zu andern Host

  Alt 12. Jul 2011, 10:10
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.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
WizoHulk

Registriert seit: 25. Jun 2010
198 Beiträge
 
Delphi 5 Enterprise
 
#4

AW: Show Message zu andern Host

  Alt 12. Jul 2011, 10:11
ich benutze MS SQL Datenbanken.
das mit den triggern hört sich ganz interessant an
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: Show Message zu andern Host

  Alt 12. Jul 2011, 13:42
Ist eine Datenbank für sowas vorgesehen? 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.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
536 Beiträge
 
Delphi 12 Athens
 
#6

AW: Show Message zu andern Host

  Alt 12. Jul 2011, 14:37
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
Ralf
Gruß vom Niederrhein
  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 02:22 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