Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MS Excel中导入SQL数据库表后使用VBA创建动态查询_Sql_Excel_Vba - Fatal编程技术网

在MS Excel中导入SQL数据库表后使用VBA创建动态查询

在MS Excel中导入SQL数据库表后使用VBA创建动态查询,sql,excel,vba,Sql,Excel,Vba,这是一个困扰了我几天的问题,也是我一直在努力解决的问题。不幸的是,我对这方面的工作还很陌生,没有太多的资源来解决这个问题,所以如果我不清楚或者你有问题,请发表评论 我试图解决的问题是: 从SQL Server获取外部数据并在电子表格中拥有一个表后,例如,该表称为Products,并具有productid(a列)、productname(B列)、supplierid(C列)和categoryname(D列)列。有没有一种方法可以定义一个单元格,比如E1,在这里您可以使用VBA创建一个动态查询。在这

这是一个困扰了我几天的问题,也是我一直在努力解决的问题。不幸的是,我对这方面的工作还很陌生,没有太多的资源来解决这个问题,所以如果我不清楚或者你有问题,请发表评论

我试图解决的问题是:

从SQL Server获取外部数据并在电子表格中拥有一个表后,例如,该表称为Products,并具有productid(a列)、productname(B列)、supplierid(C列)和categoryname(D列)列。有没有一种方法可以定义一个单元格,比如E1,在这里您可以使用VBA创建一个动态查询。在这个动态查询中,您将输入categoryname的一些值,它将在其中查询表,并给出结果?

下面是一个可能会有所帮助的示例

它开始使用VBA进行过滤


不久前我在寻找类似的东西时发现了它,希望它能有所帮助。

不使用任何VBA就可以执行动态查询

将表基于“来自Microsoft查询”(在“数据”选项卡上的“获取外部数据”组下)。使用查询向导生成查询,选择感兴趣的表列。在“查询向导-筛选数据”选项卡上,您通常会说特定列必须具有特定值,而不是特定值,请仅使用问号(对于需要用于筛选的任何和所有列)。当您将数据返回Excel时,系统将提示您为每个参数“输入参数值”?你用过。在这个阶段只需单击OK

当Excel“导入数据”对话框出现时,单击“属性…”。在“定义”选项卡上,单击标有“参数…”的按钮。对于每个参数,选择“从以下单元格获取值”和“当单元格值更改时自动刷新”。单击红色箭头按钮(选择单元格),然后单击每个参数将从中获取其值的单元格


在每个单元格旁边都有一个标签是一个好主意,可能还有数据输入单元格的特殊格式。结果表可以与参数输入单元格位于同一工作表中,当您在输入单元格中输入值时,将运行新的查询并显示结果。

您在考虑哪种查询?也许2-3个例子真的有用是的,这是可能的。您是否可以更具体一点,或者分步编写检索表后要执行的操作?动态查询应该是什么样子的?应该是从数据库中检索另一组数据并将其粘贴到列E?@mehow。因此,当您在电子表格中有现有表,并且没有在该特定单元格中键入任何内容时,电子表格将显示该表中的所有数据(productid、productname、supplierid、categoryname)。当您在该单元格中输入值时,它应该查询您拥有的表,并将该表更改为查询结果。例如,假设有三种不同的产品类别。有电子设备、办公室和存储设备。当您在该单元格中键入storage时,新表将显示storage类别中的每个产品以及所有A、B、C、D列。听起来就像自动筛选一样。你试过了吗?