Database MS-ACCESS:筛选表,然后显示在未绑定列表框中

Database MS-ACCESS:筛选表,然后显示在未绑定列表框中,database,ms-access,Database,Ms Access,在我的表单Main中,在应用过滤器后,我试图让一个按钮Search将Table中的一些列显示到一个未绑定的列表框中(位于表单Main)。最初我使用的是一个组合框,但我想使用一个列表框,它只显示那些逾期未参加培训的人的姓名。下面是我在使用组合框时得到的,它工作得非常好 Private Sub SearchCheck_Click() Call Search End Sub Sub Search() Dim Task As String Me.Refresh Task = "SELECT * F

在我的表单
Main
中,在应用过滤器后,我试图让一个按钮
Search
Table
中的一些列显示到一个未绑定的列表框中(位于表单
Main
)。最初我使用的是一个组合框,但我想使用一个列表框,它只显示那些逾期未参加培训的人的姓名。下面是我在使用组合框时得到的,它工作得非常好

Private Sub SearchCheck_Click()
Call Search
End Sub

Sub Search()
Dim Task As String

Me.Refresh

Task = "SELECT * FROM Table WHERE DateDiff('m', [Training], Date()) > 24 And [Active Employee] = True"

DoCmd.ApplyFilter Task

End Sub

当然,我想我遗漏了一些东西,告诉它结果应该放在哪里?有什么想法吗?我对MS-ACCESS相当陌生。

除非您想在运行时将listbox RowSource从非筛选列表更改为筛选列表,否则只需在design中设置RowSource属性,而不是使用VBA。

我从未使用过ApplyFilter。可以使用SELECT sql语句设置RecordSource或RowSource属性。也可以使用WHERE子句中的条件设置表单筛选器属性。回顾但是,当标准是静态的时,为什么要使用代码呢?只需在设计中使用此SQL语句设置listbox RowSource属性。真的应该给表格命名一个比表格更具信息性的名称。谢谢你的评论。为了简化问题,使用了名称
。我想我认为随着复杂性的增加,编码可以一直使用,而不是使用RowSource等。我试试你提到的。同样,我对SQL和MS-ACCESS还不熟悉。只是想优雅一点:)您是否正在尝试将列表框从非筛选列表更改为筛选列表?然后是的,代码可以用来设置它的RowSource属性。不,你的方法工作得很好。简单就是黄金。如果您有时间,请将您的第一条评论格式化为我可以接受的答案。这非常有效,而且是一个简单得多的解决方案。