0

我有 2 个报告参数,分别是 customerNumber 和 customerName。用户必须输入一个或另一个 - 不能同时输入,因此在第一个输入的文本将禁用第二个参数,反之亦然。
这可以使用数据集或如何链接两者来完成,以便其中只有一个接受值?

非常感谢

4

1 回答 1

0

我不“认为”你能做到这一点。

您可以模拟一个基于另一个被禁用的方法,但您只能以我认为的一种方式执行此操作,否则您将有一个循环引用。

想象一下您的 customerName 数据集看起来像

IF @customerNumber IS NULL
    BEGIN
        SELECT '' as customerName
    END
ELSE
    BEGIN
        SELECT DSITINCT customerName from myTable
    END

这没关系,但是您不能对 customerNumber 参数的数据集执行相同的操作,因为它必须引用 customerNumber 参数,然后我们再次进行。

其他选择?

假设您希望用户提供姓名或号码但不能同时提供,您可以使用单个字段来输入姓名/号码,然后使用包含您想要的实际值的列表。

所以第一个参数customerSearch是纯文本单值。

第二个参数“customerNumber”可用值的数据集可能如下所示

SELECT customerName, customerID 
    FROM myTable t 
    WHERE customerName LIKE '%' + @customerSearch + '%'
        OR customerID = @customerSearch -- CAST the parameter if required

将参数设置为多值,并可选择将默认值设置为同一数据集。

不理想,但也许是一个合理的妥协。

于 2021-05-17T08:58:55.980 回答