我想在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
在我添加日期搜索条件之前,查询工作正常。然后我收到了数据类型不匹配错误。
您可以将其归结为:
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
的无效值,这可能是您所看到的错误的原因。