ВСЕГДА ИСПОЛЬЗУЙТЕ ПАРАМЕТРЫ!
Когда вы делаете VSQL = "DELETE * FROM [TR] WHERE [TR].ResDate < " & Date
, в зависимости от вашей локали, это может привести к нескольким проблемам.
Например, DELETE * FROM [TR] WHERE [TR].ResDate < 2019-11-08
и 2019 минус 11 минус08 равно 2000, а CDate(2000)
- 1905-06-22, так что это правильный запрос, но, вероятно, он не удалит то, что вы хотите удалить.
В альтернативной локали может быть 11/ 08/2019, и 11, деленное на 8, деленное на 2019, составляет приблизительно 0, а CDATE(0)
- 1899-12-30.
Вместо этого выбирайте из Как использовать параметры в VBA вразличные контексты в Microsoft Access? , например:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Connection = New ADODB.Connection
Connection.ConnectionString = ConnectionString
Connection.Open
VSQL = "DELETE * FROM [TR] WHERE [TR].ResDate < " & Date
With CreateObject("ADODB.Command")
Set .ActiveConnection = Connection
.CommandText = "DELETE * FROM [TR] WHERE [TR].ResDate < ?"
Set RecSet1 = .Execute(, Array(Date))
End With
Connection.Close
Set RecSet1 = Nothing
End Sub