我正在尝试在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
答案 0 :(得分:3)
在Access SQL中,日期必须用八角星括起来,并用mm/dd/yyyy
或yyyy-mm-dd
格式。这里的主要错误是用引号而不是八溴索普。
SQL1 = ("DELETE dbo_Subjects.*, dbo_Subjects.Date_Created FROM dbo_Subjects " & _
"WHERE (((dbo_Subjects.Date_Created)>=#" & strLastImportStamp & "#));")
或者,您可以use parameters or TempVars,但这确实需要将其作为实际日期。