Parameter waarde verspringt reportbuilder

Status
Niet open voor verdere reacties.

RolandPricken

Gebruiker
Lid geworden
17 sep 2010
Berichten
49
Hallo allen,

Ik heb een vraag mbt parameters.

Normaal definieer ik een dataset voor een parameter als volgt:

[sql]SELECT DISTINCT
DYNA_PICKINGLISTSTATUS
FROM dbo.DYNA_GSMREPAIR_PICKINGLIS50046[/sql]

Nu is elke locatie om te kiezen uniek. Bij de reportbuilder krijg ik zo een mooi drop down lijstje te zien om mijn data op te kunnen filteren.

Ik zit nu echter met het volgende probleem.

[sql]SELECT DISTINCT
DYNA_PICKINGLISTSTATUS, INVENTJOURNALNAMEID
FROM dbo.DYNA_GSMREPAIR_PICKINGLIS50046[/sql]

Er zijn 2 velden waar rekening mee gehouden moet worden voor 1 parameter, namelijk pickingliststatus en inventjournalnameid
Pickingliststatus bestaat uit de getallen 0 of 3 of 4 of 5
Journalnameid bestaat uit o.a. 'lossprofit' of 'retour' of 'used'

Zie onderstaand plaatje, er zijn diverse combinaties mogelijk, in totaal 16

ecnYH.png



Ik heb 4 variaties wat ik wil kunnen selecteren zodat deze als parameter gebruikt kunnen worden.
'Totaal' = 0 en 3 en 4 en 5 ongeacht journalnameid, mogen dus allemaal meedoen, lossprofit en retour, etc. (alle 16 dus)
'Correctie' = 4 met lossprofit en 5 met lossprofit (2 stuks)
'Terug' = 5 maar dan zonder lossprofit, wel met de rest (7 stuks)
'Open' = 0 ongeacht journalnameid (1 stuk)

Ik kan de parameter alleen plaatsen op pickliststatus, er is voor de rest niets unieks in de tabel.
Echter met de query die ik nu heb krijg ik, logischerwijs, meerdere keren dezelfde getallen terug. Bijvoorbeeld bij 'Terug' krijg ik nu terug:

Lbmef.png


De query ziet er nu zo uit:

[sql]SELECT DISTINCT
DYNA_PICKINGLISTSTATUS
FROM DYNA_GSMREPAIR_PICKINGLIS50046
WHERE (DYNA_PICKINGLISTSTATUS = 4) AND (INVENTJOURNALNAMEID LIKE 'lossprofit') OR
(DYNA_PICKINGLISTSTATUS = 5) AND (INVENTJOURNALNAMEID LIKE 'lossprofit')

union all
SELECT DISTINCT DYNA_PICKINGLISTSTATUS
FROM dbo.DYNA_GSMREPAIR_PICKINGLIS50046
WHERE (DYNA_PICKINGLISTSTATUS = 5) AND (NOT (INVENTJOURNALNAMEID LIKE 'lossprofit'))
union all
SELECT DISTINCT DYNA_PICKINGLISTSTATUS
FROM dbo.DYNA_GSMREPAIR_PICKINGLIS50046
WHERE (DYNA_PICKINGLISTSTATUS = 0)
union all
SELECT DISTINCT
DYNA_PICKINGLISTSTATUS
FROM dbo.DYNA_GSMREPAIR_PICKINGLIS50046[/sql]

Oorspronkelijk zo, zodat ik weet wat ik kies in het vensterje, anders weet ik niet welke 4 bij wat hoort.

[sql]SELECT DISTINCT
DYNA_PICKINGLISTSTATUS, CASE WHEN DYNA_PICKINGLISTSTATUS = 4 THEN CONVERT(VARCHAR(25), 'Correctie', 126)
ELSE CASE WHEN DYNA_PICKINGLISTSTATUS = 5 THEN CONVERT(VARCHAR(25), 'Correctie', 126) END END AS Expr1
FROM DYNA_GSMREPAIR_PICKINGLIS50046
WHERE (DYNA_PICKINGLISTSTATUS = 4) AND (INVENTJOURNALNAMEID LIKE 'lossprofit') OR
(DYNA_PICKINGLISTSTATUS = 5) AND (INVENTJOURNALNAMEID LIKE 'lossprofit')

