如何将日期变量编码到Access SQL语句中

时间:2018-07-11 19:18:40

标签: sql ms-access access-vba

我正在尝试在Access中做一些真正简单的事情,但似乎无法使它正常工作。我已经在线研究了答案,并尝试了许多建议的方法,这些建议使此代码在VBA中运行,但无济于事。

Me.txtImportStartGeneralDate中的值为'7/11/2018 2:27:19 PM' 当我使用Access查询设计创建删除查询时,它会完全删除记录。但是,下面的VBA代码中的SQL语句会引发运行时错误3464。

我已经尝试过在通用日期格式周围加上或不加上井号。 我试图使用CDate()转换日期/时间。 我尝试用下面的方法替换变量, “&Me.txtImportStartGeneralDate&” ,似乎没有任何作用。

Private Sub cmdUndoImport_Click()

    MsgBox "Are you sure you want to do this?", vbOKCancel, "THIS CANNOT BE UNDONE!!!"

    strLastImport = Me.txtImportStartGeneralDate
    strLastImportStamp = "#" & strLastImport & "#"
    DoCmd.SetWarnings False
    SQL1 = ("DELETE dbo_Subjects.*, dbo_Subjects.Date_Created FROM dbo_Subjects " & _
                "WHERE (((dbo_Subjects.Date_Created)>='" & strLastImportStamp & "'));")

    DoCmd.RunSQL SQL1
    SQL2 = ("DELETE dbo_Specimens.*, dbo_Specimens.Date_Created FROM dbo_Specimens " & _
                "WHERE (((dbo_Specimens.Date_Created)>='" & strLastImportStamp & "'));")
    DoCmd.RunSQL SQL2
    SQL3 = ("DELETE dbo_Samples.*, dbo_Samples.Date_Created FROM dbo_Samples " & _
                "WHERE (((dbo_Samples.Date_Created)>='" & strLastImportStamp & "'));")
    DoCmd.RunSQL SQL3
End Sub

1 个答案:

答案 0 :(得分:3)

在Access SQL中,日期必须用八角星括起来,并用mm/dd/yyyyyyyy-mm-dd格式。这里的主要错误是用引号而不是八溴索普。

SQL1 = ("DELETE dbo_Subjects.*, dbo_Subjects.Date_Created FROM dbo_Subjects " & _
                "WHERE (((dbo_Subjects.Date_Created)>=#" & strLastImportStamp & "#));")

或者,您可以use parameters or TempVars,但这确实需要将其作为实际日期。

相关问题