问题描述
我在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