I need a parametrized crosstab query. I mostly worked it out except for parameters part.
I have four parameters to apply: ChangeID and variant1, variant2 and variant3.
ChangeID is mandatory, it needs to be filled in by the user. Variant1..3 are optional: either user fills one to three variants or (if variant1 is null) the default should be used.
Default is an alternative of predefined variants, actual filled in variants should be applied as alternative too.
I thought of something like this:
PARAMETERS ChangeID Text (7), variant1 Text (10), variant2 Text (10), variant3 Text (10);
TRANSFORM Sum([Qty]*[inout]) AS QtyInOut
SELECT MatByOrder.CHpoint, MatByOrder.PN, MatByOrder.Description, MatByOrder.Price, MatByOrder.UoM
FROM Variants INNER JOIN MatByOrder ON Variants.BO = MatByOrder.BO
WHERE
(MatByOrder.CHpoint=ChangeID) AND
(IIF(isNull([variant1]);
(Variants.Variant="B100") OR (Variants.Variant="B200") OR (Variants.Variant="B300") OR (Variants.Variant="B400") OR (Variants.Variant="B500");
(Variants.Variant=[variant1]) OR (Variants.Variant=[variant2]) OR (Variants.Variant=[variant3])
)
)
GROUP BY MatByOrder.CHpoint, MatByOrder.PN, MatByOrder.Description, MatByOrder.Price, MatByOrder.UoM
but it doesn’t work. The problem is of course in IIF in WHERE clause.
What is the correct way to accomplish this?
This should work: