SSRS存储过程CASE语句未返回到数据集

时间:2016-03-11 03:47:43

标签: stored-procedures reporting-services ssrs-2008

我有一个使用存储过程作为数据集的报告。我的存储过程中有一个简单的case语句,它根据记录中的结果操作一组标题。

CASE 
WHEN CWLI.CAPTION='Hypo Tax – Medical'
THEN 'Medical Tax' 
WHEN CWLI.CAPTION='Hypo Tax Social' 
THEN 'Social Tax'
ELSE CWLI.CAPTION
END AS CAPTION,

CASE 
WHEN CWD.CAPTION='Hypo Tax – Medical'
THEN 'Medical Tax' 
WHEN CWD.CAPTION='Hypo Tax Social' 
THEN 'Social Tax'
ELSE CWD.CAPTION
END AS CWDCAPTION,

我在SSMS中执行存储过程时会看到预期的结果,如下所示:

Stored procedure results

然而,在我的报告中,我仍然看到" Hypo Tax Social"

SSRS results

我关闭了BIDS。我删除了数据集并将其添加为新数据集。我还更改了配置文件RSReportDesigner.config并将CacheDataForPreview更改为false并删除了我的.data文件。

可能出现什么问题?

我搜索了rdl.data文件但没有返回任何内容。虽然我改变了我的RSReportDesigner.config文件Add Key =" CacheDataForPreview"值="假" ,我仍然希望找到残留的.data文件。不过,我将此更改回滚到Add Key =" CacheDataForPreview"值="真"

我删除了我的数据源,我的数据集并在VSS中重新创建。然后我创建了一个外部工具来删除这些文件。当我使用我的工具时,我收到此消息。

无法找到C:\ Users \ Pennie \ Documents \ Visual Studio 2008 \ Projects \ Client * .rdl.data

我仍然在SSMS中看到了正确的结果(新的CASE字幕)以及我报告中的旧字幕。 我真的想在存储过程中处理这个问题,但我有一个可交付成果。 我可以操纵tablix表达式中的标题吗?目前 表达式正在寻找两个字段的值。一个字段位于我的应用程序的公司级别(这些可能是空白的)。 Fields!CAPTION.Value,另一个是在系统级别(这些永远不会是空白的)Fields!CWDCAPTION.Value

这是我当前的表达,没有附加案例。

=Iif(Fields!CAPTION.Value="",Fields!CWDCAPTION.Value,Fields!CAPTION.Value)

当我尝试在此表达式中添加其他Iif时。我只是回答正确或错误。

再次感谢。 彭涅

这一课教会了我很多关于缓存和.data的问题......但问题是这个白痴开发者(我)在我的报告中调用了我的测试SP ..我的测试SP没有包含case语句。希望我有更多令人兴奋的消息,但事实很容易证明; - )

我已经准备好了。 彭涅

1 个答案:

答案 0 :(得分:1)

听起来您在最初创建数据集后添加了CASE语句。如果是这种情况,则需要再次重新创建数据集。为了清楚起见,不仅要从报告中删除数据集,还要删除数据集本身。