Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

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

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

 

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

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