Hi there,
I am using licensed ODAC 6.25.2.14 and I have trouble using TOraAlerter.
It works fine as long as I set only one event in the events property.
When I set it to a list of values (Ex: 'REPORT_EXECUTE_179;REPORT_SERVER') then it does react only to the first one (I have tried inverting the values, and it reacts to the other one without changing a single other line of code).
Documentation p283 says 'names' (plural) so I believe I am doing right. Furthermore, it reacts to the first of the list, so I believe my list separator is good (Not documented in help...).
Is this a bug, or am I doing something wrong? Do I need to create two different TOraAlerter objects instead?
Thanks.
TOraAlerter with several events
-
Kaus Media
- Posts: 13
- Joined: Tue 12 Sep 2006 10:02
Because code means a lot more... Here is a sample:
Button1 properly gives a message, while button2 does not...
Thanks.
unit Unit9;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Ora, OraAlerter, StdCtrls;
type
TForm9 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Déclarations privées }
S: TOraSession;
OA: TOraAlerter;
public
{ Déclarations publiques }
procedure OracleAlert (Sender: TObject; Event: string; Message: string);
end;
var
Form9: TForm9;
implementation
{$R *.dfm}
procedure TForm9.Button1Click(Sender: TObject);
begin OA.SendEvent('ALERT1', 'TEST'); end;
procedure TForm9.Button2Click(Sender: TObject);
begin OA.SendEvent('ALERT2', 'TEST'); end;
procedure TForm9.FormCreate(Sender: TObject);
begin
S := TOraSession.Create(Self);
S.Username := 'ops$Ragheb';
S.Password := 'Olivier4568';
S.Server := 'CLIN';
S.Connect;
OA := TOraAlerter.Create(Self);
OA.Events := 'ALERT1;ALERT2';
OA.EventType := etPipe;
OA.OnEvent := OracleAlert;
OA.Session := S;
OA.TimeOut := -1;
OA.Active := True;
end;
procedure TForm9.FormDestroy(Sender: TObject);
begin
OA.Active := False;
OA.Free;
S.Free;
end;
procedure TForm9.OracleAlert(Sender: TObject; Event, Message: string);
begin
ShowMessage('Event: '+Event+' Message: '+Message);
end;
end.
Button1 properly gives a message, while button2 does not...
Thanks.
unit Unit9;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Ora, OraAlerter, StdCtrls;
type
TForm9 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Déclarations privées }
S: TOraSession;
OA: TOraAlerter;
public
{ Déclarations publiques }
procedure OracleAlert (Sender: TObject; Event: string; Message: string);
end;
var
Form9: TForm9;
implementation
{$R *.dfm}
procedure TForm9.Button1Click(Sender: TObject);
begin OA.SendEvent('ALERT1', 'TEST'); end;
procedure TForm9.Button2Click(Sender: TObject);
begin OA.SendEvent('ALERT2', 'TEST'); end;
procedure TForm9.FormCreate(Sender: TObject);
begin
S := TOraSession.Create(Self);
S.Username := 'ops$Ragheb';
S.Password := 'Olivier4568';
S.Server := 'CLIN';
S.Connect;
OA := TOraAlerter.Create(Self);
OA.Events := 'ALERT1;ALERT2';
OA.EventType := etPipe;
OA.OnEvent := OracleAlert;
OA.Session := S;
OA.TimeOut := -1;
OA.Active := True;
end;
procedure TForm9.FormDestroy(Sender: TObject);
begin
OA.Active := False;
OA.Free;
S.Free;
end;
procedure TForm9.OracleAlert(Sender: TObject; Event, Message: string);
begin
ShowMessage('Event: '+Event+' Message: '+Message);
end;
end.