我在Access中提供了一个巨大的链接Excel表,其中包含一堆旧的历史数据。 我创建了一个多选列表框,该框允许用户选择多个“一年的季度”以显示历史数据中所选季度的数据。
我的问题是我编写的VBA代码没有正确过滤出结果。例如,我将从列表框中选择季度1和季度2,运行查询按钮,它仍然会给我未过滤的结果,它只显示季度1、2、3和4的所有数据。正确的信息,它只会过滤列表框中指定的条件。
这是我的代码:
Private Sub Command2_Click()
DoCmd.RunSQL ("Delete * from quarters")
For x = 0 To Me.List0.ListCount - 1
If Me.List0.Selected(x) > 0 Then
DoCmd.RunSQL ("Insert into quarters values ('" & _
Me.List0.ItemData(x) & "')")
End If
Next
DoCmd.OpenQuery "Quarter"
End Sub
我只想知道如何获取它以过滤正确的结果。谢谢。
答案 0 :(得分:1)
您的示例代码此处包含逻辑错误...
If Me.List0.Selected(x) > 0 Then
DoCmd.RunSQL "Insert ..."
End If
问题在于,当x
是列表框所选项目之一的行索引时,Me.List0.Selected(x)
返回True,即-1。并且由于-1不大于零,因此If ... Then
条件的值为False,因此不会插入任何行。
检查该“季度”表。它应该为空,因为您在过程开始时删除了所有行,之后没有添加行。
将该行更改为此...
If Me.List0.Selected(x) = True Then
然后再次运行代码。如果“季度”查询仍然没有按预期打开过滤条件,请将查询的SQL添加到您的问题中,并说明查询结果与您想要的结果有何不同。