Wyzwalacze użytkownika - Instrukcja obsługi programu R2płatnik, R2płatnikPRO, R2płatnikSBO RESET2 Oprogramowanie
Strona używa plików cookies (tzw. ciasteczka) do przechowywania i uzyskiwania dostępu do tej informacji w celach funkcjonalnych, statystycznych i reklamowych.
Użytkownik wyraża zgodę oraz określa warunki przechowywania lub uzyskiwania dostępu do informacji zawartej w plikach cookies za pomocą ustawień przeglądarki.
Dowiedz się więcej odwiedzając strony:

Polityka Prywatności    Regulamin sklepu      Jak wyłączyć cookies?

Przejdź do serwisu

Instrukcja obsługi R2płatnik



Wyzwalacze użytkownika

Wyzwalacze użytkownika

Obiekty użytkownika

Wyzwalacze służą do wykonywania jakiejś akcji podczas tworzenia, modyfikowania lub usuwania rekordów dowolnej tabeli. Może to być np. polecenie SQL typu UPDATE, INSERT bądź DELETE, wywołanie procedury składowanej lub tylko pokazanie dowolnego komunikatu.

W celu utworzenia własnego wyzwalacza wybieramy z menu Ustawienia pozycję Wyzwalacze użytkownika.

Dla nowego wyzwalacza określamy:

  • Tabela - nazwa tabeli w aplikacji, na której będzie działać wyzwalacz użytkownika (patrz Lista modułów danych i tabel)

  • Wyzwalacz - moment uruchomienia wyzwalacza:

    • BeforeInsert - przed utworzeniem nowego rekordu

    • AfterInsert - po utworzeniu nowego rekordu

    • BeforeEdit - przed edycją istniejącego rekordu

    • AfterEdit - po edycji istniejącego rekordu

    • BeforePost - przed zatwierdzeniem zmian nowego lub istniejącego rekordu, uruchamiany tylko gdy jest widoczny interfejs użytkownika

    • AlwaysBeforePost - przed zatwierdzeniem zmian nowego lub istniejącego rekordu, uruchamiany zawsze

    • AfterPost - po zatwierdzeniu zmian nowego lub istniejącego rekordu, uruchamiany tylko gdy jest widoczny interfejs użytkownika

    • AlwaysAfterPost - po zatwierdzeniu zmian nowego lub istniejącego rekordu, uruchamiany zawsze

    • BeforeDelete - przed kasowaniem rekordu

    • AfterDelete - po kasowaniu rekordu

    • OnChangeField - gdy wartość jakiegoś pola w rekordzie (kontrolki) została zmieniona

    Wszystkie rodzaje wyzwalaczy za wyjątkiem Always... są uruchamiane tylko wtedy, gdy jest widoczny interfejs użytkownika (tzn. jest widoczne okno - i tam wprowadzamy dane)

  • Typ - typ wyzwalacza:

    • Akcja - zostanie wykonanie polecenie SQL podane w Definicji

    • Akcja warunkowa - po zatwierdzeniu komunikatu na 'Tak', zostanie wykonanie polecenie SQL podane w Definicji

    • Komunikat (Info) - zostanie wywołany komunikat typu 'Info', jeśli zapytanie SQL podane w Definicji zwróci choć jeden rekord

    • Komunikat (Ostrzeżenie) - zostanie wywołany komunikat typu 'Ostrzeżenie', jeśli zapytanie SQL podane w Definicji zwróci choć jeden rekord

    • Błąd - zostanie wywołany komunikat błędu, jeśli zapytanie SQL podane w Definicji zwróci choć jeden rekord, a dalsza akcja zostanie przerwana

  • Warunek -

  • Definicja - definicja zapytania lub polecenia SQL. Wartości pól aktualnego rekordu można pobrać używając nawiasów klamrowych, np. {X_I} oznacza wartość pola X_I bieżącego rekordu; np. UPDATE PRACOWNK SET [PESEL]={PESEL} WHERE [X_I]={X_IPracownik} wykonane na zdarzeniu AfterPost tabeli DANE PERSONALNE uaktualni pole PESEL w tabeli PRACOWNICY. Można odwoływać się także do pól z innych tabel w następujący sposób {NAZWA_TABELI_W_APLIKACJI.Pole}; np. {PRACOWNICY.X_I} (UWAGA! nie mylić nazwy tabeli w bazie z nazwą tabeli w aplikacji; lista tabel jest dostępna tutaj Lista modułów danych i tabel). Dwuklik myszy na tym polu powoduje otwarcie okna wygodnego edytora zapytań SQL.

  • Komunikat - treść komunikatu

  • Aktywny - czy wyzwalacz ma działać

UWAGA 1
Aby wykonać wyzwalaczem wiele poleceń SQL za jadnym razem, należy w definicji użyć klauzuli go, która rozdziela zapytania SQL; np:
update tabela_1 set [pole_1]=1
go
update tabela_2 set [pole_1]=1
go

UWAGA 2
Ponieważ wyzwalacz OnChangeField jest wyzwalany zawsze, gdy wartość dowolnego pola w rekordzie (kontrolki) została zmieniona, przy dużej ilości pól w tabeli będzie on wykonywany wielokrotnie, co może spowolnić działanie programu. Aby tego uniknąć można w definicji wyzwalacza zastosować klauzulę onchange={nazwa_pola_1},{nazwa_pola_1},...,{nazwa_pola_n}, wtedy będzie on wyzwalany tylko przy zmianie wartości pól wymienionych w klauzuli.

UWAGA 3
Jeśli chcemy wykryć, czy tabela jest w danej chwili w trybie Insert (nowy rekord został dostawiony); np. w AfterPost chcemy aby wyzwalacz inaczej zachowywał się przy wstawieniu rekordu niż przy edycji, można użyć zmiennej specjalnej <INS>, która zwraca wtedy True; np:
if <INS> begin
  zrób coś, bo wstawiono nowy rekord
end
else begin
  zrób coś, bo istniejący rekord został zmieniony
end

UWAGA 4
Jeśli po usunięciu rekordu w AfterDelete chcemy zmodyfikować jakieś powiązania skasowanego rekordu z innymi tabelami (np.usunąć z nich jego Ide), to można wykorzystać zmienną specjalną <DEL_IDE>, która zwraca identyfikator usuniętego rekordu; np:
update TABELA set [X_IRec]=0 where [X_IRec]=<DEL_IDE>

Przykład wykorzystania wyzwalacza jest dostępny tutaj.