2013-10-05 42 views
-1

嗯這是我的問題,如何我可以防止在我的Combobox中的雙顯示器,如果我有一個數據表 「學生」列「部分」裏面是BE701P,BE101P,BE701P,BE701P,BE101P。 我想只顯示組合框「BE701P和BE101P」這樣防止冗餘顯示,有可能嗎?如何在沒有冗餘顯示器的情況下過濾組合框?

Private Sub section() 
    Try 
     conn = New OleDbConnection(Get_Constring) 
     Dim sSQL As String = ("SELECT [section] FROM student where username like'" & Administrator.lblusername.Text & "%' ") 
     Dim da As New OleDbDataAdapter(sSQL, conn) 
     Dim ds As New DataSet 
     da.Fill(ds) 
     cmbsection.ValueMember = "section" 
     cmbsection.DataSource = ds.Tables(0) 
     cmbsection.SelectedIndex = 0 
    Catch ex As Exception 
     MsgBox("ERROR : " & ex.Message.ToString) 
    End Try 
End Sub 

它會將所有數據顯示在組合框中並進行冗餘顯示。因爲我想防止冗餘。我會很樂意提供任何建議。

+0

如果我在組合框中選擇「BE701P」,所有誰擁有「的數據庫中BE701P將顯示到datagridview的。」 – user2715202

回答

1

爲什麼沒有在SQL查詢中使用DISTINCT像:

Dim sSQL As String = ("SELECT DISTINCT [section] FROM student 
where username like'" & Administrator.lblusername.Text & "%' ") 

了MySQL實例鏈接here(雖然你沒有指定你的DBMS)。

+1

對不起,我失去了互聯網,但它的工作! :D,我不知道DISTINCT :)但非常感謝你的幫助。 – user2715202

+0

不客氣@ user2715202。快樂編碼和上帝保佑。 – Edper

1

您可以從DataTable的默認DataView創建DataTable,該DataTable僅顯示不同的記錄。使用這種方法的優點是可以保留原始DataTable中的所有記錄(可用於某些其他綁定)。另外請注意,這是一個客戶端操作,所以如果有許多客戶端正在執行此操作,則可以爲服務器節省一些處理工作量。

語法將是這樣的:

ds.Tables(0).DefaultView.ToTable(True, {"section"}) 
+0

這也工作!謝謝 :) – user2715202

相關問題