代码之家  ›  专栏  ›  技术社区  ›  Jimmy

在excel的SQL查询中放入VBA变量

  •  0
  • Jimmy  · 技术社区  · 6 年前

    我有这样的代码:

    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”,它已经是mm/dd/yyyy格式了。所以我试着把这个放进去作为替代品,但却丢失了格式化部分。这就是我的结局:

    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 回复  |  直到 6 年前
        1
  •  3
  •   Mathieu Guindon    6 年前

    没有什么奇怪的,您已经将一个变量嵌入到您的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 & "#"
    

    另外,不需要使用括号 () 我用换行符格式化了它,以简化可读性。

    accepted answer