====== 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.
\\