Code: Definicja regul pol obowiazkowych: Różnice pomiędzy wersjami

Z Motława
Linia 15: Linia 15:
  
 
|-
 
|-
| style="border: 1px solid #888888; "| [[idn]]
+
| style="text-align:left; border: 1px solid #888888; "| [[idn]]
| style="border: 1px solid #888888; "| int(11)
+
| style="text-align:left; border: 1px solid #888888; "| int(11)
| style="border: 1px solid #888888; "| NO
+
| style="text-align:left; border: 1px solid #888888; "| NO
| style="border: 1px solid #888888; "| PRI
+
| style="text-align:left; border: 1px solid #888888; "| PRI
| style="border: 1px solid #888888; "| NULL
+
| style="text-align:left; border: 1px solid #888888; "| NULL
  
 
|-
 
|-
| style="border: 1px solid #888888; "| [[GUID]]
+
| style="text-align:left; border: 1px solid #888888; "| [[GUID]]
| style="border: 1px solid #888888; "| varchar(38)
+
| style="text-align:left; border: 1px solid #888888; "| varchar(38)
| style="border: 1px solid #888888; "| NO
+
| style="text-align:left; border: 1px solid #888888; "| NO
| style="border: 1px solid #888888; "| UNI
+
| style="text-align:left; border: 1px solid #888888; "| UNI
| style="border: 1px solid #888888; "|  
+
| style="text-align:left; border: 1px solid #888888; "|  
 
|-
 
|-
| style="border: 1px solid #888888; "| [[coreid]]
+
| style="text-align:left; border: 1px solid #888888; "| [[coreid]]
| style="border: 1px solid #888888; "| varchar(38)
+
| style="text-align:left; border: 1px solid #888888; "| varchar(38)
| style="border: 1px solid #888888; "| NO
+
| style="text-align:left; border: 1px solid #888888; "| NO
| style="border: 1px solid #888888; "| MUL
+
| style="text-align:left; border: 1px solid #888888; "| MUL
| style="border: 1px solid #888888; "|  
+
| style="text-align:left; border: 1px solid #888888; "|  
 
|-
 
|-
| style="border: 1px solid #888888; "| rule_operator
+
| style="text-align:left; border: 1px solid #888888; "| rule_operator
| style="border: 1px solid #888888; "| int(11)
+
| style="text-align:left; border: 1px solid #888888; "| int(11)
| style="border: 1px solid #888888; "| NO
+
| style="text-align:left; border: 1px solid #888888; "| NO
| style="border: 1px solid #888888; "|  
+
| style="text-align:left; border: 1px solid #888888; "|  
| style="border: 1px solid #888888; "|  
+
| style="text-align:left; border: 1px solid #888888; "|
 +
|-
 +
| style="text-align:left; border: 1px solid #888888;" |  message_if_not_valid 
 +
| style="text-align:left; border: 1px solid #888888;" |  text 
 +
| style="text-align:left; border: 1px solid #888888;" |  YES 
 +
| style="text-align:left; border: 1px solid #888888;" | 
 +
| style="text-align:left; border: 1px solid #888888;" | NULL 
 
|}
 
|}
  
Linia 49: Linia 55:
 
! style="text-align:left; border: 1px solid #888888; background: #eeeeee;" |  Key   
 
! style="text-align:left; border: 1px solid #888888; background: #eeeeee;" |  Key   
 
! style="text-align:left; border: 1px solid #888888; background: #eeeeee;" |  Default   
 
! style="text-align:left; border: 1px solid #888888; background: #eeeeee;" |  Default   
! style="text-align:left; border: 1px solid #888888; background: #eeeeee;" |  Extra 
 
 
|-
 
|-
 
| style="text-align:left; border: 1px solid #888888;" |  [[idn]]   
 
| style="text-align:left; border: 1px solid #888888;" |  [[idn]]   
Linia 56: Linia 61:
 
| style="text-align:left; border: 1px solid #888888;" |  PRI   
 
| style="text-align:left; border: 1px solid #888888;" |  PRI   
 
| style="text-align:left; border: 1px solid #888888;" |  NULL   
 
| style="text-align:left; border: 1px solid #888888;" |  NULL   
| style="text-align:left; border: 1px solid #888888;" |  auto_increment 
 
 
|-
 
|-
 
| style="text-align:left; border: 1px solid #888888;" |  [[GUID]]   
 
| style="text-align:left; border: 1px solid #888888;" |  [[GUID]]   
Linia 62: Linia 66:
 
| style="text-align:left; border: 1px solid #888888;" |  NO   
 
| style="text-align:left; border: 1px solid #888888;" |  NO   
 
| style="text-align:left; border: 1px solid #888888;" |  UNI   
 
| style="text-align:left; border: 1px solid #888888;" |  UNI   
| style="text-align:left; border: 1px solid #888888;" | 
 
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
 
|-
 
|-
Linia 69: Linia 72:
 
| style="text-align:left; border: 1px solid #888888;" |  NO   
 
| style="text-align:left; border: 1px solid #888888;" |  NO   
 
| style="text-align:left; border: 1px solid #888888;" |  MUL   
 
| style="text-align:left; border: 1px solid #888888;" |  MUL   
| style="text-align:left; border: 1px solid #888888;" | 
 
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
 
