Sco*_*tch 3 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)
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,我可以很好地得到前三个值,但是当我尝试插入日期时间时,我遇到了问题.任何输入都表示赞赏.希望这不像错放引号那么简单,因为我在提交此问题之前尝试了4种引号放置变体:)
试试这种方式.
strQuery = "INSERT INTO Audits ([emp Number], [Description], dateofAudit)" & _
vbCrLf & "VALUES (" & Me.empID & ", 'insertion', Now())"
Run Code Online (Sandbox Code Playgroud)
还要给自己一个检查完成的文本字符串的机会.
Debug.Print strQuery
Run Code Online (Sandbox Code Playgroud)
使用这种方法,您不需要您的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\#") & ")"
Run Code Online (Sandbox Code Playgroud)