2013-12-10 193 views
-1

我正在開發一個大學日程安排,我遇到了級聯問題,我還沒有找到答案。 所以我想要做的是過濾基於CATHEDRA和YEAR的課程。 所以CATHEDRA是comboBox1,YEAR是comboBox2,COURSE是comboBox3。 Cathedra的數據是從數據庫中使用的,但YEAR numers是從comboBox2編輯項目中使用的(我自己把它們放到了1,2,3,4)。 這是我使用的查詢得到我的錯誤:組合框過濾(級聯)

cmd.CommandText = ("SELECT idlcourse, name_of_course FROM tblCOURSE WHERE cathedra [email protected] AND [email protected]");  
cmd.Parameters.AddWithValue("@cathedra", comboBox1.Text); 
cmd.Parametes.AddWithValue("@year", comboBox2.Text); 

我嘗試不同類型的代碼,但沒有人的作品所以這將是非常好的,如果你可以給我整個代碼

PS:YEARS屬性類型爲Numeric(18)。 如果有人能爲我傾訴,我會非常感激。

+0

你準確得到了什麼錯誤? – gitsitgo

+0

我得到隨機錯誤。我認爲我犯了一個錯誤的語法。 如果你能告訴我如何從comboBox1和comboBox2 – Jazz

+0

中選擇的值過濾comboBox3會很好,你必須比「隨機錯誤」更具描述性。請把這些錯誤放在問題中,謝謝。 – gitsitgo

回答

0

好的,你的問題還有一些缺失的信息,但這裏是我看到的。

  • 年是一個數值類型,所以你應該爲十進制

  • 事實上,你有一個語法問題,傳遞價值,在最後一行你拼寫Parametes而不是Parameters(也許這是隻是在拼寫錯誤的情況下)

  • 您不驗證您要放入查詢的值。如果由於某種原因ComboBox2.Text不是數字的字符串表示形式,則您的查詢將會出錯。如果組合框文本值爲String.Empty(如果未設置索引,則默認爲初始加載),則查詢將運行但不會返回正確的結果。

所以,這裏是你可以做什麼:

decimal yearValue = 0;   //local var to store year 

//Check that user has selected something 
if(!String.IsNullOrWhiteSpace(comboBox1.Text) 
    && !String.IsNullOrWhiteSpace(comboBox2.Text) 
    && Decimal.TryParse(comboBox2.Text, out yearValue)) 
{ 
    cmd.CommandText = ("SELECT idlcourse, name_of_course FROM tblCOURSE WHERE [email protected] AND [email protected]");  
    cmd.Parameters.AddWithValue("@cathedra", comboBox1.Text); 
    cmd.Parameters.AddWithValue("@year", yearValue);  //Replaced with yearValue 
} 
else 
{ 
    //Handle else case (e.g Display msg to user) 
} 

基本上,我做的if語句組合框值的一些檢查。 我也使用Decimal.TryParse()這將只返回true,如果它可以將字符串轉換爲十進制。好像你已經在組合框中放置了數字/整數值,但是它並沒有傷害到做一些額外的強制執行。現在,如果它通過所有這些檢查,它將運行查詢。如果它沒有通過,它取決於你如何處理它。

至於如何將這些結果放在comboBox3中,請將查詢結果放在List對象中並將其綁定到它的DataSource