所以我的公式看起来像这样:
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
谢谢,
答案 0 :(得分:0)
首先看一下你的问题似乎问题在于ToText
函数,其中参数更多。
您的公式似乎是在totext中使用dates
,因此请查看文档以更正语法。
如果您正在尝试使用特定格式...请更新您的问题并告诉我
答案 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})