TOraAlerter with several events

Discussion of open issues, suggestions and bugs regarding ODAC (Oracle Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Kaus Media
Posts: 13
Joined: Tue 12 Sep 2006 10:02

TOraAlerter with several events

Post by Kaus Media » Tue 04 Mar 2008 15:39

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.

Kaus Media
Posts: 13
Joined: Tue 12 Sep 2006 10:02

Post by Kaus Media » Tue 04 Mar 2008 16:08

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.

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Wed 05 Mar 2008 08:10

You can set several events in Event property only for etAlert mode. When EventType = etPipe, you should use separate TOraAlerter components to wait for each event.

Kaus Media
Posts: 13
Joined: Tue 12 Sep 2006 10:02

Post by Kaus Media » Wed 05 Mar 2008 08:30

Thanks!

Post Reply