Private Function GetShortDate(ByVal strDate As String) As Date
    If Trim(strDate) <> "-  -" Then
        GetShortDate = DateValue(Trim(strDate))
    Else
        GetShortDate = Null  '用户未输入
    End If
End Function该函数是小弟用来把MaskEdBox控件的内容转换为数据库能识别的日期格式的,MaskEdBox的Mask属性被设置为:####-##-##。程序执行到GetShortDate = DateValue(Trim(strDate))这一行时即报错说“type mismach”。
请问各位大虾,怎样才能避免这种情况,或者说怎样把MaskEdBox控件的内容转换为数据库能识别的日期格式?
还有,这句GetShortDate = Null有问题吗?

解决方案 »

  1.   

    把函数改成CDate或者使用Format函数GetShortDate=Null似乎不妥,应该返回一个原始日期发了两遍?
      

  2.   

    Private Function GetShortDate(ByVal strDate As String) As Date
        If NOT IsDate(Trim(strDate)) Then
            GetShortDate = DateValue(Trim(strDate))
        Else
            GetShortDate = Null  '用户未输入
        End If
    End Function
      

  3.   

    Private Function GetShortDate(ByVal strDate As String) As Date
    On Error GoTo GetErr
        GetShortDate = DateValue(Trim(strDate))
    Exit Function
    GetErr:
        GetShortDate = Null
    End Function
      

  4.   

    多谢各位。
    To CityhunterID(城市猎人) ,小弟在strDate里传递一个如“2000-10-09”的字符串时(MaskEdBox的Text属性),按理这就是日期格式了。为何还是通不过呢?
    请继续指点。
      

  5.   

    IsDate(Trim(strDate))和DateValue(Trim(strDate))小弟都用过的,还是通不过啊。
    请继续指点!
      

  6.   

    MaskEdBox控件能返回两种值,
    一种是加“-”的如:2000-10-09
    一种是不加“-”的如:20001009
    你可能用的是第二种
      

  7.   

    Private Function GetShortDate(ByVal strDate As String) As Date
        If Trim(strDate) <> "-  -" Then
            GetShortDate = cvDate(Trim(strDate))
        Else
            GetShortDate = Null  '用户未输入
        End If
    End Function