2013-10-31 36 views
2

我剛剛遇到了我的代碼問題。它引發了一個異常。這是代碼。索引超出範圍未處理的異常vb.net

conn = oSubPayItemDescription.GetDbConnection() 
md = New OleDbCommand("SELECT [sub_pay_item_quantity].[quantity],[sub_pay_item_unit_rate].[rate] FROM " & 
    "[sub_pay_item_quantity],[sub_pay_item_unit_rate] WHERE [sub_pay_item_quantity].[sub item]=[sub_pay_item_unit_rate].[sub item] AND " & 
    "[sub_pay_item_quantity].[sub item]='" & subItem & "' AND [sub_pay_item_quantity].[bridge type]='" & bridgeType & "' " & 
    "AND [sub_pay_item_quantity].[span]='" & span & "'", conn) 

data_reader = cmd.ExecuteReader() 

If data_reader.HasRows = True Then 
    Do While data_reader.Read() 
     payItem = CDbl(data_reader.Item("pay item")) 
     subpayItem = CDbl(data_reader.Item("sub pay item")) 
     subItem = data_reader.Item("sub item") 
     unit = data_reader.Item("unit") 
     bridgeType = data_reader.Item("bridge type") 
     span = (data_reader.Item("span").ToString()) 
     quantity = CDbl(data_reader.Item("quantity")) 
     rate = CDbl(data_reader.Item("rate")) 

     RichTextBox1.AppendText(payItem & vbTab & vbTab & " " & " " & subpayItem & vbTab & vbTab & subItem & vbTab & vbTab & " " & _ 
      unit & vbTab & vbTab & " " & " " & " " & " " & bridgeType & vbTab & vbTab & " " & span & vbTab & _ 
      "" & vbTab & " " & quantity & vbTab & rate & vbNewLine) 
    Loop 
Else 
    MsgBox("Unit rate does not exist", vbCritical, "Bridge Construction Cost Estimate") 
End If 

它在到達do while循環時指示付款項目時引發異常。

+0

您只選擇查詢中的數量和範圍,難道不是問題嗎? – Abbas

回答

2

因此指定的名稱不會在DataReaderthe documentation表明存在:

IndexOutOfRangeException:具有指定名稱的列沒有發現

,我不能在查詢中看到此列。您只選擇quantityrate

+0

謝謝蒂姆,我只是修好了它。我沒有意識到這一點。 –