在我使用 SSRS 2005 开发的报告应用程序中,我有一个字符串类型的参数,它接受时间。时间应采用“HH:mm:ss”格式 如何检查输入字符串的格式是否正确?
我尝试执行以下操作 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 我仍然得到一个错误
“ char 类型到 datetime 数据类型的转换导致日期时间值超出范围” 如何处理异常以免出现错误?
编辑:
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
然后我将 parameter(validateTime) 值分配为 =Code.CheckNum(Parameters!sTime.Value)
但参数的值始终为真。当我指定一个大于 23 的值时,我仍然看到错误。请看图片