4

我正在实施审计日志以记录对数据库更改的简要说明。我的审计表由自动编号 PK、empID(number)、Description(memo) 和 auditDate(date/time) 组成。我的 empID 和描述被正确插入而没有抛出错误,但我的日期/时间没有被插入。我在想这可能不像放错引号那么简单。我的 VBA 代码如下:

在 afterInsert 事件中:

Dim strQuery As String
'Dim js As Integer
Dim currDateTime As Date
currDateTime = Now()


strQuery = "INSERT INTO Audits ([emp Number], Description, dateofAudit) VALUES (" & Me.empID & ", '" & "insertion" & "'," & currDateTime & " )"


CurrentDb.Execute (strQuery)

就像我说的,我可以很好地获得前三个值,但是当我尝试插入日期时间时,我遇到了问题。任何输入表示赞赏。希望这不像放错引号那么简单,因为我在提交这个问题之前尝试了大约 4 种引号放置的变体:)

4

2 回答 2

8

试试这个方法。

strQuery = "INSERT INTO Audits ([emp Number], [Description], dateofAudit)" & _
    vbCrLf & "VALUES (" & Me.empID & ", 'insertion', Now())"

也给自己一个检查完成的文本字符串的机会。

Debug.Print strQuery 

使用这种方法,您将不需要您的currDateTime变量。日期/时间值将在数据库引擎评估Now()函数时确定......INSERT执行语句的时间。

如果您希望按照原始方法设置时间,请格式化currDateTime并添加#分隔符。

strQuery = "INSERT INTO Audits ([emp Number], [Description], dateofAudit)" & _
    vbCrLf & "VALUES (" & Me.empID & ", 'insertion', " & _
    Format(currDateTime, "\#yyyy-mm-dd hh:nn:ss\#") & ")"
于 2012-06-18T14:16:26.687 回答
0

尝试像这样格式化日期时间:

protected DateTime GetDateWithoutMilliseconds(DateTime d)
    {
        return new DateTime(d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);
    }
于 2016-08-25T18:02:03.953 回答