我可以在从 Access DB 填充的组合框顶部添加一个额外的行吗
Posted
技术标签:
【中文标题】我可以在从 Access DB 填充的组合框顶部添加一个额外的行吗【英文标题】:Can I add an extra row, at the top of a combo box that is being populated from an Access DB 【发布时间】:2021-11-14 22:10:41 【问题描述】:我有一个 vb 组合框,其值取自针对 Access DB 运行的 SELECT DISTINCT SQL 语句。所选值将用作后续 SELECT 语句中的参数。我担心的是我希望用户能够避免选择一个值,以便从下一个 SELECT 语句中删除该参数,或者使用 * 作为通配符。我不想在表格中添加一个虚拟行来保存空值或星号,所以我需要找到某种方法在顶部添加一行,以显示这一点。我不确定如何/在哪里放置 INSERT 语句,以便它显示在组合框的顶部,但不在数据库中。这是我正在使用的代码。我对 VB 很陌生,并选择了这种方法来填充组合框,因为它看起来很容易理解。我会很感激任何帮助。谢谢。
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 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()
【问题讨论】:
【参考方案1】:从数据库中提取数据后,您可以在 DataTable 中添加虚拟行,并将其位置设置为 DataTable.Rows.InsertAt
....
da.Fill(ds, "Processes")
Dim dt As DataTable = ds.Tables("Processes")
Dim row As DataRow = dt.NewRow()
row("ProcUserName") = "(All)"
dt.Rows.InsertAt(row, 0)
【讨论】:
这非常有效。谢谢你。我不确定如何在顶部插入行。以上是关于我可以在从 Access DB 填充的组合框顶部添加一个额外的行吗的主要内容,如果未能解决你的问题,请参考以下文章