Filtr w Rejestrze VAT

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

obserwator
Posty: 50
Rejestracja: 15 paź 2019, 13:07
Rola: Administrator CDN XL
Wersja: 2019
Kontakt:

Filtr w Rejestrze VAT

Post autor: obserwator »

Dzień Dobry,
W rejestrze VAT na poziomie nagłówka dokumentów utworzyłem kilka atrybutów, które przypisywane są do danego dokumentu (np. nazwisko osoby, która dany dokument kosztowy opisała na odwrocie). Zrobiłem filtr na liście tychże dokumentów w rejestrze VAT.
@PAR ?@S20|NAZWISKO|&NAZWISKO:REG=A @? PAR@

ifs.PodajAtrybut(TrN_GIDTyp, TrN_GIDNumer, 22) Like '%'+??NAZWISKO+'%'

ale pojawiła się dziwna sytuacja. Nie wszystkie pozycje z przypisanym atrybutem odnajduje filtr. Tak na prawdę nie odnajduje pozycji wpisywanych od kilku dni (wcześniejsze odnajduje). Wygląda na to, jakby przepełnił się jakiś stos czy coś w tym stylu.
Ktoś, coś?
Maciek L.

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: Filtr w Rejestrze VAT

Post autor: elmiq »

Ciężko coś powiedzieć, jeśli nie wiadomo co jest w ciele funkcji której używasz.

Pozdrawiam,
Mateusz
Mateusz Świerkosz

http://elmiq.blogspot.com/

obserwator
Posty: 50
Rejestracja: 15 paź 2019, 13:07
Rola: Administrator CDN XL
Wersja: 2019
Kontakt:

Re: Filtr w Rejestrze VAT

Post autor: obserwator »

Hmm, atrybut NAZWISKO - to pole kombi (zamknięta lista).
Filtr wskazałem w poprzedniej wyżej wiadomości, nie jest on skomplikowany. Pojawia się parametr użytkownikowi, który z tego korzysta do wpisania nazwiska lub fragmentu nazwiska osoby, która podpisywała dokumenty i wynikiem mają być wyświetlone tylko te dokumenty zakupu, które dotyczą danej osoby.
Może być zrezygnować z dynamicznego pola, a zaszyć konkretne nazwisko w filtrze? Tylko nie wiem jak zmienić zapytanie.....
Maciek L.

obserwator
Posty: 50
Rejestracja: 15 paź 2019, 13:07
Rola: Administrator CDN XL
Wersja: 2019
Kontakt:

Re: Filtr w Rejestrze VAT

Post autor: obserwator »

Może to będzie naprowadzenie na jakąś pomoc.....
Otóż, posiadam dwa atrybuty na poziomie dokumentu w omawianym rejestrze VAT.
Atrybut 1: DATA
Atrybut 2: NAZWISKO - już wcześniej opisywany wyżej w wątku, po którym nie mogę filtrować części dokumentów

Dostawiłem dwie ręczne kolumny na poziomie listy dokumentów w rejestrze VAT, które wywołują wartości z wyżej wymienionych atrybutów.
KOLUMNA 1: wartość atrybutu DATA
KOLUMNA 2: wartość atrybutu NAZWISKO

W KOLUMNA 1 wszystko gra, czyli z każdego dokumentu pokazuje wartość atrybutu
W KOLUMNA 2 - tylko z części dokumentów pokazuje wartość, a z części nie pokazuje nic. Dokładniej do pewnego dnia pokazuje wartości atrybutów, a od pewnego dnia już ich nie pokazuje, aż do teraz....

Definicje kolumn:


RĘCZNA KOLUMNA DATA:
select isnull(k1.DataKsiegowania,'') as Data_księgowania from (select trn_gidtyp as dokgidtyp, trn_gidnumer as dokgidnumer,
convert (varchar(10), cdn.tstodate (Atr_Wartosc,0), 121) as DataKsiegowania
from cdn.TraNag join cdn.Atrybuty on TrN_GIDNumer=Atr_ObiNumer and TrN_GIDTyp=Atr_ObiTyp and Atr_AtkId=28) as k1
where {filtrsql}


RĘCZNA KOLUMNA NAZWISKO:
SELECT ifs.PodajAtrybut(TrN_GIDTyp,TrN_GIDNumer,22) as OPISUJE
from
(
SELECT
Trn_GIDTyp, Trn_GIDNumer
, Trn_GIDTyp DokGIDTyp
, Trn_GIDNumer DokGIDNumer
, Trn_DokumentObcy
FROM CDN.TraNag (NOLOCK)
) DOK

WHERE {filtrsql}
Maciek L.

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: Filtr w Rejestrze VAT

Post autor: elmiq »

Ciężko coś powiedzieć, jeśli nie wiadomo co jest w ciele funkcji której używasz.

Podpowiem, że funkcja to "ifs.PodajAtrybut".
Mateusz Świerkosz

http://elmiq.blogspot.com/

obserwator
Posty: 50
Rejestracja: 15 paź 2019, 13:07
Rola: Administrator CDN XL
Wersja: 2019
Kontakt:

Re: Filtr w Rejestrze VAT

Post autor: obserwator »

elmiq - dzięki za sugestię i naprowadzenie. Filtr działa. Napisałem go w ten sposób:

@PAR ?@S20|NAZWISKO|&NAZWISKO:REG=A @? PAR@
TrN_GidNumer in (SELECT Atr_ObiNumer FROM cdn.atrybuty WHERE Atr_Wartosc LIKE '%'+??NAZWISKO+'%')

