2010-07-14 161 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日或者我最喜歡的,儘快)。真的沒有理由不在數據庫級別修復它,除非這是供應商提供的軟件,你不能改變(我會吼他們,儘管通知他們,並要求他們修復他們的數據模型,或者轉到由知道自己在做什麼的人設計的新產品。不能正確使用日期的供應商可能會有非常差的軟件)。 在您用於選擇信息的查詢中,是否考慮過將所有非日期轉換爲空?