Sql 如何获取Jet OLE DB查询的输入

Sql 如何获取Jet OLE DB查询的输入,sql,excel,scripting,Sql,Excel,Scripting,背景: 我正在使用Excel2003 我有2个Excel文件源,列表,一个基本上是我的源数据。第二个是我使用excel导入外部数据功能获取第二张工作表中的数据。然后,我使用modifiy查询来允许我使用SQL查询我的数据并限制我显示的数据 我的SQL查询: 我的问题是,我想将单元格A1作为查询的输入。所以在A1中,我想让Brent替换第一个WHERE条件 我希望找到一些东西,我将能够改变一个单元格,并能够刷新单元格A1中的任何数据 有人有主意吗 谢谢 我的连接字符串是: 您在查询中错误地忽略了F

背景: 我正在使用Excel2003 我有2个Excel文件源,列表,一个基本上是我的源数据。第二个是我使用excel导入外部数据功能获取第二张工作表中的数据。然后,我使用modifiy查询来允许我使用SQL查询我的数据并限制我显示的数据

我的SQL查询:

我的问题是,我想将单元格A1作为查询的输入。所以在A1中,我想让Brent替换第一个WHERE条件

我希望找到一些东西,我将能够改变一个单元格,并能够刷新单元格A1中的任何数据

有人有主意吗

谢谢

我的连接字符串是:


您在查询中错误地忽略了FROM关键字

因为您正在查询Excel工作簿,所以最好确保它已关闭;如果使用OLEDB,您应该知道。还要注意Excel是如何确定数据类型的,如果出现意外的空值,可能会有点奇怪;更多详情请访问

您尚未指定工作表,因此我假定它的名称为Sheet1

大部分连接字符串由默认值组成,可以删除

因为这是一个编程网站,您正在询问有关Excel的信息,那么一些VBA如何:

Sub ExcelExample()

  Const CONN_STRING As String = _
      "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;" & _
      "Data Source=C:\My Data\Master List\Master List.xls;" & _
      "Mode=Share Deny Write;Extended Properties=""HDR=YES;"";" & _
      "Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";" & _
      "Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;" & _
      "Jet OLEDB:Global Partial Bulk Ops=2;" & _
      "Jet OLEDB:Global Bulk Transactions=1;" & _
      "Jet OLEDB:New Database Password="""";" & _
      "Jet OLEDB:Create System Database=False;" & _
      "Jet OLEDB:Encrypt Database=False;" & _
      "Jet OLEDB:Don't Copy Locale on Compact=False;" & _
      "Jet OLEDB:Compact Without Replica Repair=False;" & _
      "Jet OLEDB:SFP=False"""

  Const SQL_TEXT As String = _
      "SELECT * FROM ['Master List$'] WHERE [Name] Like ?;"

  Dim cmd
  Set cmd = CreateObject("ADODB.Command")

  With cmd
    .ActiveConnection = CONN_STRING
    .CommandText = SQL_TEXT

    Dim param
    Set param = CreateObject("ADODB.Parameter")

    With param
      .Direction = 1  ' adParamInput
      .Type = 202  ' adVarWChar
      .Size = 255
      .Attributes = 64  ' adParamNullable
      .Value = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value & "%"
    End With

    .Parameters.Append param
  End With

  Dim rs
  Set rs = CreateObject("ADODB.Recordset")

  With rs

    Set .Source = cmd
    .Open

    ' Do stuff with recordset...

  End With

End Sub
更新

连接字符串的哪些部分是无用的?大部分!例如,默认用户是Admin,但Jet工作组文件是空字符串,因为Excel不使用Jet安全性。我认为在不改变行为的情况下,连接字符串可以减少如下:

  Const CONN_STRING As String = _
      "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=C:\My Data\Master List\Master List.xls;" & _
      "Extended Properties=""HDR=YES;"";"

你是不是无意中删除了这个问题的最后一部分?我很困惑…连接字符串的哪些部分是无用的?
Sub ExcelExample()

  Const CONN_STRING As String = _
      "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;" & _
      "Data Source=C:\My Data\Master List\Master List.xls;" & _
      "Mode=Share Deny Write;Extended Properties=""HDR=YES;"";" & _
      "Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";" & _
      "Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;" & _
      "Jet OLEDB:Global Partial Bulk Ops=2;" & _
      "Jet OLEDB:Global Bulk Transactions=1;" & _
      "Jet OLEDB:New Database Password="""";" & _
      "Jet OLEDB:Create System Database=False;" & _
      "Jet OLEDB:Encrypt Database=False;" & _
      "Jet OLEDB:Don't Copy Locale on Compact=False;" & _
      "Jet OLEDB:Compact Without Replica Repair=False;" & _
      "Jet OLEDB:SFP=False"""

  Const SQL_TEXT As String = _
      "SELECT * FROM ['Master List$'] WHERE [Name] Like ?;"

  Dim cmd
  Set cmd = CreateObject("ADODB.Command")

  With cmd
    .ActiveConnection = CONN_STRING
    .CommandText = SQL_TEXT

    Dim param
    Set param = CreateObject("ADODB.Parameter")

    With param
      .Direction = 1  ' adParamInput
      .Type = 202  ' adVarWChar
      .Size = 255
      .Attributes = 64  ' adParamNullable
      .Value = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value & "%"
    End With

    .Parameters.Append param
  End With

  Dim rs
  Set rs = CreateObject("ADODB.Recordset")

  With rs

    Set .Source = cmd
    .Open

    ' Do stuff with recordset...

  End With

End Sub
  Const CONN_STRING As String = _
      "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=C:\My Data\Master List\Master List.xls;" & _
      "Extended Properties=""HDR=YES;"";"