Filtr na liniach WZ

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

Moderator: mikey

adymala
Posty: 50
Rejestracja: 22 kwie 2020, 15:09
Rola: Konsultant CDN XL
Wersja: 2019

Filtr na liniach WZ

Post autor: adymala »

Cześć,
Potrzebuję napisać filtr, który pokaże mi wszystkie linie WZE, takie które zawierają kilka subelementów.
W SQLu napisałem i działa. Ale nie umiem tego teraz wrzucić do filtra?
Macie jakiś pomysł jak to spiąć z filtrem i bieżącym nagłówkiem?

Kod: Zaznacz cały

select TrS_GIDNumer, TrS_GIDLp, TrS_SubGIDLp, * 
from cdn.TraNag
	join cdn.TraElem on		TrN_GIDTyp=TrE_GIDTyp AND TrN_GIDNumer=TrE_GIDNumer
	join cdn.TraSElem on TrE_GIDTyp=TrS_GIDTyp AND TrE_GIDNumer=TrS_GIDNumer AND TrE_GIDLp=TrS_GIDLp
	join cdn.dostawy on Dst_GIDNumer=TrS_DstNumer
where (TrN_GIDTyp=2005 AND TrN_GIDNumer=6618888)
	and TrS_SubGIDLp > 1

Kod: Zaznacz cały

TrE_GIDLp in
(select TrE_GIDLp 
from cdn.TraElem
	join cdn.TraSElem on TrE_GIDTyp=TrS_GIDTyp AND TrE_GIDNumer=TrS_GIDNumer AND TrE_GIDLp=TrS_GIDLp
where TrS_SubGIDLp > 1 and {filtrSQL}
)
Filtr na liniach - elementy skladające się z kilku subelementów.png
Filtr na liniach - elementy skladające się z kilku subelementów.png (131.9 KiB) Przejrzano 749 razy

marceynowa
Posty: 341
Rejestracja: 29 lut 2008, 11:27
Rola: Administrator CDN XL
Wersja: 2022
Lokalizacja: Gdynia

Re: Filtr na liniach WZ

Post autor: marceynowa »

Pierwsza sprawa - nie bazowałbym na założeniu, że TrS_GIDLp>1, gdyż może się zdarzyć że będzie jedna subpozycja o LP=3.
Zapytanie powinno bazować na grupowaniu rekordów.

Co do znalezienia kontekstu dokumentu to znam tylko rozwiązanie bazujące na powiązaniu TrN_Aktywny z identyfikatorem sesji użytkownika.

Mój kod:

Kod: Zaznacz cały

Tre_GIDLp in (select Tre_GIDLp
from cdn.TraNag
	join cdn.TraElem on		TrN_GIDTyp=TrE_GIDTyp AND TrN_GIDNumer=TrE_GIDNumer
	join cdn.TraSElem on TrE_GIDTyp=TrS_GIDTyp AND TrE_GIDNumer=TrS_GIDNumer AND TrE_GIDLp=TrS_GIDLp
	join cdn.dostawy on Dst_GIDNumer=TrS_DstNumer
join cdn.sesje on TrN_aktywny=ses_sesjaid join cdn.opekarty on ses_opeident=ope_ident and ope_ident={_QXLOpeIdent()}
group by TrE_GIDNumer, TrE_GIDLp
having count(TrE_GIDLp) > 1)
Tylko nie wiem dlaczego działa to bardzo wolno.

ODPOWIEDZ