【问题标题】:ADODB connection parameter issueADODB 连接参数问题
【发布时间】:2018-03-20 20:35:57
【问题描述】:

我收到错误

预期的参数太少 1

在下一行。请帮忙

mrs.Open sSQLSting, Conn, 3, 1

完整编码

Dim Conn As New adodb.Connection
Dim mrs As New adodb.Recordset
Dim DBPath As String, sconnect As String
DBPath = ThisWorkbook.FullName
sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
Conn.Open sconnect
sSQLSting = "SELECT * From [DataSheet$A1:D5325] where [Vertical Name]= '" & Sheets(1).ComboBox1.List(i) & "'"
mrs.Open sSQLSting, Conn, 3, 1
Sheets("Sheet4").Cells(lastrow, 4).Value = mrs.RecordCount
mrs.Close
Conn.Close

【问题讨论】:

  • HDR=Yes' 认为这需要是Extended Properties="HDR=Yes"

标签: vba excel adodb


【解决方案1】:

是的,错误信息不是很直观:(

那是因为当你的 SQL 查询中的字段名称与表字段名称不匹配时:

预期的参数太少 1

表示您在 SQL 语句中使用的 1 字段名在您的表中不可用。

所以可能不存在名为Vertical Name 的字段!


我还强烈建议使用Option Explicit 并正确声明所有变量以避免变量名输入错误:例如。 sSQLSting 显然是 sSQLString。如果你不使用Option Explicit,你很快就会遇到问题。

【讨论】:

    【解决方案2】:

    在我的评论之外,我已经模拟了一些虚拟数据,以及以下工作

    Sub Data_Extract()
    
    Dim c As New ADODB.Connection
    Dim r As New ADODB.Recordset
    Dim s As String
    
    s = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Workspace\Dummy Data\SAMPLE_GENERAL.xlsx;" & _
            "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
    
    c.Open s
    
    r.Open "Select * from [Sheet1$A1:E5] where [field 1]='b'", c, 3
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 2011-10-19
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      相关资源
      最近更新 更多