对于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个值,我希望在外部程序集中执行此操作,以便许多报告可以引用它。
谢
答案 0 :(得分:0)
如果数据集没有返回任何记录(行),则报表中不会显示任何数据行。根据您在上面放置代码的位置,可能甚至没有被调用。详细数据组重复的次数与数据集中的记录一样多。
如果您希望在没有返回记录时显示一行,则需要在数据组外部添加一行,例如表格页眉或页脚,并将其“可见性”设置为基于数据集中的记录数。将可见性设置为=IIF(CountRows("Dataset1")=0,false,true)
或者我在描述中遗漏了什么?