【问题标题】:Dynamic Query of a SQL table in ExcelExcel中SQL表的动态查询
【发布时间】:2015-08-24 22:59:15
【问题描述】:

所以过去几天我一直在努力解决这个问题,我真的很想找到一个解决方案。

我正在做的是进入 excel 中的数据选项卡并从我的 SQL 服务器获取外部数据(我将提供指向我的数据库的链接)。然后我选择 Products 表,现在该表显示在我的电子表格中。现在我要做的是打开连接选项卡,然后单击我连接到的表,然后转到表属性和定义选项卡。在命令类型下,我将其更改为 SQL。在命令文本中,我想输入一个动态查询。这个动态查询的作用是在 Sheet2 单元格 a1 中输入一个类别,在单元格 a2 中输入该类别的一些属性。例如,对于数据,我让您为类别输入 categoryid,为您输入 1 的属性输入 1,然后查询工作表 1,因此它显示 productid、productname、supplierid、categoryid、unitprice 和所有具有 categoryid 1 的产品的停产。

我写了一些我想输入到命令文本中的东西,但它不起作用: SELECT * FROM "TSQL2012"."Production"."Products" WHERE [sheet2$a1] = [sheet2$a2];

数据库: File

解压,就是TSQL2012 DB

如果您还有其他需要或有任何疑问,请发布。这是我需要解决这个问题的方法,所以很遗憾其他解决方案将无济于事。

【问题讨论】:

  • 你说那行代码不起作用。会发生什么,您必须运行 Parameter Query 的其余代码是什么?
  • 我将代码更改为:SELECT * FROM "TSQL2012"."Production"."Products" WHERE categoryid IN (SELECT * FROM [sheet2$a1:a2]) 我得到一个无效的现在的对象名称。
  • 我认为我正在尝试做的与这个问题的答案非常相似:'stackoverflow.com/questions/1285686/…'
  • 我认为TSQL2012ProductionProducts 周围不需要任何引号。只是TSQL2012.Production.Products 应该可以工作,或者[TSQL2012].[Production].[Products] 也应该可以工作
  • barrowc,不幸的是仍然无法正常工作。它仍在做同样的事情。我得到的错误是无效的列 ID,当我更改我的代码时,我得到一个无效的对象 ID

标签: sql database excel dynamicquery


【解决方案1】:

嗯,可以尝试在单元格更改上执行 vba 吗?

https://msdn.microsoft.com/en-us/library/office/ff821552.aspx

.CommandText = _ "从 Products Where 中选择 ProductID" & Range("A1").value & " = " Range("A2").value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    相关资源
    最近更新 更多