【问题标题】:Use Cell Range As Where Values in a Data Connection to SQL Server将单元格区域用作与 SQL Server 的数据连接中的值
【发布时间】:2013-01-30 18:15:28
【问题描述】:

我正在使用 Excel 中的一个工具来快速验证对一组数据库的数据更新。

在表 1 中,我将拥有源数据,它由 5 列组成; A 列是主键。这以 CSV 格式提供并复制/粘贴到工作表中。

在工作表 2 中,我希望与数据库机器建立数据连接,以过滤工作表 1 的 A 列的值,以便仅返回和显示工作表 1 中的那些主键。

我尝试在“连接属性”对话框中查看设置参数,但该按钮被禁用:

提前谢谢你。

编辑:这是 Excel 2010,这张图片显示了我用来在工作表 2 上创建连接的方法:

编辑 2:尝试使用 Microsoft Query 创建连接,但仍处于禁用状态。

【问题讨论】:

  • 您是如何在 Sheet2 上建立连接的?这是什么版本的 Excel?
  • @RBarryYoung 已编辑以包含此信息。

标签: sql-server excel excel-2010


【解决方案1】:

您只能使用 Microsoft Query 在 Excel 中添加和管理查询参数。因此,当您创建连接时,在“来自其他来源”按钮下拉菜单中,选择“来自 Microsoft Query”而不是“来自 SQL Server”(或任何其他来源)。

【讨论】:

  • 我已使用 Microsoft Query 创建了连接,但“参数”按钮仍处于锁定状态。 i.imgur.com/lQPppqS.png
  • 您是否编辑了查询文本以首先为您的参数添加问号(“?”)?
  • 在“where code = ?”执行此操作后,会出现“参数”按钮,但它似乎只允许我从单个单元格而不是范围获取参数。 i.imgur.com/9EJSV1s.png
  • 是的,没错。直到最近,SQL 参数还必须是标量值。即,单个数字、字符串或日期,它们不能是列表、数组或任何其他数据结构。新功能(将表格/列表作为参数发送)只能从 Excel 不使用的 ADO.Net 访问。所以是的,只有单个单元格可以是查询参数,而不是范围。
  • 要在 Excel 中执行此操作,您必须编写一个 Excel-VBA 过程,该过程将从 Range 中提取所有键值,然后将它们全部发送到数据库(使用一种 kludgy 方法或另一个),以便 SQL 可以比较它们并返回匹配项。
【解决方案2】:

您可以将查询参数添加到 SQL Query 以及 Microsoft Queries,只需在 SQL 查询中放置一个?,参数按钮就会变为活动状态,或者下次连接时会显示一个对话框提示输入数据刷新。

看起来可以使用多个参数,但是我还没有找到它们的有效语法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    相关资源
    最近更新 更多