如何检查Crystal Reports中的数据源是否为空

时间:2014-10-22 20:14:10

标签: c# crystal-reports

所以我的公式看起来像这样:

ToText({ProjectedHours.StartDate},{?Pm-?ShortDateFormat})  + " - " + ToText({ProjectedHours.EndDate},{?Pm-?ShortDateFormat}) 

ProjectedHours是我从C#/ .NET传入的数据源。问题是ProjectedHours可能是空的。只有当ProjectedHours不为空时,我才能有条件地有条件地执行上面的代码吗?

我实际上也试过这个。由于我使用的是C#/ .NET,我可以检测到ProjectedHours是否为空。如果是,我只需将名为HideProjectedHours的参数设置为true,否则设置为false。在Crystal中,我有以下代码:

If {?Pm-?HideProjectedPaidHours} = false Then
ToText({ProjectedHours.StartDate},{?Pm-?ShortDateFormat})  + " - " + ToText({ProjectedHours.EndDate},{?Pm-?ShortDateFormat}) 

但是,这也不起作用,我收到错误消息“此函数已经给了太多参数。详细信息:errorKind

谢谢,

3 个答案:

答案 0 :(得分:0)

首先看一下你的问题似乎问题在于ToText函数,其中参数更多。

您的公式似乎是在totext中使用dates,因此请查看文档以更正语法。

http://pic.dhe.ibm.com/infocenter/rsawshlp/v7r5m0/index.jsp?topic=%2Fcom.businessobjects.integration.eclipse.designer.doc%2Fhtml%2Ftopic666.html

如果您正在尝试使用特定格式...请更新您的问题并告诉我

答案 1 :(得分:0)

问题解决了。似乎在我的C#代码中,如果数据源为空(count = 0),我就不能将数据源添加到子报表中。通过不向子报表添加数据源,我停止看到错误消息。基本上,我的问题是子报表中的公式抛出了一个水晶报表错误,即使我正在压制该子报表。

if (ProjectedHours.Count > 0)
{
     Report.Subreports["ProjectedHours"].SetDataSource(ProjectedHours);
}

答案 2 :(得分:0)

在您的C#代码中:

if ((DT != null) & DT.Rows.Count > 0) {
return;
}

或在您的报告中选择可能返回null或为空的列,并使用

对其进行抑制
isnull({ProjectedHours.ColumnName})