mojaSymfonia FORUM
https://forum.mix-soft.pl/

Procedura - trigger na bazie
https://forum.mix-soft.pl/viewtopic.php?f=15&t=8527
Strona 1 z 1

Autor:  Bluesky [ 2018-03-28, 12:10 ]
Tytuł:  Procedura - trigger na bazie

Czy jest możliwość stworzenia Procedury w której będzie metoda OnAfterInsert() na tabelę "ZZ"

W ten sam sposób co w towarach?

Dodając nową procedurę nie pojawia się ona w ustawieniach: czy ma się wykonywać TAK : NIE
Jedynie są tam te procedury predefiniowane przez Symfonię.

Jeśli jest możliwość, to proszę o przykład. Pozdrawiam

Autor:  rafal [ 2018-03-28, 12:28 ]
Tytuł:  Re: Procedura

Możesz użyć SQLowego Triggera

Autor:  Bluesky [ 2018-03-28, 13:14 ]
Tytuł:  Re: Procedura

Kod:
string sCon = "Moj conn..."
con.ConnectionString = sCon
con.Open
dispatch rs = "ADODB.Command"
rs.ActiveConnection = con

string sql = "CREATE TRIGGER test2  AFTER UPDATE ON ZZ FOR EACH ROW INSERT INTO test VALUES (NEW.id)"
rs.CommandText = sql
rs.Execute ()

gdzie tabela test ma tylko polę Id które jest integer.
Mam błąd EOF czyli może być wszystko.

Autor:  Bluesky [ 2018-04-12, 13:33 ]
Tytuł:  Re: Procedura

Ponawiam pytanie, jak użyć sqlTrigger onAfterInsert oraz onAfterUpdate na tabelę "ZZ". (jeżeli w Symfonii)
W domyślnych procedurach Symfonii jest klient, towar itd zaś żadna z nich nie reaguje na tabelę "ZZ".

Używając SQLTrigger na bazie danych bezpośrednio bez Symfonii, na samym Pervasive, nie ma żadnej reakcji, chyba że sam w bazie wykonam insert, zaś tego triggera Symfonia jako program nie widzi.

Pozdrawiam;)

Autor:  rafal [ 2018-04-12, 14:57 ]
Tytuł:  Re: Procedura

Jakie operacje konkretnie Cię interesują?

Autor:  Bluesky [ 2018-04-12, 15:35 ]
Tytuł:  Re: Procedura

Wygląda to tak.
Chciałem złapać moment zmiany upustu indywidualnego dla klienta.

Przykładowo wchodzę w klienta XYX -> upusty indywidualne i nadaję mu rabat 12% na produkt abc lub zmieniam dla produktu abc rabat z 12% na 10%.
Oczywiście jak usuniemy rabat dla produktu abc też chcę to złapać.

Wszystko w obrębie klienta XYX.

Potrzebuję wywołać procedurę na tabeli "ZZ" analogicznie jak to wygląda dla tabeli "TW"

Czyli mamy "Procedury towaru" w Symfonii gdzie istnieje zapis: onAfterInsert, onAfterDelete itd. Tam mogę się wpinać w event po jakiejś czynności na tabeli "TW"

W ten sam sposób chciałem wykryć zmianę na tabeli "ZZ"

Autor:  rafal [ 2018-04-12, 16:48 ]
Tytuł:  Re: Procedura

Posiadamy rozbudowę procedur

Kod:
OnTriggerINSERT(string dataBase, long recordId)
OnTriggerDELETE(string dataBase, long recordId)
OnTriggerUPDATE(string dataBase, long recordId)


przykład

Kod:
int sub OnTriggerINSERT(string dataBase, long recordId)

baseZZ zz

baseAll ba
ba.SetBase( dataBase )
ba.Open()
ba.GetRecById( recordId )   

if dataBase=="ZZ" then
      if ba.GetField("typi") == 64 then
         message using "Dodano upust indywidualny. Rekord %l w tabeli ZZ", recordId   
      endif   
endif

ba.Close()

endsub

int sub OnTriggerDELETE(string dataBase, long recordId)
   
endsub

int sub OnTriggerUPDATE(string dataBase, long recordId)
   
   if dataBase == "ZZ" then
      message using "Zmiana w ZZ rekordu %l", recordId   
   endif
   
endsub


Skontaktuj się z Ekspertem


Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/