我有一个使用存储过程作为数据集的报告。我的存储过程中有一个简单的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中执行存储过程时会看到预期的结果,如下所示:
然而,在我的报告中,我仍然看到" Hypo Tax Social"
我关闭了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语句。希望我有更多令人兴奋的消息,但事实很容易证明; - )
我已经准备好了。 彭涅
答案 0 :(得分:1)
听起来您在最初创建数据集后添加了CASE
语句。如果是这种情况,则需要再次重新创建数据集。为了清楚起见,不仅要从报告中删除数据集,还要删除数据集本身。