Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image Added

← 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

...

Panel
titlePodstawowe informacje

Kategoria : Baza danych

Dostępny od wersji: 1.0.41

Panel
titleOpis

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.

...

Panel

...

titleParametry 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 danych

...

Tekst 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 danych

...

Tekst Lista wartości 
Typ komunikatuLista wyboru konfiguracji pojawienia się komunikatu. Możemy wybrać komunikat globalny oraz/lub pod podanymi zmiennymi

...

LogicznyTakPole edytowalne 
PotwierdzenieInformuje o tym, czy wyświetlić okienko potwierdzenia.

Komunikat globalny ( typ : wartość tekstowa ) - Komunikat globalny

...

Logiczny Pole edytowalne 
Komunikat globalnyKomunikat globalnyTekst Pole edytowalne 
Zmienne formularzaZmienna, obok której będzie wyświetlony komunikat

...

Tablica zmiennych Pole edytowalne 
Komunikat obok zmiennejTreść komunikatu błędu, który pojawi się przy wybranej zmiennej formularzaTekst Pole edytowalne 
Panel
titlePrzykładowa konfiguracja

 Image Added

Panel
titlePrzykład zastosowania

Przykłady zastosowań

Expand
titlePrzykł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:

Image Modified

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:

Image Modified

W następnym parametrze, baza danych, wybieramy alias bazy z dbExplorer do której wykonamy nasze zapytanie. W moim przypadku alias nosi nazwę Suncode.

Image Modified

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:

Image Modified

Dlatego w parametrze "Klucz zapytania" wpisałem:

Image Modified

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"

Image Modified

Dlatego przekazuję tę zmienną w odpowiednim parametrze konfiguracji.

Image Modified

Następnie określam w jaki sposób chcę, żeby walidator powiadamiał mnie o nieudanej walidacji:

Image Modified

Działanie komponentu:

W bazie danych znajdują się już faktury o id 1, 3 i 5. Walidator wyświetla błąd walidacji:

Image Modified

A następnie podkreśla wszystkie problematyczne komórki

Image Modified

Po najechaniu na komórkę pojawia się informacja, którą podaliśmy w parametrze:

Image Modified

Expand
titlePrzykł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:

Code Block
languagesql
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:

Code Block
languagesql
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).

Mapa z przykładową konfiguracją

View file
nameTesty komponentów - walidatory.zip
pageWalidatory cuf-components
height250

...

Panel
titleChange log

1.0.41

  • Dodanie komponentu

1.0.64

  • Nowa obsługa bazy danych

1.0.67

  • Zmiana parametru "Waliduj, gdy")

Hide If
special@anonymous

Powiązane zadania

JIRA
server192.168.1.52 JIRA
serverId2e6b42a8-62e1-3c71-bfe9-dbf183b33dc1
keyCUFCMP-344

JIRA
server192.168.1.52 JIRA
serverId2e6b42a8-62e1-3c71-bfe9-dbf183b33dc1
keyCUFCMP-556

JIRA
server192.168.1.52 JIRA
serverId2e6b42a8-62e1-3c71-bfe9-dbf183b33dc1
keyCUFCMP-576