嗯,这是我的问题,如果我有数据表,如何防止在我的Combobox中双重显示 内部“Section”栏的“Student”是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 :(得分:1)
为什么不在SQL查询中使用DISTINCT
,如:
Dim sSQL As String = ("SELECT DISTINCT [section] FROM student
where username like'" & Administrator.lblusername.Text & "%' ")
有关mysql示例,请参阅链接here(尽管您未指定DBMS)。
答案 1 :(得分:1)
您可以从DataTable的默认DataView创建一个DataTable,它只显示不同的记录。使用此方法的优点是您可以将所有记录保存在原始DataTable中(可用于其他一些绑定)。另请注意,这是一个客户端操作,因此如果有许多客户端执行此操作,您可以节省服务器的一些处理工作。
语法如下:
ds.Tables(0).DefaultView.ToTable(True, {"section"})