Я пытаюсь создать опцию в моей базе данных Access, которая удаляет все записи между 2 датами.
I код, который я имею ниже, кажется, не работает последовательно.Например, если в моей базе данных есть даты с 01.01.18 по 30.01.18, а указанный диапазон точно равен 01.01.18-30.01-18, то она работает и удаляет все данные.
Но если я укажу любой другой диапазон дат (например, 01/01 - 01/15), он потерпит неудачу, и никакие записи не будут удалены.
[Дата сделки] в коротком текстовом формате вместо даты, но все записи представлены в ММ / ДД / ГГ.Предпочел бы сохранить это таким образом, если это не проблема, и нет других альтернатив.
Пожалуйста, дайте мне знать, что я делаю неправильно или могу сделать лучше.Заранее спасибо.
Dim trFrmDat As String
Dim trToDat As String
Dim dbsDelete As DAO.Database
Dim qdfToDelete As DAO.QueryDef
Dim countString As String
Dim count As Long
Set dbsDelete = CurrentDb
trFrmDat = InputBox("Trade Date To Be Deleted From [MM/DD/YY]:")
trToDat = InputBox("Trade Date To Be Deleted To [MM/DD/YY]:")
If Len(trFrmDat) <> 8 Or Len(trToDat) <> 8 Then
MsgBox ("The correct date or answer has not been entered. Process Aborted.")
Exit Sub
Else
countString = "SELECT COUNT(PK_ID) FROM AR_Consolidated WHERE [Trade Date] BETWEEN " & trFrmDat & " AND " & trToDat & ""
count = dbsDelete.OpenRecordset(countString).Fields(0).Value
Set qdfToDelete = dbsDelete.CreateQueryDef("", "DELETE FROM AR_Consolidated WHERE [Trade Date] BETWEEN " & trFrmDat & " AND " & trToDat & "")
qdfToDelete.Execute dbFailOnError
MsgBox ("" & count & " records have been deleted from AR_Consolidated")
End If
РЕДАКТИРОВАТЬ:
В итоге я воспользовался одним из предложенных ниже советов, но все еще имел проблемы с форматированием даты, поэтому я признал, что не могу сохранить фактическое поле в виде короткого текста.Я только что ввел alter line и все работает отлично.
DoCmd.RunSQL "ALTER TABLE AR_Consolidated ALTER COLUMN [Trade Date] Datetime"