Я действительно надеюсь, что кто-то здесь может помочь мне с проблемой, которую я потратил часы, пытаясь исправить без результата.Microsoft Query in Excel VBA - как передать фильтры даты
Я пытаюсь установить соединение передачи данных с файлом csv с использованием запроса MS в Excel VBA. Мне нужно отфильтровать данные из файла csv в электронную таблицу, применив фильтр даты в определенном столбце. Когда дата фиксирована (т. Е. Жестко закодирована в VBA), соединение работает абсолютно нормально. Тем не менее, я хотел бы, чтобы дата была пользователем, и именно там я столкнулся с проблемами. В принципе, я не уверен, как передать переменную даты в соединение.
Когда макрос работает нормально, то SQL заявление выглядит следующим образом:
.CommandText = "SELECT * FROM " & csvName & " WHERE SECTYPE='GS' AND LAST TRADED DATE={ts '2016-01-29 00:00:00'}"
Когда я пытаюсь передать дату с помощью переменной sValnDate, я получаю 'ошибка синтаксиса SQL':
.CommandText = "SELECT * FROM " & csvName & " WHERE SECTYPE='GS' AND LAST TRADED DATE={ts " & sValnDate & "}"
Я пробовал несколько конфигураций переменной. Я попытался передать его как дату, строку точно так же, как в правильной команде, дату, отформатированную, как требуется в правильной команде, сохранение и удаление фигурных скобок с каждым форматом переменной и т. Д., Но ничего не получилось.
Я только что представил здесь 1 заявление, чтобы все было просто. Однако, если вам нужно увидеть весь блок (не более 15-20 строк), сообщите мне.
Заранее спасибо
PS: просто смотрел на предварительный просмотр. Так или иначе, `` LAST TRADED DATE были удалены здесь.
Вы пробовали следующий 'CDate (sValnDate)' или 'Format (sValnDate, "дд-ммм-уу")' любой из них может работать как возможный, чтобы переменная, содержащая дату, не была должным образом отформатирована. – izzymo
Спасибо. Просто попробовал оба, с и без «{ts}», но никто не работал. Если я использую cDate без фигурных скобок, 'LAST TRADE DATE' = cDate (sValnDate), макрос запускается, но не извлекает никаких записей. – KMLN