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?
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
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 (131.9 KiB) Przejrzano 752 razy
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.
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)