← Powrót do listy dostępnych walidatorów
Walidator tworzy zapytanie na podstawie podanych parametrów i sprawdza, czy zwróci ono wynik. W przypadku użycia zmiennych typu tablicowego zapytanie jest tworzone za pomocą podzapytań połączonych ze sobą dzięki użyciu UNION. W takich podzapytaniach nie należy stosować słówka ORDER BY.
Waliduj, gdy ( typ : wartość tekstowa do wyboru z listy ) - Określa w jaki sposób zachowa się walidator po znalezieniu wyników w bazie. Dostępne wartości to: Zwraca wynik / Nie zwraca wyniku
Baza danych ( typ : wartość tekstowa ) - Nazwa konfiguracji bazy danych.
Nazwa zapytania ( typ : zmienna ) - Nazwa (przedrostek z kolumny name z tabeli pm_dbqueries) na postawie której pobrane zostaną zapytania
Parametry zapytania (zmienne) ( typ : wartość logiczna ) - Przekazanie zmiennej tablicowej spowoduje, że dla każdego jej elementu zostanie utworzone podzapytanie. W przypadku przekazania zmiennej nagłówkowej parametr jest traktowany jak wartość stała.
Parametry zapytania (wartości stałe) ( typ : wartość tekstowa ) - Wartości powtarzające się w każdym wygenerowanym podzapytaniu. Przekazywane jako tekst (przydatna funkcja: toString)
Typy wartości stałych ( typ : wartość tekstowa ) - Typy parametrów zapytania z bazy danych
Typ komunikatu ( typ : wartość tekstowa ) - Lista wyboru konfiguracji pojawienia się komunikatu. Możemy wybrać komunikat globalny oraz/lub pod podanymi zmiennymi
Potwierdzenie ( typ : wartość tekstowa ) - Informuje o tym, czy wyświetlić okienko potwierdzenia.
Komunikat globalny ( typ : wartość tekstowa ) - Komunikat globalny
Zmienne formularza ( typ : wartość tekstowa ) - Zmienna, obok której będzie wyświetlony komunikat
Komunikat obok zmiennej ( typ : wartość tekstowa ) - Treść komunikatu błędu, który pojawi się przy wybranej zmiennej formularza
Załóżmy, że chcemy sprawdzić w bazie danych, czy faktury, które mamy na formularzu znajdują się już w bazie. Jeżeli tak, to system powinien wyświetlić komunikat o istniejącym duplikacie. Pierwszym etapem będzie otwarcie konfiguracji naszego walidatora. Dodajemy go do interesującego nas przycisku akceptacji, po czym pojawia się okienko: Nasz walidator powinien prawidłowo przechodzić, jeżeli w bazie nie zostanie znaleziona faktura o podanym przez nas numerze. Dlatego pierwszy parametr ustawiamy w sposób następujący: W następnym parametrze, baza danych, wybieramy alias bazy z dbExplorer do której wykonamy nasze zapytanie. W moim przypadku alias nosi nazwę Suncode. Klucz zapytania jest powiązany z tabelą pm_dbqueries w systemowej bazie danych. To właśnie w tej tabeli określamy nasze zapytanie. W moim przypadku wyglądało to tak: Dlatego w parametrze "Klucz zapytania" wpisałem: Następnie należy w parametrze przekazać wartości id wszystkich faktur, które mam w tabeli dynamicznej na formularzu. U mnie znajdują się one w kolumnie o nazwie "Id faktury" Dlatego przekazuję tę zmienną w odpowiednim parametrze konfiguracji. Następnie określam w jaki sposób chcę, żeby walidator powiadamiał mnie o nieudanej walidacji: Działanie komponentu: W bazie danych znajdują się już faktury o id 1, 3 i 5. Walidator wyświetla błąd walidacji: A następnie podkreśla wszystkie problematyczne komórki Po najechaniu na komórkę pojawia się informacja, którą podaliśmy w parametrze: |
Czasami potrzebujemy sprawdzić, czy pusta wartość w tabeli dynamicznej odpowiada pustej wartości w bazie danych. W takim przypadku zapytanie dla wiersza wypełnionego zawierałoby frazę: "nazwa_kolumny = ?", natomiast dla wiersza pustego: "nazwa_kolumny IS NULL". Istnieje jednak sposób, żeby połączyć oba przypadki tak, żeby dało się je wykorzystać w komponencie jako jedno zapytanie. W tym celu skorzystamy z funkcji COALESCE. Przeszukuje ona podane parametry w poszukiwaniu pierwszej nie pustej wartości. Załóżmy, że mamy takie zapytanie:
, gdzie id to kolumna typu całkowitego, nazwa_klienta typu tekstowego, a data_wystawienia to kolumna datowa. Jeżeli chcemy poprawnie porównać puste wartości z tabeli dynamicznej z pustymi wartościami w bazie danych musimy użyć przekształcić zapytanie następująco:
Należy zauważyć, że drugi argument funkcji COALESCE powinien zawierać wartość takiego samego typu jak kolumna oraz powinna być to wartość, która w wyniku prawidłowego działania nie ma możliwości pojawienia się w kolumnie (np. id nigdy nie będzie mniejsze od 0, bo takie są założenia). |
Powiązane zadania |