データベースからデータを取得しようとしています。データベースに接続してデータを取得することはできますが、データグリッドに配置しようとすると、次のようなエラーが発生します。
範囲外のインデックスの例外は、未処理のORDERDETAILS.PRODUCTIDでした。
SQLステートメントは機能しますが、データグリッドに入力するためのコードについてはよくわかりません。どんな助けでもいただければ幸いです。
Dim conn As New OleDb.OleDbConnection
conn.ConnectionString = _
"Provider=msdaora;Data Source=orabis;User Id=112221739;Password=112221739;"
conn.Open()
Dim work As Integer
work = CInt(ComboBox1.SelectedItem)
Dim cmd As New OleDbCommand
cmd = conn.CreateCommand()
cmd.CommandText = "SELECT ORDERDETAILS.PRODUCTID,PRODUCTS.PRODUCTDESCRIPTION,ORDERDETAILS.ORDERQUANTITY,ORDERDETAILS. ORDERQUANTITYTOTAL FROM CUSTOMER, ORDERS, ORDERDETAILS, PRODUCTS WHERE CUSTOMER.CUSTOMERID = ? AND CUSTOMER.CUSTOMERID = ORDERS.CUSTOMERID AND ORDERS.ORDERID = ORDERDETAILS.ORDERID AND ORDERDETAILS.PRODUCTID = PRODUCTS.PRODUCTID"
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("?", work)
Dim dr As OleDb.OleDbDataReader
dr = cmd.ExecuteReader()
If dr.HasRows Then
DataGridView1.Rows.Add(CInt(dr.Item("ORDERDETAILS.PRODUCTID")), CStr(dr.Item("PRODUCTS.PRODUCTDESCRIPTION")), CInt(dr.Item("ORDERDETAILS.ORDERQUANTITY")), CInt(dr.Item("ORDERDETAILS.ORDERQUANTITYTOTAL")))
End If
dr.Close()
cmd.ExecuteNonQuery()