Поместите переменную VBA в SQL-запрос в Excel - PullRequest
0 голосов
/ 04 октября 2018

У меня есть этот код, который работает:

sqlQuery = ("SELECT monthdata.VAL, monthdata.MONTHVAL, monthdata.GREEN, monthdata.RED, monthdata.RAG, monthdata.CREATOR FROM data LEFT JOIN monthdata ON data.UID = monthdata.DATAUID WHERE [UID] = '" & (IDcell) & "' AND [MONTHVAL] = #" & Format((month1), "mm/dd/yyyy") & "#")

Я особенно заинтересован в конце, то есть этот бит:

[MONTHVAL] = #" & Format((month1), "mm/dd/yyyy") & "#")

У меня теперь есть переменная "month1formatted", котораяуже в формате мм / дд / гггг.Поэтому я попытался вставить это в качестве замены и потерять бит форматирования.Это то, что я закончил:

sqlQuery = ("SELECT monthdata.VAL, monthdata.MONTHVAL, monthdata.GREEN, monthdata.RED, monthdata.RAG, monthdata.CREATOR FROM data LEFT JOIN monthdata ON data.UID = monthdata.DATAUID WHERE [UID] = '" & (IDcell) & "' AND [MONTHVAL] = month1formatted"

Однако, удушье, это не работает.Я помещаю переменную в конце неправильно?

Когда я печатаю переменную sqlQuery, она печатает текстовое имя переменной (i.e AND [MONTHVAL] = month1formatted), а не значение переменной, но я знаю переменнуюустановлен правильно

1 Ответ

0 голосов
/ 04 октября 2018

Ничего странного в этом нет, вы добавили в строку SQL переменную, о которой ваш движок SQL ничего не знает.

Замените Format((month1), "mm/dd/yyyy") в исходной строке на month1formatted в новой строке иВолшебство случится.

sqlQuery = "SELECT monthdata.VAL, monthdata.MONTHVAL, monthdata.GREEN, " & _
           "       monthdata.RED, monthdata.RAG, monthdata.CREATOR " & _
           "  FROM data " & _
           "       LEFT JOIN monthdata ON data.UID = monthdata.DATAUID " & _
           " WHERE [UID] = '" & IDcell & "' " & _
           "  AND [MONTHVAL] = #" & month1formatted & "#"

Кроме того, нет необходимости заключать в скобки () вокруг вашего строкового литерала, и я отформатировал его с помощью разрывов строк, чтобы упростить читаемость.

Да, и сделайтекак поручил Коминтерн и параметризовал запрос!Этот принятый ответ является хорошим примером того, как это сделать.

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