![]() |
mittels Interbase-Event einen Wert an Delphi schicken
Hallo,
die Referenz zu Interbase 7 verstehe ich so, dass in einem Event der Eventname,
SQL-Code:
als auch ein Wert
POST_EVENT 'hallo'
SQL-Code:
übermittelt werden kann.
POST_EVENT new.ID
a) Ist das nun überhaupt richtig? Oder falsch verstanden... (bitte nicht :? ) b) Ich verwende aus den IBObjects die IBEvent-Komponente. Mit der kann ich zwar schon ein Event abfangen, jedoch sehe ich in
Delphi-Quellcode:
nirgendwo die Möglichkeit, auf meinen 'new.ID'-Wert zuzugreifen.
procedure TForm2.IBEventEventAlert(Sender: TObject; AEventName: String;
AEventCount: Integer); Könnt Ihr mir da helfen? Vielen Dank, Simon |
Re: mittels Interbase-Event einen Wert an Delphi schicken
Hi,
hast Du schon mal versucht mit dem AEventName was zu machen?? Steckt vielleicht da der Integer-WErt drin?? Prinzipiell würde ich aber die Events nicht zum Werte verschicken nehmen, da sind die einfach zu unsicher. Zudem machen IB/FB-Events angeblich die Programme instabil, vorallem auf den neueren Windows-Versionen.... Mich würde noch interessieren was Du damit machen willst - vielleicht gibt es noch ne andere Lösung!? Grüße Lemmy |
Re: mittels Interbase-Event einen Wert an Delphi schicken
Moinmoin,
ich programmiere an einem Datenbank-gestützten Emailprogramm, genauer zwei Programme. Server: Holt für alle Nutzer die Emails per POP ab und schiebt sie in eine Tabelle TAB_EMAIL. Zu jeder Email wird auch der FK_Ordner des Posteingangs eines Users gespeichert. Auf dies TAB_EMAIL möchte ich einen Afert-Insert-Trigger loslassen:
SQL-Code:
Dieses Event soll für den (betreffenden) Email-Client Zeichen sein, seinen Posteingang zu refrehen, damit die Email gleich sichtbar wird.
CREATE TRIGGER TAB_EMAIL_AI5_EVENT FOR TAB_EMAIL
ACTIVE AFTER INSERT POSITION 5 AS DECLARE VARIABLE V_Ordnername VARCHAR(50); begin SELECT o.name FROM tab_ordner o WHERE (o.id = new.ordner_id) INTO :V_Ordnername; IF (v_ordnername = 'Posteingang') THEN POST_EVENT new.Ordner_ID; end Wenn das nicht gehen sollte, müsste ich - sofern ich mit Events arbeiten will - für jeden Nutzer eine Tabelle anlegen, damit ich auch unterschiedliche Events (z.B. POST_EVENT 'maxmustermann') bekomme. Hoffe, Du kannst mir da helfen - Danke gleich mal! Simon |
Re: mittels Interbase-Event einen Wert an Delphi schicken
Hallo,
leider habe ich keine Erfahrung mit IB-Events. In Oracle kann man bei der Event-Komponente einstellen, auf welche Events überhaupt reagiert wird. In diesem Fall würde ich es über AEventName abwickeln. Der setzt sich dann einfach über den Event-Typ- und dem jeweiligen Usernamen zusammen. |
Re: mittels Interbase-Event einen Wert an Delphi schicken
Hi meggles,
ich verwende auch grundsätzlich keine Events weil die lt. einigen Beiträgen in verschiedenen Foren die Programme instabil werden lassen. Zudem werden Events ja auch nicht "gerichtet" an irgendjemand gesendet, sondern die Nachricht wird an alle erreichbaren PC's gesendet, was die Netzwerkbelastung ansteigen lässt. Zu Deinem Problem: Wenn Du das mit Events machst und den Event "Post abholen" sendest, wird jeder Client der am Laufen ist überprüfen, ob Post für Ihn da ist -> Netzwerk und der DB-Server werden stark belastet. Auch mit einem persönlichen Event wird es nicht wirklich gut. Vorschlag: Verwende einen TCP/IP Server und Client (z.B. Indy, ICS,..) und versende mit diesem direkt an den entsprechenden PC die Nachricht. Der Client muss sich dazu beim Start am Server anmelden und die IP sowie den Benutzer hinterlegen. Beim Empfang eines Mails überprüft nun der Server ob der User angemeldet ist. WEnn ja, wird an die IP eine entsprechende Nachricht gesendet und der Client kann dann die Mails abholen. Grüße Lemmy |
Re: mittels Interbase-Event einen Wert an Delphi schicken
Potzblitz - das isses ! :hello:
Vielen Dank! Simon |
Re: mittels Interbase-Event einen Wert an Delphi schicken
hallo,
ich sitze heute auch an den events und irgendwie willes mir nicht gelingen die teile zum laufen zu bringen. ich habe mir das ganez so vorgestellt: server: post_Event 'PROZENT{55}'; in delphi mit TIBEvents:
Delphi-Quellcode:
so. autoregister:=True;
procedure TdmEvents.calcEventEventAlert(Sender: TObject; EventName: String;
EventCount: Integer; var CancelAlerts: Boolean); begin if checkZeichen(EventName, 'PROZENT') then //schaut nach ob das "PROZENT" in dem namen drin steckt begin fmWarten.pbWarten.Position:=StrToInt(GiBWert(EventName)); //wartestatusanzeige... Application.ProcessMessages; end; end; Registered:= ??? wenn die Stored procedures im server auf gerufen werden, die diese events generieren, passiert in delphi nix. also die im debugger in die procedure gesetzten haltepunkte werden nicht angesteuert... hab ich da irgendwo ein knick in der logik? wäre für hilfe sehr dankbar . :-) grüße |
Re: mittels Interbase-Event einen Wert an Delphi schicken
Hallo,
Also wenn ich mich recht erinnere muss das Event registriert werden um darauf reagieren zukönnen also sind dynamische Eventnamen so nicht möglich. Da der Client eben für dieses Event nicht registriert ist. Uwe |
Re: mittels Interbase-Event einen Wert an Delphi schicken
Zitat:
Der Event muss vorher registriert werden. Ich verwende die Steuerung in einem System, wo sich Clients auf unterschiedliche Server automatisch aufschalten sollen. procedure TData.InitEvent(CbxKanal1: TComboBox); var i : Integer; begin IB_Events.UnregisterEvents; IB_Events.Events.Clear; for i:= 0 to Host.count-1 do begin if TArbeitsplatz(Host[i]).Arbeitsplatz = CBXKanal1.Text then begin EventName := TArbeitsplatz(Host[i]).EventName; UserID := TArbeitsplatz(Host[i]).UID; IB_Events.Events.Add(EventName); end; end; IB_Events.RegisterEvents; end; Gruß Peter |
Re: mittels Interbase-Event einen Wert an Delphi schicken
Alternativ kannst Du auch vom Client aus in regelmässigen Abständen den Interbase Server pollen. Dabei wirst Du dann auch sehr leicht feststellen können, ob überhaupt noch eine Verbindung zum Server besteht... Persönlich bin ich auch kein Freund von solchen Datenbank Events.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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