Dzięki temu pracownik księgowości może w szybki sposób dotrze√ do dokumentów z obszaru osoby której nazwisko wpisze w parametrze (przy uruchamianiu filtra).

Natomiast w jaki sposób zmienić składnię, by filtr powyższy pokazywał wszystkie dokumenty z obszaru pracownika ale takie, których drugi atrybut (także w nagłówku dokumentu) jest pusty.
Maciek L.

blecku
Posty: 56
Rejestracja: 08 sie 2018, 10:29
Rola: Administrator CDN XL

Re: Filtr w Rejestrze VAT

Post autor: blecku »

Ogólnie rzecz biorąc skrypt:

Kod: Zaznacz cały

TrN_GidNumer in (SELECT Atr_ObiNumer FROM cdn.atrybuty WHERE Atr_Wartosc LIKE '%'+??NAZWISKO+'%')
Może działać Ci błędnie ponieważ może złożyć się dla różnych obiektów ten sam numer id, dlatego należy również rozgraniczać po typie obiektu.

Również sugeruję nie przeszukiwać wszystkich atrybutów tylko te konkretne które nas interesują.

Wyciągnij sobie z tabeli id klasy atrybutu:

Kod: Zaznacz cały

SELECT AtK_ID FROM CDN.AtrybutyKlasy WHERE AtK_Nazwa = 'Wprowadź nazwę atrybutu z XLa'
I spróbuj wykorzystać kod:

Kod: Zaznacz cały

@PAR ?@S20|NAZWISKO|&NAZWISKO:REG=A @? PAR@
TrN_GidNumer in (
SELECT 
	TrN_GIDNumer 
FROM CDN.TraNag
INNER JOIN CDN.Atrybuty A1 ON TrN_GIDNumer = A1.Atr_ObiNumer AND TrN_GIDTyp = A1.Atr_ObiTyp AND A1.Atr_AtkId = (id klasy atrybutu)
INNER JOIN CDN.Atrybuty A2 ON TrN_GIDNumer = A2.Atr_ObiNumer AND TrN_GIDTyp = A2.Atr_ObiTyp AND A2.Atr_AtkId = (id klasy atrybutu)
WHERE A1.Atr_Wartosc LIKE '%'+??NAZWISKO+'%' AND A2.Atr_Wartosc = ''
)
Przy czym musisz sobie podstawić sobie id klas atrybutów: "(id klasy atrybutu)"
Dla "A1.Atr_AtkId = (id klasy atrybutu)" id klasy w której znajdują się nazwiska
Dla "A2.Atr_AtkId = (id klasy atrybutu)" id klasy która wartość atrybutu powinna być pusta.

Mam nadzieję że w miarę zrozumiale to rozpisałem.
Pozdrawiam,
Kamil

obserwator
Posty: 50
Rejestracja: 15 paź 2019, 13:07
Rola: Administrator CDN XL
Wersja: 2019
Kontakt:

Re: Filtr w Rejestrze VAT

Post autor: obserwator »

Kamil - świetnie to napisałeś. Jasne jak słońce i już odpaliłem. Jedynie jeszcze jeden element układanki mi nie gra.
Na końcu składni filtra widnieje u Ciebie
AND A2.Atr_Wartosc = ''
Między apostrofami jest pusto, wynikało by z tego, że ten drugi warunek ma zwrócić wszystko to co nie ma żadnej wartości w drugim atrybucie.

Więc po zastosowaniu jest tak, że filtruje i pokazuje dokumenty, które w wartości drugiego atrybutu już "coś zawierają" np. DO WYJAŚNIENIA, gdyż jest to pole @s255. Być może spacja między DO oraz WYJAŚNIENIA ma tu jakiś wpływ.
Maciek L.

blecku
Posty: 56
Rejestracja: 08 sie 2018, 10:29
Rola: Administrator CDN XL

Re: Filtr w Rejestrze VAT

Post autor: blecku »

id klasy atrybutu jest dobrze przypisane? Być może odwołujesz się do innego atrybutu? Sprawdź czy dobrze wprowadziłeś id klasy atrybutu dla:
A2.Atr_AtkId = (id klasy atrybutu)
spacja nie ma żadnego wypływu ponieważ warunek "A2.Atr_Wartosc = ''" ma sprawdzić czy wartość w atrybucie jest pusta tak jak to napisałeś we wstępnym założeniu.
Pozdrawiam,
Kamil

obserwator
Posty: 50
Rejestracja: 15 paź 2019, 13:07
Rola: Administrator CDN XL
Wersja: 2019
Kontakt:

Re: Filtr w Rejestrze VAT

Post autor: obserwator »

Kamil! Bardzo dziękuję raz jeszcze. Z tabeli klasy atrybutów prawidłowo podałem numery Atr_AtkId i nadal nie zadziałało ( :shock: ). Wywaliłem ten atrybut i dodałem kolejny i poszło. Cały czas pracuję w środowisku testowym więc zanim uruchomię tą funkcjonalność zostaje mi jeszcze konstrukcja dwóch kolumn na tabeli VAT, które zwracały by wartości tych wyżej wymienianych atrybutów.
Wcześniej w wątku (4 posty wyżej opisałem ich składnię) - jedna z wcześniejszych kolumn dodanych przeze mnie ręcznie prawidłowo funkcjonuje do dziś. Dwie nowe kolumny oparte o wyżej wymienione dwa atrybuty nie działają.
Maciek L.

ODPOWIEDZ