【发布时间】:2016-03-11 03:47:42
【问题描述】:
我有一个使用存储过程作为数据集的报表。我的存储过程中有一个简单的 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”
我已关闭投标。我删除了数据集并将其添加为新数据集。我还更改了我的配置文件 RSReportDesigner.config 并将 CacheDataForPreview 更改为 false 并删除了我的 .data 文件。
可能出了什么问题?
我搜索了 rdl.data 文件,但没有返回任何内容。虽然我更改了我的 RSReportDesigner.config 文件 Add Key="CacheDataForPreview" Value="false" ,但我仍然希望找到残留的 .data 文件。尽管如此,我还是将此更改回滚到 Add Key="CacheDataForPreview" Value="true"
我删除了我的数据源、我的数据集并从 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 时。我只返回 True 或 False。
再次感谢。 便士
这节课教会了我很多关于缓存和 .data 的知识……但问题是白痴开发人员(我)在我的报告中调用了我的测试 SP。我的测试 SP 不包含 case 语句.希望我有更多令人振奋的消息,但事实很容易证明;-)
我准备好了。 便士
【问题讨论】:
标签: stored-procedures reporting-services ssrs-2008