mam na wszystkich dokumentach w XLu dodawany atrybut o wartości tekst. Chciałbym mieć możliwość wyfiltrowania po tym konkretnym atrybucie dokumentu z poziomu preliminarza. Jak taki filtr powinien wyglądać?
(
(prlv_gidNumer in (select Atr_obinumer from cdn.Atrybuty where Atr_atkid = numer atrybutu and Atr_Wartosc like '%'+ ??Atr +'%' and Atr_ObiTyp in (1521))
and prlv_gidTyp=1521)
or
(prlv_gidNumer in (select Atr_obinumer from cdn.Atrybuty where Atr_atkid = numer atrybutu and Atr_Wartosc like '%'+ ??Atr +'%' and Atr_ObiTyp in (1490))
and prlv_gidTyp in (1490) )
or
(prlv_gidNumer in (select Atr_obinumer from cdn.Atrybuty where Atr_atkid = numer atrybutu and Atr_Wartosc like '%'+ ??Atr +'%' and Atr_ObiTyp in (3344))
and prlv_gidTyp in (3344) )
)
@PAR ?@S20|Atr|Wartość Atrybutu: @? PAR@ and atr_wartosc like '%'+ ??Atr +'%')
Coś takiego wypłodziłem, ale niestety nie działa, gdzie szukać błędu?
@PAR ?@S50|Atr|Wartość Atrybutu:REG= @? PAR@
PRLV_GIDNumer IN (
SELECT
Atr_ObiNumer
FROM CDN.Atrybuty
WHERE Atr_AtkId = NrKlasyAtr AND Atr_ObiTyp IN (1521,1490,3344) AND Atr_Wartosc like '%'+ ??Atr +'%'
)
chyba że masz różne klasy atrybutów do typu dokumentów to bym wtedy uwarunkowanie zrobił w sposób:
...
WHERE (
(Atr_AtkId = NrKlasyAtr1 AND Atr_ObiTyp = 1521)
OR (Atr_AtkId = NrKlasyAtr2 AND Atr_ObiTyp = 1490)
OR (Atr_AtkId = NrKlasyAtr3 AND Atr_ObiTyp = 3344)
)
...
@PAR ?@S50|Atr|Wartość Atrybutu:REG= @? PAR@
@PAR ?@S50|Seria|Seria:REG= @? PAR@
PRLV_GIDNumer IN (
SELECT
Atr_ObiNumer
FROM CDN.Atrybuty
INNER JOIN CDN.TraNag ON Atr_ObiTyp = TrN_GIDTyp AND Atr_ObiNumer = TrN_GIDNumer
WHERE Atr_AtkId = NrKlasyAtr AND Atr_ObiTyp IN (1521,1490,3344) AND Atr_Wartosc like '%'+ ??Atr +'%' AND TrN_TrNSeria = ??Seria
)
jak zmieniłem w filtrze przy trn_seria na "or" to tak czy inaczej nie wyszukuje mi dokumentów po samej serii. Generalnie jeżeli wpiszę atrybut to mi znajduje, natomiast serii już nie.
(Atr_AtkId = NrKlasyAtr AND Atr_ObiTyp IN (1521,1490,3344) AND Atr_Wartosc like '%'+ ??Atr +'%') OR (TrN_TrNSeria = ??Seria AND TrN_GIDTyp = 1521)
PS. przy czym trzeba uważać jeżeli istnieją FZ które nie posiadają serii. I użyjemy filtra i nie wpiszemy nic w serię to również wyświetli nam ten filtr dokumenty które mogą być nieoczekiwane. Więc można w parametr serii wstawić np. jakąś wartość domyślną która jest zawsze różna od serii które posiadamy lub stworzyć inny warunek. Możliwości jest kilka