gpt4 book ai didi

c# - SQL Server Report Builder 3 使用带参数的 SQL IN 运算符不起作用

转载 作者:行者123 更新时间:2023-11-30 23:09:28 25 4
gpt4 key购买 nike

我正尝试在 SSRS 中对单个列使用 IN 运算符来过滤数据集。当我添加多个值时,它会失败。

为简单起见,这是我的 SQL 语句,排除了其他过滤器以关注新问题。

SELECT * FROM vActivityDetailed WHERE 类别 IN (@Category)

@Category 受数据集属性下的覆盖表达式影响。

=Split(Parameters!Category.Value, ",")

我没有使用多值参数,而是将其视为单个值,并希望通过拆分,SSRS 应该像这样执行。

C# - ASP.NET 代码

string categoryString = "Expenses, Misc, Accounts-Receivable";
paramPayType.Name = "Category";
paramPayType.Values.Add((categoryString!= "" ? categoryString : null));

SSRS 最终 SQL 执行(预期)

SELECT * FROM vActivityDetailed WHERE Category IN ('Expenses', 'Misc', 'Accounts-Receivable')

因为我已经使用 SQL Server Management Studio 直接在 SQL 上测试了这个,所以我知道上面的 SQL 应该可以工作,因为它返回记录,但是当在 SSRS 中应用时,它失败并显示 在报告处理期间发生错误。 (rsProcessingAborted)

最佳答案

选择多个值时,SSR中的参数值是字符串的数组。 Split 函数将单个字符串作为其参数。您不能对数组使用 Split。带有 SQL Server 的 SSRS 会为您处理值的拆分,因此您应该能够直接传递参数。

如果您出于某种原因需要实际拆分值,我建议您使用自定义 SQL 函数。如果您搜索一下,会有很多示例。

关于c# - SQL Server Report Builder 3 使用带参数的 SQL IN 运算符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45806038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com