2015-03-13 142 views
-1

當我嘗試執行下面顯示的SQL查詢時,我得到一個IndexOutOfRangeException。我無法弄清楚爲什麼它在其他SO頁面上說它可能是因爲你試圖從一個不存在的字段獲取數據,但我確信它存在,並且當我將兩個請求字段從「 ADRES「和」TAAL「改爲」LEV「,就像上面那個只有2個底部的那個會拒絕工作,而對於」LEV「的最高要求仍然有效。 「ADRES」是8 LONG VARCHAR和「塔爾」是1個LONG VARCHAR場SQL索引超出範圍例外

try 
{ 
    //BESTEL,[PLAN],LEV,ADRES,TAAL 
    SqlCommand getlist = new SqlCommand("select * from BESW where [email protected]", Connectie.connMEVO); 
    getlist.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr; 
    DRorder = getlist.ExecuteReader(); 
    while (DRorder.Read()) 
    { 
    dateTimePicker1.Value = Convert.ToDateTime(DRorder["BESTEL"]); 
    dateTimePicker2.Value = Convert.ToDateTime(DRorder["PLAN"]); 
    comboBox1.Text = DRorder["LEV"].ToString(); 
    comboBox2.Text = DRorder["ADRES"].ToString(); 
    textBox8.Text = DRorder["TAAL"].ToString(); 
    } 
} 
catch (Exception er) { MessageBox.Show("" + er); } 

編輯:看來,如果我分裂了查詢像圖所示它的作品,我真的不明白這是爲什麼。

try 
{ 
    //BESTEL,[PLAN],LEV,ADRES,TAAL 
    SqlCommand getlist = new SqlCommand("select BESTEL,[PLAN],ADRES from BESW where [email protected]", Connectie.connMEVO); 
    getlist.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr; 
    DRorder = getlist.ExecuteReader(); 
    while (DRorder.Read()) 
    { 
    dateTimePicker1.Value = Convert.ToDateTime(DRorder["BESTEL"]); 
    dateTimePicker2.Value = Convert.ToDateTime(DRorder["PLAN"]); 
    comboBox2.Text = DRorder["ADRES"].ToString(); 
    } 
    SqlCommand getlist2 = new SqlCommand("select LEV from BESW where [email protected]", Connectie.connMEVO); 
    getlist2.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr; 
    DRorder = getlist2.ExecuteReader(); 
    while (DRorder.Read()) 
    { 
    comboBox1.Text = DRorder["LEV"].ToString(); 
    } 
    SqlCommand getlist3 = new SqlCommand("select TAAL from BESW where [email protected]", Connectie.connMEVO); 
    getlist3.Parameters.Add("@best", SqlDbType.VarChar).Value = data.corrigeerbestnr; 
    DRorder = getlist3.ExecuteReader(); 
    while (DRorder.Read()) 
    { 
    textBox8.Text = DRorder["TAAL"].ToString(); 
    } 
} 
catch (Exception er) { MessageBox.Show("" + er); } 
+0

你調試了你的代碼嗎?在哪一行你會得到這個錯誤? – 2015-03-13 13:09:56

+0

哪一行引發異常?該行使用的索引是什麼?運行時該對象上可用的索引是什麼? – David 2015-03-13 13:11:53

+0

@大衛combobox1工作正常,但只要它到達combobox2它給出了錯誤,當我改變了順序,所以combobox2是我注意到的查詢的最後一個textbox8也給了這個錯誤。如果我把這兩個作爲評論查詢將正常工作,我也試圖設置他們使用「LEV」的字段,因爲那一個爲combobox1工作,但它仍然給這些錯誤2 – maam27 2015-03-13 13:12:13

回答

-2

它說,當我把字段拆分爲單獨的查詢時,他們只是工作,查詢不會被改變,它只是沒有1查詢中的所有行。我仍然不知道它爲什麼這樣做,但使用單獨的查詢至少可以解決這個問題。

+0

我不知道爲什麼有人會downvote我對我自己的問題的評論...即時通訊發佈此作爲解決方法,因爲我還沒有得到/找到一個真正的解決方案,如果有一個在這個職位上提交,我只會將其中一個設置爲awnser。但我不認爲我的問題在我的問題上毫無用處。 – maam27 2015-03-13 13:55:03

+0

這個答案並沒有真正描述所提出的解決方案,對任何可能試圖解決相同問題的人都沒有多大用處。 「將字段拆分爲單獨的查詢」和「沒有1個查詢中的所有行」是非常含糊的語句,並且不會添加任何有意義的解決方案信息。你基本上說,「我設法解決這個問題。」這很好,你找到了一個解決方案,以滿足自己的需求,但這個答案沒有任何目的來解釋。 – David 2015-03-13 13:57:10

+0

我知道它可能不會幫助其他人解決這個問題,我不是說這是最後的東西,但我只是發佈這個,說它確實對我有用,如果我找到一個解決方案,它會張貼的c – maam27 2015-03-13 16:04:38

1

可能有兩種可能的錯誤 1.任何列可能會丟失或拼寫錯誤。 2.您正試圖將該屬性設置爲組合框,該組合框可能沒有查詢數據作爲其項目。

希望它有幫助。

編輯:說,組合框有兩個項目「是」和「否」,你可能會試圖設置「他們都不是」作爲其當前項目。

+0

我只是試圖設置數據庫中的數據作爲組合框的文本,就像用戶在其中鍵入內容時一樣,並且不能解釋爲什麼文本框出現相同的錯誤 – maam27 2015-03-13 13:30:00

+0

@ maan27:您設置的文本在組合框中必須在該組合框的值列表中。否則超出範圍(如您的例外所示)。 – 2015-03-13 13:33:42

+0

也許你可以測試它通過使用兩個文本框代表組合框來確認,如果這是問題... – 2015-03-13 13:35:51