Reporting Services - 即使使用空数据也可获得0值 - 参考汇编

时间:2011-06-07 15:18:46

标签: c# reporting-services

对于SSRS项目2008 3.5 Framework,我试图让所有数字字段返回数字,即使数据集没有提供记录也是如此。如果没有从数据集返回的记录,则以下表达式有效:

= IIF(IsNothing(字段!Location.Value), “0”,字段!Location.Value)

但是,如果数据集中没有记录,则以下对外部程序集的调用和返回double的方法不起作用:

= SSRSHelper.Helper.NEValue(字段!Location.Value)

调用以下C#方法:

    public static double NEValue(object val)
    {
        if (val != null)
        {
            string valStr = val.ToString();
            double valDbl;

            if (double.TryParse(valStr,out valDbl))
                return valDbl;
        }

            return 0.0;
    }

当没有显式传递任何内容以及传递有效值时,该方法有效。

非常感谢您的帮助。

更正:内联表达式也不起作用。无论如何,当数据集为空时,报告需要填充0个值,我希望在外部程序集中执行此操作,以便许多报告可以引用它。

1 个答案:

答案 0 :(得分:0)

如果数据集没有返回任何记录(行),则报表中不会显示任何数据行。根据您在上面放置代码的位置,可能甚至没有被调用。详细数据组重复的次数与数据集中的记录一样多。

如果您希望在没有返回记录时显示一行,则需要在数据组外部添加一行,例如表格页眉或页脚,并将其“可见性”设置为基于数据集中的记录数。将可见性设置为=IIF(CountRows("Dataset1")=0,false,true)

或者我在描述中遗漏了什么?