Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Nachrichten über SQL schicken? (https://www.delphipraxis.net/58003-nachrichten-ueber-sql-schicken.html)

CG2003 29. Nov 2005 22:40

Datenbank: MySQL • Version: 4.1 • Zugriff über: Zeos

Nachrichten über SQL schicken?
 
Hallo,

ich entwickle gerade ein Programm zur Auftragsverwaltung und Reparatureingabe.
Nun möchte ich eine Art "E-Mail"-System einbauen. D.H., dass ein Nutzer einem anderen,
allen anderen oder nur ein paar anderen Benutzern eine Nachricht mit Betreff usw. schicken kann.

Ich möchte, das dies irgendwie über den SQL-Server geschieht, so dass die Nachrichten auch
gespeichert werden, und gleich nach dem Login im meinem Programm angezeigt werden.

Ist sowas generell überhaupt möglich, und wenn ja, wie kann man das machen?

mschaefer 29. Nov 2005 22:50

Re: Nachrichten über SQL schicken?
 
N´abend

also ich habe mal für eine Ergotherapiepraxis ein Mitteilungsbuch realisiert. Das war eigentlich eine recht überschaubare Geschichte. Letztlich hast Du die Nachricht, einen Zeit- und Datumsstempel und Absender sowie Empfänger. Das ganze braucht ein Eingabeformular und eine Übersichtsseite. Die dürften wohl kaum ein Problem sein.

Jetzt hat man prinzipiell die Möglichkeiten:

a.) Du baust eine periodische Abfrage ein um die Nachrichten zu aktualisieren
b.) Du schickst einen UDP-Broadcast-Ping als Info an alle Rechner, dass ein Neueintrag vorliegt.
c.) Du schickst Die Nachricht gleich mit dem UDP-Broadcast mit und speicherst die Mitteilung zudem in die DB.

Denke das ist es. Grüße // Martin

Matze 29. Nov 2005 22:52

Re: Nachrichten über SQL schicken?
 
Hi,

klar ist das möglich. Ich weiß nicht, welche Komponente die Enterprise-Version alles mit sich bringt, aber da gibt's sicher was. Wenn nicht, die Suche hätte geholfen: MySQL ohne Komponenten oder ein Tutorial auf Michaels Website.


Nachtrag: Sehe gerade erst, dass es über ZEOS gehen soll. Wie das genau geht, weiß ich nicht, sorry.

supermuckl 29. Nov 2005 22:55

Re: Nachrichten über SQL schicken?
 
Zitat:

Du schickst einen UDP-Broadcast-Ping als Info an alle Rechner, dass ein Neueintrag vorliegt.
in einem geroutetem netzwerk nicht möglich -> eventuell dann die mysql DB selbst als trigger verwenden, indem einfach irgendwo ein datetime stempel existiert, der bei jedem neueintrag aktualisiert wird -> und die clients pollen alle paar sekunden auf diesen stempel und vergleichen ihn, ob er aktualisiert wurde.
eine stetige verbindung zur DB würde ich dir dann aber anraten.

CG2003 29. Nov 2005 23:23

Re: Nachrichten über SQL schicken?
 
Hmm, also ich hatte mir das so gedacht.

Ein CLient schreibt eine Nachricht in eine Tabelle "News" oder so.

Die anderen Clients prüfen, mittels TTimmer in einem bestimmten Intervall, ob neu Nachrichten drin sind.
Nur weiß ich nicht genau, wie ich das implementieren soll... :wall:

supermuckl 29. Nov 2005 23:41

Re: Nachrichten über SQL schicken?
 
fang halt erstmal an, indem du mit zeos drauf zugreifst und aus einer tabelle, in der ein feld vom typ datetime ist, das automatisch mit dem aktuellen timestamp gefüllt wird, abfrägt - "order by datetime desc limit 1"
so ungefär. dann bekommste den neusten datensatz raus ;)
ein mysql handbuch runterladen und mit den zeos komponenten rumspielen bzw mal die DP durchforsten - da gibts haufen threads wie man mit zeos auf mysql zugreift.
ausserdem würde ich empfehlen, das du etwas anderes als zeos verwendest, da zeos erfahrungsgemäß langsamer ist als z.b. direkt mit der mysql api oder mit AnyDAC oder MyDAC usw, die das auch nativ machen

