4

データベースへの変更の簡単な説明を記録する監査ログを実装中です。私の監査テーブルは、autonumber PK、empID(番号)、Description(メモ)、および 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)

先ほど言ったように、最初の 3 つの値は問題なく取得できますが、日時を挿入しようとすると問題が発生します。どんな入力でも大歓迎です。この質問を送信する前に、引用符の配置の約 4 つのバリエーションを試したので、これが誤った引用符の配置ほど単純ではないことを願っています :)

4

2 に答える 2

8

このようにしてみてください。

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\#") & ")"
于 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 に答える