Code: Definicja regul pol obowiazkowych: Różnice pomiędzy wersjami
Z Motława
Linia 127: | Linia 127: | ||
Przykład 1: | Przykład 1: | ||
− | Karta kontrahenta, pole katcol0 ma być różne od 0, a długość pola NIP ma być równa 10 lub 12 lub 0 | + | Karta kontrahenta (coreid='K_'), pole katcol0 ma być różne od 0, a długość pola NIP ma być równa 10 lub 12 lub 0 |
(rule_operator=1 (OR) oznacza, że wystarczy, by jeden z warunków był spełniony. | (rule_operator=1 (OR) oznacza, że wystarczy, by jeden z warunków był spełniony. | ||
Linia 146: | Linia 146: | ||
Przykład 2: | Przykład 2: | ||
− | Edycja operacji sprzedaży (grupaoper=0), pole katcol0 ma być różne od 0. | + | Edycja operacji (coreid='O_') sprzedaży (grupaoper=0), pole katcol0 ma być różne od 0. |
Definicja: | Definicja: | ||
− | insert into sys_fld_validator_ng values (0,'O_katcol0_rule1','O_',0),(0,'O_katcol0_cond1',"",0); | + | insert into sys_fld_validator_ng values |
+ | (0,'O_katcol0_rule1','O_',0,'Wartosc pierwszej kategorii kolumnowej musi byc okreslona! '), | ||
+ | (0,'O_katcol0_cond1',"",0,""); | ||
insert into sys_fld_validator_po values | insert into sys_fld_validator_po values | ||
− | (0,'O_katcol0_rule1_1','O_katcol0_rule1','katcol0',0,0,'NOT EMPTY',"",'O_katcol0_cond1', | + | (0,'O_katcol0_rule1_1','O_katcol0_rule1','katcol0',0,0,'NOT EMPTY',"",'O_katcol0_cond1',""), |
− | + | ||
(0,'O_katcol0_cond1_1','O_katcol0_cond1','grupaoper',0,0,'EQ','0',"",""); | (0,'O_katcol0_cond1_1','O_katcol0_cond1','grupaoper',0,0,'EQ','0',"",""); | ||
Wersja z 07:06, 24 mar 2009
Algorytm walidacji pól
Mechanizm definiowanej walidacji pól aktywowany jest kluczem w Rejestrze systemowym o nazwie walidacja_pol_aktywna.
Struktury tabel odpowaidających za definicje walidacji pól:
Tabela sys_fld_validator_ng
Field | Type | Null | Key | Default |
---|---|---|---|---|
idn | int(11) | NO | PRI | NULL |
GUID | varchar(38) | NO | UNI | |
coreid | varchar(38) | NO | MUL | |
rule_operator | int(11) | NO | ||
message_if_not_valid | text | YES | NULL |
Tabela sys_fld_validator_po
Field | Type | Null | Key | Default |
---|---|---|---|---|
idn | int(11) | NO | PRI | NULL |
GUID | varchar(38) | NO | UNI | |
GUID_NG | varchar(38) | NO | MUL | |
fieldname | varchar(38) | NO | ||
rule_order | int(11) | NO | 0 | |
admin | int(11) | NO | 0 | |
validation_rule_type | varchar(20) | YES | NULL | |
validation_rule | varchar(200) | YES | NULL | |
condition_ruleset_guid | varchar(38) | NO | MUL | |
message_if_not_valid | text | YES | NULL |
Pole validation_rule przyjmuje wartości:
NOT NULL, NOT EMPTY, EQ, NOT EQ, LESS, LESS EQ, GREATER, GREATER EQ, LENGTH EQ, LENGTH MAX, LENGTH MIN DEFAULT
Przykładowe definicje walidacji:
Przykład 1:
Karta kontrahenta (coreid='K_'), pole katcol0 ma być różne od 0, a długość pola NIP ma być równa 10 lub 12 lub 0 (rule_operator=1 (OR) oznacza, że wystarczy, by jeden z warunków był spełniony. Definicja: insert into sys_fld_validator_ng values (0,'K_rule1','K_',0,'Wartosc pierwszej kategorii kolumnowej musi byc okreslona! '), (0,'K_rule2','K_',1,'Pole NIP może mieć długość 10,12 znaków bądź być puste'); insert into sys_fld_validator_po values (0,'K_katcol0_rule1_1','K_rule1','katcol0',0,0,'NOT EMPTY',"","",""), (0,'K_nip_rule1_1','K_rule2','nip',0,0,'NOT EMPTY',"","",""), (0,'K_nip_rule1_2','K_rule2','nip',0,0,'LENGTH EQ','10',"",""), (0,'K_nip_rule1_3','K_rule2','nip',0,0,'LENGTH EQ','12',"","");
Jeśli definiowane pole ma być sprawdzane tylko przy spełnieniu warunków dotyczących danego zapisu można takie warunki zdefiniować tworząc kolejny zestaw reguł i przypisując jego guid do pola condition_ruleset_guid.
Przykład 2:
Edycja operacji (coreid='O_') sprzedaży (grupaoper=0), pole katcol0 ma być różne od 0. Definicja: insert into sys_fld_validator_ng values (0,'O_katcol0_rule1','O_',0,'Wartosc pierwszej kategorii kolumnowej musi byc okreslona! '), (0,'O_katcol0_cond1',"",0,""); insert into sys_fld_validator_po values (0,'O_katcol0_rule1_1','O_katcol0_rule1','katcol0',0,0,'NOT EMPTY',"",'O_katcol0_cond1',""), (0,'O_katcol0_cond1_1','O_katcol0_cond1','grupaoper',0,0,'EQ','0',"","");