在我使用SSRS 2005開發的報告應用程序中,我有一個接受時間的字符串類型參數。時間應採用格式「HH:mm:ss」的格式。如何檢查輸入字符串的格式是否正確?SQL服務器報告驗證參數格式正確
我試着做以下 則IsDate(TIMEVALUE(parametr!stime.Value)) 這隻要值範圍內返回true。但是如果該值是24:00:00或錯誤值,則會引發異常。
我也試過在報告中的代碼來創建功能如下:
Public Function CheckNum(sNum as String) as Boolean
Dim msg as String
msg = ""
Try
If IsDate(TimeValue(sNum))=1 Then
Return True
Else
msg="Parameter must be a number"
End If
Catch ex as Exception
Return False
End Try
If msg <> "" Then
MsgBox(msg, 16, "Parameter Validation Error")
Err.Raise(6,Report) 'Raise an overflow
End If
End Function
當我輸入一個值24:00:00我還得到一個錯誤
「的的轉換字符類型到日期時間數據類型導致超出範圍的日期時間值「 如何處理異常以便我不出錯?
編輯:
public Function CheckNum(sNum as String) as Boolean
Dim REGEX_TIME = "^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$"
If System.Text.RegularExpressions.Regex.IsMatch(sNum, REGEX_TIME) Then
Return True
Else
Return False
End If
End Function
然後我分配了一個參數(validateTime)值= Code.CheckNum(參數sTime.Value!)
但參數的值始終爲true。當我指定一個大於23的值時,我仍然看到錯誤。請參閱圖像
我得到一個eroor BC30465:'進口'的聲明必須先於任何聲明。但是在Imports語句之前,我的代碼中沒有任何聲明。 – xaria
示例代碼是控制檯應用程序。你不能複製粘貼代碼。 SSRS在解釋代碼時會更改您的代碼(http://connect.microsoft.com/VisualStudio/feedback/details/478155/cannot-use-imports-statement-in-reportviewer-control-custom-code)。更改您的代碼,以便不使用導入而使用正則表達式類的全名,如System.Text.RegularExpressions.Regex.IsMatch –
請參閱我的編輯 – xaria