602SQL-Úplná dokumentace Index  

TSQL602Event

Delphi / Kylix

Zjednodušená deklarace třídy:

type TSQL602Event = class(TPersistent)
published
  property EventName  : string;	
  property ParamMask  : string;	
  property ParamExact : Boolean;
  
public
  property Param      : string;	
  property Count      : Integer;	
  
  constructor Create; virtual;
  
protected
  procedure AssignTo(Dest : TPersistent); override;
  	
end;


Popis

Třída popisující databázovou událost, registrovanou v TSQL602EventAction. Databázová událost popsaná třídou TSQL602Event nemá žádnou souvislost s událostmi (angl. events), jak jsou definovány a používány v programu Delphi!

Klienti 602SQL mohou být informováni o událostech, které na serveru nastávají jako důsledek činnosti ostatních klientů, například o změně v datech v určité tabulce nebo provádění určité procedury (viz Synchronizace klienta s událostmi na serveru). Objekt TSQL602Event reprezentuje popis jedné události. Událost je možné vyvolat v uložené proceduře pomocí SQL funkce Invoke_event, nebo pomocí metody InvokeEvent z třídy TSQL602Connection. Ostatní klienti (aplikace, formuláře) se o události dozví, pokud jejich komponenta TSQL602EventAction je registrována pro příjem této události.



Unit

SQL602

Vlastnosti komponenty

EventName : string

Jméno události, může mít maximálně 31 znaků. 602SQL server registruje jednotlivé požadavky na sledování událostí specifikovaných určitým jménem a se specifikovanou hodnotou parametru události.

ParamMask : string

Maska parametrů události. 602SQL server informuje klienta pouze o událostech zadaného jména, jejichž parametr se shoduje s maskou.

ParamExact : Boolean

Příznak určuje do jaké míry má 602SQL server porovnávat aktuální hodnotu parametru s masky. Má-li hodnotu true, bude server informovat klienta pouze o událostech, jejichž parametr se přesně shoduje s maskou včetně velikosti písmen. Má-li hodnotu false, bude server informovat klienta pouze o událostech, jejichž parametr začíná řetězcem specifikovaným v ParamMask. Pokud mají být sledovány všechny výskyty dané události bez ohledu na hodnotu parametru, je třeba nastavit ParamMask na prázdný řetězec a ParamExact na false.

Param : string

Aktuální hodnota parametru nastalé události.

Count : integer

Počet výskytů události se stejným parametrem během jedné transakce, nebo během doby, kdy klient nestačil na předchozí výskyty události reagovat.



Metody komponenty

procedure AssignTo(Dest : TPersistent);

Uživatelská aplikace může definovat potomka třídy TSQL602Event. Pokud mají být přidané vlastnosti potomkovské instance doručeny proceduře, která obsluhuje výskyt události, je třeba přepsat metodu AssignTo. Implicitní implementace kopíruje do cílové instance vlastnosti Event, ParamMask, ParamExact, Param a Count.



Příklad

Iniciování události:

var
  FirmyDetailForm: TForm2;
  MyEvent : TSQL602Event;
...

procedure TForm2.Send602Event(DataSet: TDataSet);
// AfterPost ve zdrojovém datasetu - vyvolá událost a předá jednoznačný identifikátor záznamu
var
    id : String;
begin
    MyEvent := TSQL602Event.Create;
    MyEvent.EventName := 'Event_firma';
    id := DataSet.FieldValues['FIRMA'];
    MyEvent.Param := 'id_firmy='+id;
    SQL602Connection2.InvokeEvent(MyEvent);
    MyEvent.Free;
end;

V druhém otevřeném formuláři se zachytí událost a automaticky překreslí záznam:

...
    SQL602EventAction1.Event.EventName := 'Event_firma';
    SQL602EventAction1.DispatchToDataSets := True;
    SQL602EventAction1.Active := True;
...
procedure TForm1.On602Event(Sender: TDataSet; Event: TSQL602Event);
// je-li to událost vyvolaná editací, překresli změněný záznam datasetu
// v parametru eventu je přímo podmínka určující záznam
begin
    if AnsiStartsStr('id_firmy=',Event.Param) then begin
        (Sender as TSQL602DataSet).RefreshTo(Event.Param);
    end;
end;