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