0

我正在尝试从 Excel 工作表中读取数据,但有一个例外情况,即没有为我不理解的一个或多个必需参数提供值。这是我的代码,直到错误指向的位置:

Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim DtSet As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
MyConnection = New System.Data.OleDb.OleDbConnection _
    ("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\Staff Contracts.xlsx; Extended Properties=""Excel 12.0;HDR=NO""")
MyCommand = New System.Data.OleDb.OleDbDataAdapter _
    ("select * from [Staff Contracts$A4:K14] where I=176", MyConnection)
MyCommand.TableMappings.Add("Table", "TestTable")
DtSet = New System.Data.DataSet
MyCommand.Fill(DtSet)

异常指向最后一行MyCommand.Fill(DtSet),这表明我的 select 语句存在问题。以前,我的代码读取数据并where在 select 中不带子句的情况下显示它,但是当我添加where语句以便它只能从列I的值等于 176 的行中读取数据时,它会给出一个异常,表明一些需要参数缺少值

4

1 回答 1

2

在 HDR = NO 的情况下,I 列将变为 F9,因为 oledb 将列命名为 F1.. Fn 作为内部参考。

MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Staff Contracts$A4:K14] where F9=176", MyConnection);

在这种情况下,OLEDB 驱动程序将为选择中的每一列(F1 到 Fn)创建列名。因此,如果您将范围“A4:K14”更改为“B4:K14”,则 F9 列将为 F8。

于 2012-05-04T12:52:03.643 回答