【发布时间】:2016-02-18 00:08:46
【问题描述】:
这可能是一个非常简单的问题,但到目前为止,我很难理解我在网上找到的信息。当我尝试从 VBA 中运行 SQl 时,我的 strSQl 出现类型不匹配。
我有一个包含 4 列的表 [tbl_DatabaseUpdateLog]
UpdateID(自动编号)
开始(日期/时间)
结束(日期/时间)
持续时间(日期/时间)
我必须定期从公司数据库中提取信息以进行较小的分析项目,并且我想记录运行这些查询的频率和时间。每次启动更新时,都会运行以下内容:
Dim StartUpdate, EndUpdate, LengthUpdate, strSQl As Date
StartUpdate = Time()
Call UpdateAll 'This calls the collection of queries and is irrelevant for my problem
EndUpdate = Time()
LengthUpdate = EndUpdate - StartUpdate
Forms!frm_Timer.Caption = "Update Completed at " & EndUpdate & " (" & Format(LengthUpdate, "HH:MM:SS") & ")"
DoCmd.SetWarnings (0)
strSQl = "INSERT INTO tbl_DatabaseUpdateLog ( Start, [End], Duration ) " & _
"SELECT '" & StartUpdate & "' AS Started, '" & EndUpdate & "' AS Ended, '" & LengthUpdate & "' AS Lasted"
DoCmd.RunSQL strSQl
DoCmd.SetWarnings (-1)
DoCmd.Close acForm, Me.Name
我尝试在日期前后使用#'s 并使用 Now() 而不是 Time(),但我觉得我缺少一个基本概念来帮助我解决问题。如果有帮助,我只需要时间和持续时间(而不是日期本身)。
【问题讨论】:
-
我建议你应该尝试使用参数进行插入。这更安全,并且忽略了格式。因此,您可以更轻松地插入日期和时间。否则,您必须处理令人头疼的格式...
-
MS Access 不是 MySQL 或 SQL-Server。请不要使用不恰当的标签。
-
我很抱歉。我在学习这些东西时有点陷入困境,而且我对差异有点模糊,因为我只熟悉基本知识。感谢您的修复。
标签: vba ms-access ms-access-2013