Skip to end of metadata
Go to start of metadata

← Powrót do listy dostępnych walidatorów

 
 Jeśli masz problem ze zrozumieniem jak działa walidator, sprawdź opisy: Walidator, Wykonanie warunkowe, Parametry komponentów
Podstawowe informacje

Kategoria : Baza danych

Dostępny od wersji: 1.0.41

Opis

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.

Parametry konfiguracyjne
Nazwa parametruOpisTyp parametruWartość domyślnaRodzaj polaUwagi i ograniczenia
Akceptuj, gdy*Określa w jaki sposób zachowa się walidator po znalezieniu wyników w bazie. Tekst Lista wartościDostępne wartości to: Zwraca wynik / Nie zwraca wyniku
Baza danych*Nazwa konfiguracji bazy danychTekst Lista wartości

 

Nazwa zapytania*

Nazwa (przedrostek z kolumny query_name z tabeli pm_dbqueries) na podstawie, której pobrane zostaną zapytania.

Tekst Pole edytowalne 
Parametry zapytania (zmienne)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.Tablica zmiennych Edytowalna lista wartości 
Parametry zapytania (wartości stałe)Wartości powtarzające się w każdym wygenerowanym podzapytaniu. Przekazywane jako tekst (przydatna funkcja: toString)Tablica wartości tekstowych Pole edytowalne 
Typy wartości stałychTypy parametrów zapytania z bazy danychTekst Lista wartości 
Typ komunikatuLista wyboru konfiguracji pojawienia się komunikatu. Możemy wybrać komunikat globalny oraz/lub pod podanymi zmiennymiLogicznyTakPole edytowalne 
PotwierdzenieInformuje o tym, czy wyświetlić okienko potwierdzenia.Logiczny Pole edytowalne 
Komunikat globalnyKomunikat globalnyTekst Pole edytowalne 
Zmienne formularzaZmienna, obok której będzie wyświetlony komunikatTablica zmiennych Pole edytowalne 
Komunikat obok zmiennejTreść komunikatu błędu, który pojawi się przy wybranej zmiennej formularzaTekst Pole edytowalne 
Przykładowa konfiguracja

 

Przykład zastosowania

Przykłady zastosowań

 Przykład 1. Sprawdzanie duplikatu faktury

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:

 Przykład 2. Sprawdzenie kolumny z występującymi pustymi wartościami

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:

SELECT * FROM pm_faktury WHERE id = ? AND nazwa_klienta = ? AND data_wystawienia = ?

, 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:

SELECT * FROM pm_faktury WHERE COALESCE(id,-1) = COALESCE(?, -1) AND COALESCE(nazwa_klienta, '') = COALESCE(?,'') AND COALESCE(data_wystawienia, to_date('1991-01-01', 'YYYY-MM-DD')) = COALESCE(?, to_date('1991-01-01', 'YYYY-MM-DD'))

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).

Change log

1.0.41

  • Dodanie komponentu

1.0.64

  • Nowa obsługa bazy danych

1.0.67

  • Zmiana parametru "Waliduj, gdy")

The license could not be verified: License Certificate has expired!

  • No labels
Write a comment…