微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有多选列表框的Microsoft Access Form

如何解决带有多选列表框的Microsoft Access Form

我在Microsoft Access中有一个表单,其中有一个包含县的组合框。根据选择的县,有一个列表框,将显示分配给该县的金额。当我从列表框中选择一个金额并单击“查找”按钮时,它将生成两个子表单,其中一个表单显示的是该查询中存在该金额的订单项的最低价格:

SELECT Data.Item,Min(Data.[Unit Price]) AS Minimum
FROM Data
WHERE (((Data.[Bid Amount])=Forms![Report]![List2]))
GROUP BY Data.Item;

和其他子表单显示带有查询的当前数量的订单项的平均价格:

SELECT Data.Item,Avg(Data.[Unit Price]) AS Average
FROM Data
WHERE (((Data.[Bid Amount])=[Forms]![Report]![List2]))
GROUP BY Data.Item;

现在从列表框中选择一个金额可以正常工作,但是如果我需要从列表框中选择多个金额,那么我需要在“查找”按钮中编写哪些代码?我尝试使用下面的代码,但无法正常工作。

Dim varItem As Variant
Dim strFind As String
Dim Task As String

For Each varItem In Me!List2.itemselected
    strFind = srtFind & "," & Me!List2.ItemData(varItem)
Next varItem
If Len(strFind) = 0 Then
    Task = "Select Amount(s)"
Else
    strFind = Right(strFind,Len(strFind) - 1)
    Task = "select * from Data where ([Bid Amount] in (" & strFind & "))"
End If
DoCmd.ApplyFilter Task

此外,如果有帮助,我将附上我的表格的屏幕截图。 Access Form

解决方法

过滤器只是where子句,我想这是您希望过滤的子表单,因此请尝试如下操作:

Dim varItem     As Variant
Dim strFind     As String
Dim Filter      As String
Dim FilterOn    As Boolean

For Each varItem In Me!List2.ItemSelected
    strFind = srtFind & "," & Me!List2.ItemData(varItem)
Next varItem
If Len(strFind) > 0 Then
    strFind = Right(strFind,Len(strFind) - 1)
    Filter = "[Bid Amount] In (" & strFind & ")"
    FilterOn = True
End If

Me!NameOfSubformControl1.Form.Filter = Filter
Me!NameOfSubformControl2.Form.Filter = Filter
Me!NameOfSubformControl1.Form.FilterOn = FilterOn
Me!NameOfSubformControl2.Form.FilterOn = FilterOn

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。