CG2003 30. Nov 2005 00:21

Re: Nachrichten über SQL schicken?
 
Zitat:

Zitat von supermuckl
ausserdem würde ich empfehlen, das du etwas anderes als zeos verwendest, da zeos erfahrungsgemäß langsamer ist als z.b. direkt mit der mysql api oder mit AnyDAC oder MyDAC usw, die das auch nativ machen

Nun ja, anscheinend, haben wir aneinander vorbei geredet... :gruebel:
Also mein Programm ist fast fertig, und das alles von Zeos auf z.B. MyDAC oder direkt auf die MySQL-API zu mirgrieren, wäre momentan ein horrender Aufwand. Zumal die Deadline (das Programm ist für meinen Arbeitgeber) schon am 19.12.2005 ist. :wall:

Aber sollte ich das jetzt per Timer machen? Oder wie?
Wie kann ich das realisieren, das der Client, der die Nachricht schreibt, auswählen kann, an wen diese gehen soll? Und wie funktioniert das "Senden" an sich dann genau?

Aber der Tip mit dem "neusten Datensatz" ist schon mal ganz gut. Ein Buch habe ich. Ich habe das Handbuch von MySQL und ein MySQL-Buch vom Franzis Verlag, welches an sich ganz gut ist.

Sir Rufo 30. Nov 2005 01:32

Re: Nachrichten über SQL schicken?
 
Moin,

also wenn du schon ein Auftrag-Reparatur-Gedöns-Programm geschrieben hast (mit MySQL als DB),
wo ist denn dann bitteschön das Problem einen Query auf einer SQL-Tabelle zu öffnen?
(zumal schreibst du, dass diese Nachrichten gleich nach dem Login angezeigt werden sollen)
Das ist ja wohl trivialer als Auftrag-usw. tststststs

Also mal in groben Zügen:

Tabelle: MailTime(DATETIME), MailFrom(VARCHAR), MailTo(VARCHAR), MailText(TEXT), MailRead(DATETIME)
(Wenn die Mail an mehrere gehen soll, dann auch pro Empfänger in die Tabelle schreiben!)

Ich würd ja jetzt ein Frame oder Formular entwerfen, je nachdem wie du die mails anzeigen willst (innerhalb des Arbeitsformulars, oder modal bzw. unabhängig)
In dem Frame kommt dann die TimerKompo und die steuert dann den SELECT (ähöh Query)

Also mit UDP-Broadcast an die Rechner senden, das mail vorhanden (warum dann die mail nicht gleich senden?).
Vor allem ist das ja wohl mit Kanonen auf Spatzen.
Aber wo wir ja bei mail sind, die wird ja auch in regelmäßigen Abständen vom Client abgefragt, also die einfachste und hierbei wohl auch damit effektivste Methode per Timer alle 60sec den SELECT neu ausführen.

cu

supermuckl 30. Nov 2005 19:20

Re: Nachrichten über SQL schicken?
 
Zitat:

also wenn du schon ein Auftrag-Reparatur-Gedöns-Programm geschrieben hast (mit MySQL als DB),
wo ist denn dann bitteschön das Problem einen Query auf einer SQL-Tabelle zu öffnen?
das mein ich aber auch. klingt wie wenn ein bäcker frägt, wie er die knetmaschine an kriegt *g*

CG2003 30. Nov 2005 19:55

Re: Nachrichten über SQL schicken?
 
Zitat:

Zitat von supermuckl
Zitat:

also wenn du schon ein Auftrag-Reparatur-Gedöns-Programm geschrieben hast (mit MySQL als DB),
wo ist denn dann bitteschön das Problem einen Query auf einer SQL-Tabelle zu öffnen?
das mein ich aber auch. klingt wie wenn ein bäcker frägt, wie er die knetmaschine an kriegt *g*

Die Abfrage ist mir auch relativ klar. Es ging nur ums programmtechnische, ob per Timer und wie ich an "Gruppen" sende.


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