我正在尝试从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语句存在问题。以前我的代码读取数据并在select中显示它而没有where
子句但是当我添加where
语句时它只能从列I
具有的{{1}}列中读取数据值等于176,它反而给出一个异常,表明某些必需参数缺少值
答案 0 :(得分:2)
如果HDR = NO,我的列将变为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。