如何从“subject(数据库)”过滤或限制我的组合框显示。我不想从“主题”添加所有列表,这就是为什么Label.text =“ad”,我希望组合框只显示那些在数据库上有“广告”且不应全部显示的人。我真的很感激任何帮助。
conn = New OleDbConnection(Get_Constring)
Dim sSQL As String = ("SELECT subject FROM student order by username")
Dim da As New OleDbDataAdapter(sSQL, conn)
Dim ds As New DataSet
da.Fill(ds)
cmbsection.ValueMember = "subject"
cmbsection.DataSource = ds.Tables(0)
cmbsection.SelectedIndex = 0
End If
Catch ex As Exception
MsgBox("ERROR : " & ex.Message.ToString)
End Try
答案 0 :(得分:1)
使用BindingSource
将Filter
属性设置为您拥有的任何过滤条件。
我相信您的数据库中没有大量数据。您已经填充了DataSet。现在,您应该将ComboBox与BindingSource
绑定,并将其DataSource
属性设置为您的DataTable。接下来将DisplayMember
和ValueMember
属性设置为相应的列名称。然后在运行时,您可以设置BindingSource
的{{1}}属性,如下所示:
Filter
这将仅显示ComboBox中其主题列中包含字符串“ad”的记录。
答案 1 :(得分:0)
理想情况下,您应该限制来自数据库的数据,而不是在本地获取所有数据,然后将其限制在客户端上。数据库旨在为您限制数据,如果限制数据库中的数据,您将通过线路(网络)以更少的带宽更快地获得数据。
因此,您应该将它作为where子句添加到SQL中:
Dim sSQL As String = ("SELECT subject FROM student WHERE Subject = 'ad' order by username")
注意:如果您允许用户提供该值,您应该在命令中使用参数,但由于看起来您需要硬编码值,您可以按上述方式执行。