2010-07-14 119 views
2

嘿,我有一个报表参数看起来是这样的:01.01.2009 00:00:00报告服务 - 处理空的日期?

它的日期(如字符串),因为你可能已经猜到了:)。问题是,这个参数也可以是一个空字符串。所以我想这些表达式:

  1. = IIF(!则IsDate(参数DateTo.Value),CDATE(参数DateTo.Value), “”)
  2. = IIF(LEN(参数DateTo.Value) > 0,CDATE(参数!DateTo.Value),“”)

两个不工作,在那里我打印表达式文本字段值结果总是#错误。只要我删除CDate的东西,它的作品,但我必须使用它。是否有另一种方法来实现这一目标?我想要什么都不显示,如果它不是一个日期或日期(格式dd.mm.yyyy)如果它的日期。

想法?

谢谢:)

回答

2

所有参数的IIf进行评估,这将导致你的错误,因为CDATE将空字符串失败。

则只需书面方式沿着这些路线的功能,使用标准的if语句解决这个问题:=Code.FormatDate(Parameters!DateTo.Value)

+0

是的,我猜测VB如果太懒惰:) ......但我将如何解决这个问题?用一些示例代码更新了 – grady 2010-07-14 15:16:54

+0

。应该非常接近你所需要的。然而,我的报告服务/ vb是生锈的。 – ericvg 2010-07-14 15:20:37

1

首先,解决您的数据库,以妥善保存日期:

Function FormatDate(ByVal s As String) As String 
    If (s <> "") Then 
     Return CDate(s).ToString() 
    Else 
     Return "" 
    End If 
End Function 

然后调用它而不是做这些解决方法。你可能在那里也有不好的数据(例如2010年2月30日或者我最喜欢的,尽快)。真的没有理由不在数据库级别修复它,除非这是供应商提供的软件,你不能改变(我会吼他们,尽管通知他们,并要求他们修复他们的数据模型,或者转到由知道自己在做什么的人设计的新产品。不能正确使用日期的供应商可能会有非常差的软件)。 在您用于选择信息的查询中,是否考虑过将所有非日期转换为空?