Format In i Out Filtera za Balans Sabirnicu
24.04.2008 Milan Oparnica
Jedan filter se sastoji od sledecih stavki razdvojenih znakom TAB
Ako ne zelimo da specificiramo stavku, stavljamo * na njeno mesto, npr:
Flag | Table | Parameter | Value | Master field |
---|---|---|---|---|
A/B/K/L | ime tabele | ime polja | vrednost | ime polja |
Primeri: | ||||
K | * | * | * | |
A | * | * | * | |
A | Sifre | * | * | Konto |
K | Ulazi | SklID | 5 | UlID |
K | * | Naziv | 'Melany' | NazID |
Ako je bilo koja stavka prazan string, pretvara se u *
Ako nije detektovan TAB posle Flag, Table ili Parameter, sve stavke posle specificirane se pretvaraju u *
Flag:
Operacija koja će biti izvršena nad upitom ako se uslov ispuni.
A (Accept) znaci da se SQL prihvata bez cekiranja ostalih filtera
B (Accept if not) znači da se SQL prihvata ako uslov nije ispunjen
K (Kill) znaci da se SQL odbija bez cekiranja ostalih filter, ali će se proslediti ostalim radnim jedinicama u sistemu razmene
L (Kill if not) znači da se SQL odbija ako uslov nije ispunjen
W (Wack) znaci da se SQL odbija bez cekiranja ostalih filtera ali se i ne predaje ostalim radnim jedinicama u sistemu razmene
ako smo prosli sve filtere i nismo ispunili nijedan uslov , SQL se automatski odbija.
ako je dat samo Flag , a ostale stavke su *, uslov za Flag je ispunjen, npr. :
Flag Table Parameter Value
K * * *
ce odbiti sve SQL-ove (potrebno za Infilter za centralnu RJ), dok ce filter:
A * * *
po defaultu primati sve SQL-ove (potrebno za Infilter za sve ostale RJ)
Table:
Ime tabele nad kojom operacija (flag) važi. Ako se SQL obratio ovoj tabeli, ispunice se uslov za Flag ako nije dat Param i Value , a ako su dati, deo uslova koji se tice tabele je ispunjen, ceka se rezultat provere parametra.
Parameter:
Ime polja čija će se vrednost ispitati na Value .
Ako je Value = ““*”, i ovo Parameter mora biti “*”, inače Dambldor prijavljuje gresku.
Ako u SQL-u imamo
INSERT INTO ime tabele () sa parametrom Parameter i na odg. mestu u Values() imamo Value ili
ako imamo UPDATE … SET Parameter = Value ili
SELECT … INTO … WHERE Parameter = Value ili
DELETE … FROM … WHERE Parameter = Value
onda je ispunjen je uslov za Flag, pod uslovom naravno da je Table uslov ispunjen
Value:
Value moze biti string (‘xxx’) ili broj (decimalni, ceo)
MasterFld
U slučaju da je potrebno filtrirati prema vrednosti iz prethodnog upita koristi se ovo polje. Vrednost se pamti u #LMF# (Last Master Field value) promenljivoj.
Pamćenje vrednosti za #LMF# test:
1. Dodati na kraj filter linije ime polja čija će se vrednost zapamtiti u MasterFld. Vrednost se pamti do sledećeg ispunjenog uslova koji sadrži MasterFld podatak.
Primer:
A Ulaz SklID 4 UlID
se tumači kao: “Prihvati SQL ako se radi o tabeli Ulaz u kojoj SklID ima vrednost 4 a u #LMF# zapamti vrednost iz polja UlID.”
K Ulaz SklID 4 UlID
se tumači kao: “Odbij SQL ako se radi o tabeli Ulaz u kojoj SklID ima vrednost 4 ali u #LMF# zapamti vrednost iz polja UlID.”
Upoređivanje sa #LMF# vrednošću:
2. Vrši se na isti način kao što bi se upoređivalo na konstantu samo se umesto konstante stavi varijabla #LMF#.
Primer:
A SasUlaz UlID #LMF#
se tumači kao: “Prihvati SQL ako se radi o tabeli SasUlaz u kojoj UlID ima vrednost Last Master Field.”
NAPOMENA: Prilikom korišćenja ovog načina filtriranja najbitnije je obratiti pažnju na uslove koji se mogu promeniti. Primer bi bio nalog za otpremu ili prijem koji umeće slogove u Ulaz tabelu, ali je SklID=0. Nakon potvrde SklID dobija ID magacina, ali ako INSERT NIJE PROŠAO, UPDATE neće imati nikakvog efekta.