0

Excel シートからデータを読み取ろうとしていますが、理解できない 1 つ以上の必須パラメーターに値が指定されていないという例外があります。エラーが指している場所までの私のコードは次のとおりです。

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 ステートメントに問題があることを示す最後の行を示しています。以前は、私のコードはデータを読み取り、whereselect の句なしで表示していましたが、whereステートメントを追加して、列Iの値が 176 に等しい行からのみデータを読み取ることができるようにすると、代わりに例外が発生し、一部が必要であることを示します。パラメータに値がありません

4

1 に答える 1

2

HDR = NO の場合、oledb は列に F1.. Fn という名前を付けて内部参照するため、I 列は F9 になります。

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 に答える