0

msaccess に VBA コードを記述して、データ エントリを検証し、障害ログ データベースでの重複を回避しようとしています。文字列データ型(短いテキスト)である stLinkCriteria では機能しますが、日付データ型である stDCriteria では機能しません...この行で「型の不一致」または「データ型の不一致」というエラーがスローされ続けます

stDCriteria = "[datelogged] = #" & DateTime & "#"

コード上にマウスを置くと、stDCriteria に午前 12:00:00 が表示されます

datelogged のデータ型はデータベースの Date/Time ですが...

Private Sub Form_AfterUpdate()
Dim NewTerminal As String
Dim stLinkCriteria As String
Dim DateTime As Date
Dim stDCriteria As Date

NewTerminal = Me.cboTerID.Value
DateTime = Me.txtDateLogged.Value
stLinkCriteria = "[serialptrid] = " & NewTerminal & ""
stDCriteria = "[datelogged] = #" & DateTime & "#"
If Me.SerialptrID = DLookup("[serialptrid]", "Fault_Log", stLinkCriteria) Then
If Me.DateLogged = DLookup("[datelogged]", "Fault_Log", stDCriteria) Then
 MsgBox "This terminal " & NewTerminal & ", " & DateTime & ", has already been entered in this database." _
        & vbCr & vbCr & "Please check terminal selected", vbInformation, "Duplicate information"
        Me.Undo
End If
End If
End Sub
4

1 に答える 1

1

このコードは、文字列値を に代入しようとしますstDCriteria:

stDCriteria = "[datelogged] = #" & DateTime & "#"

したがって、その変数を Date ではなく String として宣言する必要があります。

Dim stDCriteria As String

また、値にyyyy-md形式を適用することもできますDateTimeこの形式により、日付がm/d/ yyyy 形式かd/m/yyyy形式かについての混乱を避けることができます。

stDCriteria = "[datelogged] = #" & Format(DateTime, "yyyy-m-d") & "#"
于 2016-07-19T23:30:25.373 に答える