【发布时间】:2017-08-21 21:49:44
【问题描述】:
我正在尝试在单个列上使用 IN 运算符过滤 SSRS 中的数据集。当我添加多个值时,它会失败。
为简单起见,这是我的 SQL 语句,不包括其他过滤器以专注于新问题。
SELECT * FROM vActivityDetailed WHERE Category 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 中应用时它会失败并显示 An error has occurred during report processing. (rsProcessingAborted)
【问题讨论】:
-
您是否尝试过跟踪通过您的应用程序发送到您的服务器的 SQL 查询文本?
-
@niktrs 不确定您的意思,因为查询文本是在 SQL 报表服务器上生成的,而我在 ASP.NET 应用程序中拥有的唯一控件是发送参数。我可以在发送之前查看每个参数的值,但在那之后,我能看到的最多的是 SQL 报告服务器数据库上的错误日志,它显示了发送的每个参数,它在错误日志中看起来是正确的。
标签: c# sql asp.net reporting-services split