Я записал макрос, который работает нормально, но я хочу использовать динамическую дату, поэтому мне не нужно вводить ее каждый раз. Я хочу использовать оператор WHERE
для извлечения записей между сегодняшним днем и годом ранее. Когда я записывал макрос, мне приходилось указывать конкретные диапазоны дат, и я хочу заменить метку времени чем-то динамическим, но CURRENT_DATE
не работал (ошибка синтаксиса) и TIMESTAMPADD(SQL_TSI_YEAR, -1, CURRENT_DATE)
не работал (ошибка синтаксиса). Макрос записан так:
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"ODBC;DRIVER={Centura SQLBase 3.5 32-bit Driver -NT & Win95};UID=ODBC;;DB=CAM32;SRVR=01CAM001A" _
, Destination:=Range("$A$1")).QueryTable
.CommandText = Array( _
"SELECT SALES_LOG_DETAIL.STORE_NUMBER, SALES_LOG_DETAIL.DATE_TIME, SALES_LOG_DETAIL.ITEM_NUMBER, SALES_LOG_DETAIL.QUANTITY, SALES_LOG_DETAIL.PRICE_PAID" & Chr(13) & "" & Chr(10) & "FROM SYSADM.SALES_LOG_DETAIL SALES_LOG_DETAIL" & Chr(13) & "" & Chr(10) & "W" _
, _
"HERE (SALES_LOG_DETAIL.STORE_NUMBER>=2 And SALES_LOG_DETAIL.STORE_NUMBER<=11) AND (SALES_LOG_DETAIL.DATE_TIME>={ts '2017-09-11 00:00:00'} And SALES_LOG_DETAIL.DATE_TIME<={ts '2018-09-11 00:00:00'})" & Chr(13) & "" & Chr(10) & "O" _
, "RDER BY SALES_LOG_DETAIL.STORE_NUMBER, SALES_LOG_DETAIL.ITEM_NUMBER")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Table_Sales_Log_All_Stores"
.Refresh BackgroundQuery:=False
End With
Я понятия не имею, почему он форматирует его таким образом, но когда я пытаюсь изменить его, я получаю ошибки. Как мне изменить этот код временной метки на что-то, что будет вытягивать текущую дату, а также оглядываться назад на один год?