Использование VBA для Excel. Извлечение данных из ODBC SQL. Как использовать значение «за год до сегодняшнего дня»? - PullRequest
0 голосов
/ 17 октября 2019

Я записал макрос, который работает нормально, но я хочу использовать динамическую дату, поэтому мне не нужно вводить ее каждый раз. Я хочу использовать оператор 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

Я понятия не имею, почему он форматирует его таким образом, но когда я пытаюсь изменить его, я получаю ошибки. Как мне изменить этот код временной метки на что-то, что будет вытягивать текущую дату, а также оглядываться назад на один год?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...