|-
 
|-
Linia 75: Linia 77:
 
| style="text-align:left; border: 1px solid #888888;" |  varchar(38)   
 
| style="text-align:left; border: 1px solid #888888;" |  varchar(38)   
 
| style="text-align:left; border: 1px solid #888888;" |  NO   
 
| style="text-align:left; border: 1px solid #888888;" |  NO   
| style="text-align:left; border: 1px solid #888888;" | 
 
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
Linia 84: Linia 85:
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |  0   
 
| style="text-align:left; border: 1px solid #888888;" |  0   
| style="text-align:left; border: 1px solid #888888;" | 
 
 
|-
 
|-
 
| style="text-align:left; border: 1px solid #888888;" |  admin   
 
| style="text-align:left; border: 1px solid #888888;" |  admin   
Linia 91: Linia 91:
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |  0   
 
| style="text-align:left; border: 1px solid #888888;" |  0   
| style="text-align:left; border: 1px solid #888888;" | 
 
 
|-
 
|-
 
| style="text-align:left; border: 1px solid #888888;" |  validation_rule_type   
 
| style="text-align:left; border: 1px solid #888888;" |  validation_rule_type   
Linia 98: Linia 97:
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |  NULL   
 
| style="text-align:left; border: 1px solid #888888;" |  NULL   
| style="text-align:left; border: 1px solid #888888;" | 
 
 
|-
 
|-
 
| style="text-align:left; border: 1px solid #888888;" |  validation_rule   
 
| style="text-align:left; border: 1px solid #888888;" |  validation_rule   
Linia 105: Linia 103:
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |  NULL   
 
| style="text-align:left; border: 1px solid #888888;" |  NULL   
| style="text-align:left; border: 1px solid #888888;" | 
 
 
|-
 
|-
 
| style="text-align:left; border: 1px solid #888888;" |  condition_ruleset_guid   
 
| style="text-align:left; border: 1px solid #888888;" |  condition_ruleset_guid   
Linia 111: Linia 108:
 
| style="text-align:left; border: 1px solid #888888;" |  NO   
 
| style="text-align:left; border: 1px solid #888888;" |  NO   
 
| style="text-align:left; border: 1px solid #888888;" |  MUL   
 
| style="text-align:left; border: 1px solid #888888;" |  MUL   
| style="text-align:left; border: 1px solid #888888;" | 
 
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
 
|-
 
|-
Linia 119: Linia 115:
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |   
 
| style="text-align:left; border: 1px solid #888888;" |  NULL   
 
| style="text-align:left; border: 1px solid #888888;" |  NULL   
| style="text-align:left; border: 1px solid #888888;" | 
 
 
|}
 
|}
  
 
Pole validation_rule przyjmuje wartości:
 
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
+
  NOT NULL, NOT EMPTY,  
  DEFAULT ?, CONDITION
+
EQ, NOT EQ, LESS, LESS EQ, GREATER, GREATER EQ,  
 
+
LENGTH EQ, LENGTH MAX, LENGTH MIN
 +
  DEFAULT
  
 
'''Przykładowe definicje walidacji:'''
 
'''Przykładowe definicje walidacji:'''
Linia 131: Linia 127:
 
Przykład 1:
 
Przykład 1:
  
  Karta kontrahenta, pole katcol0 ma być różne od 0.
+
  Karta kontrahenta, pole katcol0 ma być różne od 0, a długość pola NIP ma być równa 10 lub 12 lub 0
 +
 
 
  Definicja:
 
  Definicja:
 
  ''Tabela sys_fld_validator_ng''
 
  ''Tabela sys_fld_validator_ng''
   insert into sys_fld_validator_ng values (0,'K_katcol0_rule1','K_',0);
+
   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');
 
  ''Tabela sys_fld_validator_po''
 
  ''Tabela sys_fld_validator_po''
 
   insert into sys_fld_validator_po values  
 
   insert into sys_fld_validator_po values  
   (0,'K_katcol0_rule1_1','K_katcol0_rule1','katcol0',0,0,'NOT EMPTY','','','Wartosc pierwszej kategorii kolumnowej musi byc okreslona! ');
+
   (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 sprzedaży (grupaoper=0), pole katcol0 ma być różne od 0.
 
  Edycja operacji sprzedaży (grupaoper=0), pole katcol0 ma być różne od 0.

Wersja z 06:57, 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, pole katcol0 ma być różne od 0, a długość pola NIP ma być równa 10 lub 12 lub 0
Definicja:
Tabela sys_fld_validator_ng
 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');
Tabela sys_fld_validator_po
 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 sprzedaży (grupaoper=0), pole katcol0 ma być różne od 0.
Definicja:
Tabela sys_fld_validator_ng
 insert into sys_fld_validator_ng values (0,'O_katcol0_rule1','O_',0),(0,'O_katcol0_cond1',,0);
Tabela sys_fld_validator_po
 insert into sys_fld_validator_po values 
 (0,'O_katcol0_rule1_1','O_katcol0_rule1','katcol0',0,0,'NOT EMPTY',,'O_katcol0_cond1',
 'Wartosc pierwszej kategorii kolumnowej musi byc okreslona! '),
 (0,'O_katcol0_cond1_1','O_katcol0_cond1','grupaoper',0,0,'EQ','0',,);