"Я думал, сравнивая строки в строку?"
DateCreated
возвращает значение даты/времени, поэтому сравнение DateCreated <= formatteddate
сравнивает дату/время, чтобы значение String.
Однако это не является причиной ошибки # 3421, «Ошибка преобразования типа данных».
В CurrentDb.TableDefs(Item)
, Пункт должен быть порядковый номер по TableDef
«s или Имя собственности. (Смотрите тему TableDefs Коллекция в справочной системе Access'.)
Но вы даете ему TDF, а TableDef
объект, так как Пункт. Это несоответствие вызывает ошибку. Вы могли бы избежать ошибок путем подачи tdf.Name для Пункта:
CurrentDb.TableDefs(tdf.Name).DateCreated
Однако, поскольку у вас уже есть TDF, нет необходимости возвращаться к CurrentDb.TableDefs
... просто попросить tdf.DateCreated
непосредственно.
Это приведет к исчезновению ошибки, но вы не получите никаких результатов при сравнении DateCreated
с formatteddate Строковое значение. Решением этой проблемы является сравнение tdf.DateCreated
с датой/временем.
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim dte As Date
Set db = CurrentDb
dte = #1/1/2015#
For Each tdf In db.TableDefs
If tdf.DateCreated <= dte Then
Debug.Print tdf.Name, tdf.DateCreated
End If
Next
Set db = Nothing
Set tdf = Nothing
'dte' является датой:' Dim dte As Date'. – Bond
Является ли ошибка в этой строке: 'If (CurrentDb.TableDefs (tdf) .DateCreated <= formatteddate) Then'? Какой тип данных «DateCreated»? – Bond
@ HansUp, который получил это! Как удалить таблицу, если параметры выполнены? –