str SQL в диапазоне дат Excel VBA - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь запустить str SQL в Excel VBA между двумя диапазонами дат.

См. Ниже часть моего кода, относящуюся к этому:

Dim DateMin As String
Dim DateMax As String

DateMin = Format$(Sheets("Setup").Range("c5").Value, "mm/dd/yyyy")        
DateMax = Format$(Sheets("Setup").Range("c6").Value, "mm/dd/yyyy")

strSQL = "SELECT [COSTCENTRE_CODE],[PROJECT_CODE],[HOME_VALUE],[CT_DEADLINE] FROM [AA_CST_CENTRE_TRANSACTION_SIMPLE_VIEW] where [CT_DEADLINE] between #" & DateMin & "# AND #" & DateMax & "#"

Когда я запускаю это Я получаю ошибку "неправильный синтаксис nea '#'". Формат ячеек C5 + C6 в том же формате мм / дд / гггг - я использую американский формат даты, так как, как вы считаете, SQL использует только американские даты? Я попытался изменить даты, но безуспешно.

Когда я запускаю "debug.print str sql", я получаю следующее:

SELECT [COSTCENTRE_CODE],[PROJECT_CODE],[HOME_VALUE],[CT_DEADLINE] FROM [AA_CST_CENTRE_TRANSACTION_SIMPLE_VIEW] where [CT_DEADLINE] between #02/01/2020# AND #03/31/2020#

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

У кого-то есть какие-либо идеи, поскольку они считают, что это проблема SQL, а не Excel Выпуск VBA?

1 Ответ

1 голос
/ 21 апреля 2020

Работает ли этот SQL работает? SELECT [COSTCENTRE_CODE],[PROJECT_CODE],[HOME_VALUE],[CT_DEADLINE] FROM [AA_CST_CENTRE_TRANSACTION_SIMPLE_VIEW] просто чтобы убедиться, что проблема в части даты, а не раньше. Если это не работает, то проблема в этой части, а не в части даты.

И я считаю, что SQL использует YYYY-MM-DD hh:mm:ss.sss в качестве формата даты. Проверьте это, если вы выполнили первый предложенный тест и этот запрос выполняется.

И, насколько мне известно, только Access принимает #, но на SQL -Server вы бы вместо этого использовали ' (что также должно работать для Access).

Также обратите внимание, что

BETWEEN '02/01/2020' AND '03/31/2020'

на самом деле:

BETWEEN '02/01/2020 00:00:00.000' AND '03/31/2020 00:00:00.000'

Итак, обратите внимание, что вы упускаете все, что произошло после 12:00. на 03/31/2020.

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