使用日期访问 VBA dlookup

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

我正在尝试工作并了解如何处理 MS Access VBA 和表格中的日期。 我有这个变量:

Dim locking as Date
locking = Now

然后我继续使用示例代码从 vba 更新一些表:

query = " UPDATE table " & _
        " SET locktime = """ & locking & """ & _
        " WHERE recordID = 1"
        
db.Execute query, dbFailOnError

lockTime 是表定义中的日期字段。

如果更新查询总是成功,那么我需要在代码的另一部分中检索锁定的 ID 并将其分配给变量:

lockedID = DLookup(recordID, "table", "lockTime = locking")

我不明白如何处理该日期时间标准,我尝试了多次引用并使用 # 符号但无济于事 当然,我收到多种类型不匹配错误 我相信我没有正确处理最初的“查询”语法和 dlookup 语法

vba datetime ms-access datetime-format dlookup
1个回答
0
投票

由于您总是会遇到必须在查询中处理日期和时间的情况,因此您可以创建一个小函数,将日期/时间作为字符串提供,可以轻松地在 SQL 字符串或 dlookup 中使用:

    Public Function DateToSQL(ByVal dte_IN As Date) As String
   ' Converts a date/time to a SQL date/time
   '
   ' IN:  Date
   ' Out: String for direct use in SQL's
   '
   ' Example
   '   strReturnValue = DateToSQL(now())
   '   Returns: #02/17/2024#
    
   Dim strDateTmp     As String
   Dim strReturnValue As String
   
   On Error GoTo DateToSQL_ERROR
    
   strReturnValue = "ERROR"
   strDateTmp = "#" & _
                    Format(dte_IN, "MM") & "/" & _
                    Format(dte_IN, "DD") & "/" & _
                    Format(dte_IN, "YYYY") & " " & _
                    Format(dte_IN, "HH") & ":" & _
                    Format(dte_IN, "NN") & ":" & _
                    Format(dte_IN, "SS") & _
                "#"
    
   strReturnValue = strDateTmp
    
DateToSQL_EXIT:
   DateToSQL = strReturnValue
   Exit Function

DateToSQL_ERROR:
   Resume DateToSQL_EXIT
End Function
© www.soinside.com 2019 - 2024. All rights reserved.