2013-02-21 85 views
0

我想從數據庫檢索數據。我可以連接到數據庫並檢索數據,但是當我嘗試將其放入數據網格時,出現錯誤說明從數據庫插入數據在數據網格在vb.net

索引超出範圍異常未處理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() 

回答

0

您需要在抓取值之前從數據讀取器讀取數據。

If dr.Read 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 
+0

這是什麼代碼完整?我應該用dr.read來代替dr.HasRows ..?對不起,花了這麼長的時間來回應。這是一個大學項目的一部分,只有機會再次憧憬它:-) – Dtoon 2013-02-23 18:48:52