Witam
Przeczytałem ostatnio w odpowiedziach C. jak można ustawić licznik ilości wydruków na podstawie atrybutów na podstawie klasy atrybutu. Jednak o ile można ustawić automatyczną zmianę ilosci atrybutu przy każdym skierowaniu myszki na ikonę drukarki (miało działać w/g panów z C. tylko wyłącznie podczas podglądu wydruku albo wydruku ) , mam problem z ustawieniem warunku na wydruku aby ukrywał wydruk jeśli atrybut jest większy od '0' oraz mniejszy od '1' (warunek powinien wynosic atr_wartosc<1 oraz atr_wartosc>1). Moim zdaniem jest to problem odwołania sie do tabeli innej niz tranag. Czy ktos może przerabiał podobny problem?
pozdrawiam
Podanego przykładu używam na wydruku faktury pro-forma z zamówienia sprzedaży.
Warunek ukrywa wydruk jeżeli wartość elementów zamówienia nie zgadza się z nagłówkiem, co niestety sporadycznie zdarza się w CDNXL (błąd).
GetSQL('select (case when zan_flaganb=''n'' then zav_netto-sum(zae_wartoscporabacie) else zav_brutto-sum(zae_wartoscporabacie) end) from cdn.zamnag
join cdn.zamelem on zan_gidtyp=zae_gidtyp and zan_gidnumer=zae_gidnumer
join cdn.zamvat on zan_gidtyp=zav_gidtyp and zan_gidnumer=zav_gidnumer
where ' & FiltrSql & 'group by zan_flaganb,zav_netto,zav_brutto')=0
bosak pisze:
Moim zdaniem jest to problem odwołania sie do tabeli innej niz tranag.
Atrybuty przypisane do obiektów przechowywane są w tabeli cdn.Atrybuty.
Musisz też pamiętać o tabeli cdn.MagNag, gdzie przechowywane są nagłówki transakcji magazynowej (PM/WM).
W danym miejscu w XL ma się dostęp do określonych tabel i nic więcej - ot, chociażby w przypadku filtrowania dokumentów handlowych ma się dostęp bodajże do KntKarty, TraNag i jeszcze 1 tabeli (nie jestem pewien której z pamięci). W każdym razie o ile chcesz się odwoływać z tego poziomu do innych tabel, musisz to zrobić za pomocą zapytania (filtry), bądź zapytania zawartego w funkcji GetSQL (np. warunki na wydrukach, tak jak Ci to podpowiedział Wacek).
Witam
Oczywiście getsql działa super ale problem powstaje jak chcę dodać jeszcze jeden warunek np. trn_stan
GetSQL('SELECT CDN.Atrybuty.Atr_Wartosc
FROM CDN.Atrybuty INNER JOIN
CDN.TraNag ON CDN.Atrybuty.Atr_ObiNumer = CDN.TraNag.TrN_GIDNumer
WHERE CDN.Atrybuty.Atr_AtkId = 37 and Trn_stan>2 and ' & FiltrSql ) <1
Przy takim zapytaniu wydruk ma powstać dopiero gdy fs jest zatwierdzona a wartość atr_wartosc<1 ,atr_atkid-to mój atrybut ma być oraz jego wartość musi byc mniejsza od '1'. Chodzi aby sprzedawca mógł tylko raz dokonać wydruku fs.
Problemem jest dodanie Trn_stan>2 bo jeśli fs nie jest jeszcze zatwierdzona powstaje wartość null i program zawsze pokaże wydruk nawet jak dalej wartosc <1. Myslałem o 'or' ale tez nie dało rady. Może ktos ma pomysł?
bosak pisze:Witam
is null nie działa, ale mam inny pomysł( raczej z tą liczbą wpadłem rano), jak zrobię to napiszę
Nie Chodzi o IS NULL, tylko o ISNULL, np. ISNULL(Atr_Wartosc,0). Pamiętaj tylko, że nawet jeśli masz zapytanie jednostronne (czyli nie takie jak teraz) to odwołanie się w sekcji WHERE do tabeli która w założeniu może nie mieć wartości, najprościej mówiąc, tak czy tak przerabia takie zapytanie do zapytania obustronnego. Stąd moja uwaga o przerobieniu zapytania.