VBA 代码不会提供准确的列表框多选查询结果



我在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

我只想知道如何让它过滤正确的结果。谢谢。

您的示例代码在此处包含逻辑错误...

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

然后再次运行代码。 如果"Quarter"查询仍未按预期打开过滤,请将查询的 SQL 添加到您的问题中,并描述查询结果与您想要的结果有何不同。

相关内容

  • 没有找到相关文章