Üzenni az adatbázisból?

Üzenni az adatbázisból?
2005-09-08T21:07:41+02:00
2005-09-09T11:48:20+02:00
2022-10-26T21:20:40+02:00
nova76
Lehetséges-e egy adatbázisba(firebird) lerögzíteni egy müveletre egy üzenetet. Tegyük fel módosítom a dolgozók táblát, új dolgozót veszek fel. Erre triggert lehet írni. De valahogy üzenni is lehet kifelé, a felhasználónak (jelen esetben magamnak)??

Ugyanis van nálunk egy firebird + Delphis program és hát elég sokat hibáznak a felhasználók. Ezt szeretném kiküszöbölni. Figyelmeztetni őket ott, ahol sokat hibáznak. Inkább zavarja őket, hogy le kell kattintaniuk, mint hogy elrontsák.
Mutasd a teljes hozzászólást!
A POST_EVENT a firebird beépített eszköze. Paramétere bármilyen string lehet. Ha írsz egy tárolt eljárást, ami ezt "burkolja", akkor elég rugalmasan kezelhető. Kliens oldalon egy fogadóomponenst kell feltegyél. Figyelem: a kliens csak azt az "eseményt" kaphatja el, amire regisztrál az adatbáziskapcsolat felépítése után. Bár az exception-ok is jók, ez nyilván egy kicsit másképp működik. Az én olvasatbomban neked az eseményekre van szükséged. Az IBObjects külön szálon kezeli ezt, azt nem tudom, hogy az alapeszközök is, de valószínű. Így nem fog megakapsztani se kliens se szerveroldalon. Ha ExecuteImmediate-t használsz, nem kell COMMIT.
Az UDF-ek megismerése érdekében töltsd le a "FreeUDFLib" csomagot. Az Delphiben íródott és mindenre van benne példa.
Mutasd a teljes hozzászólást!

  • azt megtudom tenni, hogy egy exceptiont meghívok. Azonban itt meg is akad az adatrögzítés. Én pedig nem a programot, az adatrögzítést akarom megszakítani, hanem csak üzenni szeretnék.
    Mutasd a teljes hozzászólást!
  • Hali!

    A POST_EVENT kulcsszót kell használni, ami SPL-ben használható. Bármely trigger vagy tárolt eljárás tartalmazhatja ezt a kulcsszót. Ekkor a szerver minden egyes regisztrált kliensprogramnak elküldi az adott üzenetet, amely lényegében egy string.
    Vagyis pl. POST_EVENT 'INSERT_CIKK' kód hatására minden egyes regisztrált kliensprogram megkapja az INSERT_CIKK üzenetet. Regisztrálni bármely IBEvent komponens segítségével lehet, használatát lásd az alkalmazott komponenscsomag help-jében. Mégvalami: azt tartsd szem előtt, hogy csak COMMIT után hívódnak meg ezek az események. Ha COMMIT előtt kell valami, akkor ahhoz már UDF fog kelleni.

    Üdv:Alex
    Mutasd a teljes hozzászólást!
  • A helyzet az, hogy nekem csak egy exe és egy adatbázisom van. Tehát ebből kifolyólag csak az adatbázisban tudok ügyködni.
    Ezért kellene egy olyan megoldás, amit az adatbázis vezérel le. Pl. ahogy az exceptionokkal lehet üzenni a felhasználónak. Csak az meg is akasztja a programot, én pedig nem szeretném.

    Az UDF-es dolgokról hol találok példát, vagy leírást? Mert nekem jó elötte is, csak az adatbázis csináljon mindent.


    Mutasd a teljes hozzászólást!
  • A POST_EVENT a firebird beépített eszköze. Paramétere bármilyen string lehet. Ha írsz egy tárolt eljárást, ami ezt "burkolja", akkor elég rugalmasan kezelhető. Kliens oldalon egy fogadóomponenst kell feltegyél. Figyelem: a kliens csak azt az "eseményt" kaphatja el, amire regisztrál az adatbáziskapcsolat felépítése után. Bár az exception-ok is jók, ez nyilván egy kicsit másképp működik. Az én olvasatbomban neked az eseményekre van szükséged. Az IBObjects külön szálon kezeli ezt, azt nem tudom, hogy az alapeszközök is, de valószínű. Így nem fog megakapsztani se kliens se szerveroldalon. Ha ExecuteImmediate-t használsz, nem kell COMMIT.
    Az UDF-ek megismerése érdekében töltsd le a "FreeUDFLib" csomagot. Az Delphiben íródott és mindenre van benne példa.
    Mutasd a teljes hozzászólást!
  • ...Firebird-ben nem vagyok otthon, de ugy altalaban...
    vagy kuldeni egy mailt,
    vagy popup uzenetet,
    vagy az uzenetet elmenteni egy tablazatba, ahonnet vagy triggerrel(elso 2 variansal), vagy schedulerrel, vegy egy kulso programmal olvasni (olvasas utan vagy torolni, vagy mejelolni, hogy mar fel van dolgozva.)
    az elso elonye, hogy akkor is megkapod, ha nincs bekapcsolva a geped.
    Ha a Firebird-bol leget kulso programot inditani (M$SQL-> xp_cmdshell {'command_string'} [, no_output] ) akkor mar kinn vagy a vizbol....



    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd