2017-09-16 47 views
0

我在初學者級別處於此類編程,因此我相信您中的某個人會知道如何解決我遇到的問題。如何使用Visual Studio 2012中的數據/值成員在組合框中執行搜索操作C#

我在Visual Studio中有一個與Oracle Database 11g Express連接的小項目,我想從數據庫對特定表執行搜索操作,並在我的Visual Studio項目中以此窗體顯示它。 因此,我有兩個組合框包含數據成員上顯示的成員。數據成員通常是表中的外鍵,例如ID等,並且這些組合框中顯示的顯示成員通常是姓名和姓氏,當然與我之前提到的那些ID相關聯。
所以我想選擇這些顯示成員,並通過他們來搜索特定的所有數據。
這是在我的形式選擇按鈕的查詢:

OracleConnection con = new OracleConnection("DATA SOURCE=localhost:1521/XE;PERSIST SECURITY INFO=True;USER ID=BAYE;PASSWORD=blagojica"); 
con.Open(); 

OracleDataAdapter dr = new OracleDataAdapter("SELECT * FROM zaposlenja where RAD_JMBG='" + comboBox1.SelectedValue + "' or ODELJENJEID='"+comboBox2.SelectedValue+"'", con); 
DataTable dt = new DataTable(); 
dr.Fill(dt); 
dataGridView2.DataSource = dt; 
con.Close(); 
this.dataGridView2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;` 

而且我有這個表,其中ime_pacijenta是名字,prezime_pacijenta是姓,而PRETRAGA是這樣的搜索按鈕:

image

當我從組合框中選擇一個項目時,它應該只寫出一條記錄。相反,它向我展示了另一個與此無關的記錄。

image

因此,這將是它,我明白任何回覆:當我從下拉框中選擇任何其他值這也恰好!

+0

您顯示的示例與您顯示的查詢不符。在查詢過程中,您正在篩選「PACIJENT_JMBG」和「DIJAGNOZAID」列,但您沒有向我們顯示這些列的值。這些列*匹配您使用的搜索參數似乎是合理的。 – David

+0

與您的問題無關,但我相信您應該看到https://stackoverflow.com/q/332365/11683。 – GSerg

+0

是的,但我設置了這個選項組合框。** SelectedValue **。我相信這是應用程序通過組合框中顯示的顯示成員識別超值會員的方式。第一個值的memeber是來自另一個表的PAC值,這是PACIJENT_JMBG引用的FK。同樣的故事是另一個組合,DIJAGNOZAID是FK引用另一個表中的PK,PK是第二個組合框的值成員。 –

回答

0

我認爲這個問題是由您SELECT查詢WHERE說法引起:

OracleDataAdapter dr = new OracleDataAdapter("SELECT PACIJENT_JMBG, IME_PACIJENTA, PREZIME_PACIJENTA, NAZIV, OPIS, NAZIVDIJAGNOZE, DIJAGNOZAID FROM TERAPIJE WHERE PACIJENT_JMBG='"+comboBox1.SelectedValue+"' or DIJAGNOZAID='"+comboBox2.SelectedValue+"'", con); 

你應該在你WHERE聲明中不包括不具有任何價值COMBOX。在你展示的圖像中;第二個組合框沒有值,但它仍然在查詢中考慮,這反過來會影響結果。如果至少有一個組合框沒有值,或者您可以使組合框默認具有值,則應該重寫WHERE聲明部分。

注意:您應該確定是否要在WHERE語句中使用ORing或ANDing,因爲使用ORing可能會返回多個記錄。

+0

我道歉沒有采取其他組合框的截圖,但它也包含一個值,這就是爲什麼在我的SQL QUERY我把OR,所以搜索操作可以做從第一個或第二個組合框。但是,它也包含值,並且這些值是表格中顏色IME_ODELJENJA的值,您可以在這些屏幕截圖中看到它。 –

相關問題