在 MS Access 中选择日期时数据类型不匹配

问题描述 投票:0回答:1

我想在MS Access中查询两个日期之间的记录。日期字段是一个字符串,我使用下面的函数将其转换为日期格式。 devicelocaltime 作为字符串传入,cvt2date 返回日期。该函数工作正常,当我检查返回数据的 vartype 时,它返回一个“7”,表明 cvt2date 实际上是一个日期。当我在设计视图中添加搜索条件作为日期或日期范围时,我收到数据类型不匹配的消息。当我调试时,函数的最后一行会突出显示 - cvt2date = CDate(new_date)。我做错了什么?

谢谢。


Public Function cvt2date(deviceLocalTime As String) As Date

Dim m, d, y, new_date As String


If deviceLocalTime = "" Then

new_date = "1/2/1900"

Else

y = Right(deviceLocalTime, 4)
m = Mid(deviceLocalTime, 5, 3)
d = Mid(deviceLocalTime, 9, 2)

new_date = m & "/" & d & "/" & y

End If

'cvt2date = Format(CDate(new_date), 2)
'cvt2date = new_date
cvt2date = CDate(new_date)
End Function


在我添加日期搜索条件之前,查询工作正常。然后我收到了数据类型不匹配错误。

date ms-access type-mismatch
1个回答
0
投票

您可以将其归结为:

Public Function cvt2date(ByVal deviceLocalTime As String) As Date

    Dim LocalTime   As Date

    ' Strip prefix.
    deviceLocalTime = Mid(deviceLocalTime, 5)
    
    If IsDate(deviceLocalTime) Then
        LocalTime = CDate(deviceLocalTime)
    Else
        LocalTime = DateSerial(1900, 1, 2)
    End If

    cvt2date = LocalTime
    
End Function

这还处理了参数

deviceLocalTime
的无效值,这可能是您所看到的错误的原因。

© www.soinside.com 2019 - 2024. All rights reserved.