【问题标题】:SSRS Stored Procedure CASE statement not being returned to datasetSSRS 存储过程 CASE 语句未返回到数据集
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多