将当前DateTime插入Audit表

时间:2012-06-18 14:10:05

标签: ms-access access-vba

我正在实施审核日志以记录对数据库所做更改的简要描述。我的审计表包括自动编号PK,empID(编号),描述(备忘录)和auditDate(日期/时间)。正确插入我的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种引号放置:)

2 个答案:

答案 0 :(得分:6)

以这种方式试试。

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

同时让自己有机会检查完成的文本字符串。

Debug.Print strQuery 

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

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

strQuery = "INSERT INTO Audits ([emp Number], [Description], dateofAudit)" & _
    vbCrLf & "VALUES (" & Me.empID & ", 'insertion', " & _
    Format(currDateTime, "\#yyyy-mm-dd hh:nn:ss\#") & ")"

答案 1 :(得分:0)

尝试格式化日期时间,如下所示:

protected DateTime GetDateWithoutMilliseconds(DateTime d)
    {
        return new DateTime(d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);
    }