如何在从Access数据库填充的VB组合框顶部新增一行且不修改数据库
实现方法
你只需要在数据填充到内存DataSet之后、绑定到组合框之前,往对应的DataTable中插入虚拟行即可,该操作仅在本地内存执行,不会修改Access数据库内容,修改后代码如下:
myConnToAccess = New OleDbConnection(myVariables.myStrConnectionString) myConnToAccess.Open() ds = New DataSet tables = ds.Tables da = New OleDbDataAdapter("SELECT DISTINCT ProcUserName FROM Processes ORDER BY ProcUserName", myConnToAccess) da.Fill(ds, "Processes") ' 新增代码:在内存表第一行插入通配符选项 Dim wildcardRow As DataRow = ds.Tables("Processes").NewRow() ' 可自定义显示文本,需要用*作为通配符的话直接赋值为"*"即可 wildcardRow("ProcUserName") = "不限制" ds.Tables("Processes").Rows.InsertAt(wildcardRow, 0) Dim view1 As New DataView(tables(0)) With cboUserID .DataSource = ds.Tables("Processes") .DisplayMember = "ProcUserName" .ValueMember = "ProcUserName" .SelectedIndex = 0 .AutoCompleteMode = AutoCompleteMode.SuggestAppend .AutoCompleteSource = AutoCompleteSource.ListItems End With myConnToAccess.Close()
后续查询适配
获取组合框选中值后做简单判断即可:
- 若选中值为你设置的通配符选项(比如上面的
不限制或者*),要么移除该查询条件,要么构造ProcUserName LIKE '*'的查询逻辑 - 若为其他值,正常带入参数执行查询即可
内容的提问来源于stack exchange,提问作者Ross from Brooklin
相关产品推荐
相关产品推荐

