如何通过Excel更改SQL WHERE子句?

时间:2019-05-17 13:22:03

标签: sql excel vba

我已经构建了一个SQL查询来向我提供产品的历史价格数据,我打算在excel中使用它(数据点,图形,所有这些花哨的excel东西)。

现在的问题是,由于许多产品的性质和许多价格变化,我无法加载我打算加载的所有产品。

我某种程度上需要告诉excel,必须在连接的SQL查询中更改几个数字,即通过文本框,然后再次加载查询。否则,我将始终在excel中打开查询编辑器并手动进行更改,这会花费很多时间。

我认为我将不得不使用某种宏或VBA,但我从未使用过。如果有人能推荐一篇很棒的文章,因为我找不到任何帮助。

某些代码:

  WHERE


 PD.Product_Id = '11761476'  < I will have to change that number  


AND

PSPH.[Valid_To] > '2018-01-01'


ORDER BY 
PSPH.[Valid_To]

2 个答案:

答案 0 :(得分:0)

要操作SQL 字符串 ,您可以执行以下操作。.

pid = "11761476"
validto = "2018-01-01"

SQLtemplate = "WHERE PD.Product_Id = '[prodID]' AND PSPH.[Valid_To] > '[validto]' ORDER BY PSPH.[Valid_To]"

Sql = Replace(SQLtemplate, "[prodID]", pid)
Sql = Replace(Sql, "[validto]", validto)

但是在使用它之前,您需要遵循@Foxfire的建议,并在手动更改宏时记录一个宏,以查看需要更改的内容以及更改的方式。

答案 1 :(得分:0)

您可以将其放在连接中:

WHERE
PD.Product_Id = '11761476'  < ? 
AND
PSPH.[Valid_To] > '2018-01-01'
ORDER BY 
PSPH.[Valid_To]

然后保存连接。

它第一次运行时,会出现一个提示,询问您在哪里可以找到参数,您可以选择单元格。

让我知道它是否有效!

干杯

Arnaud