union all
SELECT DISTINCT DYNA_PICKINGLISTSTATUS, CASE WHEN DYNA_PICKINGLISTSTATUS = 5 THEN CONVERT(VARCHAR(25), 'Teruggestuurd', 126) END AS Expr1
FROM dbo.DYNA_GSMREPAIR_PICKINGLIS50046
WHERE (DYNA_PICKINGLISTSTATUS = 5) AND (NOT (INVENTJOURNALNAMEID LIKE 'lossprofit'))
union all
SELECT DISTINCT DYNA_PICKINGLISTSTATUS, CASE WHEN DYNA_PICKINGLISTSTATUS = 0 THEN CONVERT(VARCHAR(25), 'Open', 126) END AS Expr1
FROM dbo.DYNA_GSMREPAIR_PICKINGLIS50046
WHERE (DYNA_PICKINGLISTSTATUS = 0)
union all
SELECT DISTINCT
DYNA_PICKINGLISTSTATUS, CASE WHEN DYNA_PICKINGLISTSTATUS = 0 THEN CONVERT(VARCHAR(25), 'Allen', 126)
ELSE CASE WHEN DYNA_PICKINGLISTSTATUS = 4 THEN CONVERT(VARCHAR(25), 'Allen', 126)
ELSE CASE WHEN DYNA_PICKINGLISTSTATUS = 5 THEN CONVERT(VARCHAR(25), 'Allen', 126)
ELSE CASE WHEN DYNA_PICKINGLISTSTATUS = 3 THEN CONVERT(VARCHAR(25), 'Allen', 126) END END END END AS Expr1
FROM dbo.DYNA_GSMREPAIR_PICKINGLIS50046[/sql]

Output:
mM6BY.png


Als ik nu een of meerdere velden aanklik in de reportbuilder, verspringt de gekozen waarde, hierdoor kloppen de waardes niet. Bijvoorbeeld als ik 'Terug' aanklik, verspringt hij naar 'Correctie' (staat 1 regel hoger). Klik ik de 4 laatste aan ('Allen'), verspringt hij naar 'Correctie', 'Correctie', 'Open' en 'Allen'.

Hoe kan dit?
Is er geen betere/makkelijkere manier om dit soort parameters in te stellen?
Het zou fijn zijn om alles maar 1x te zien te krijgen, dus geen 4 x 'allen'.....

Bij voorbaat dank.
 
Laatst bewerkt:
waarom maak je allemaal UNION queries op één en dezelfde tabel, met hetzelfde veld? Volgens mij kan het in één query:
Code:
SELECT DISTINCT DYNA_PICKINGLISTSTATUS
FROM DYNA_GSMREPAIR_PICKINGLIS50046
WHERE (DYNA_PICKINGLISTSTATUS = 4) AND (INVENTJOURNALNAMEID LIKE 'lossprofit') 
OR (DYNA_PICKINGLISTSTATUS = 5) AND (INVENTJOURNALNAMEID LIKE 'lossprofit')
OR (DYNA_PICKINGLISTSTATUS = 5) AND (NOT (INVENTJOURNALNAMEID LIKE 'lossprofit'))
OR (DYNA_PICKINGLISTSTATUS = 0)
Ik heb alle WHERE statements uit de Unions gehaald en als OR bij je eerste query gevoegd. Wat valt op? Om zijn minst dat je twee bijna identieke regels hebt, die elkaar totaal tegenspreken....
 
Dit werkt natuurlijk niet, nu krijg ik als ik de query draai krijg ik 0, 4 en 5 als resultaten, hiermee voldoe ik dus maar aan 1 van de 2 voorwaarden (pickingliststatus) en niet pickingliststatus en journameid

Ik kan denk ik beter mijn vraag herformuleren: is het mogelijk om een parameter te maken waarin rekening gehouden dient te worden met 2 voorwaarden waarbij sommige voorwaarden identiek aan elkaar zijn; bv 4 en lossprofit of 4 en not like lossprofit
Ik kan de parameter niet op pickingliststatus zetten omdat er meerdere voorwaarden op 4 zitten en ook niet op journalnameid omdat hier ook meerdere voorwaarden op zitten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan