VBA代码不会给出准确的ListBox多选查询结果

问题描述 投票:0回答:1

我在Access中提供了一个巨大的链接Excel表,其中包含一堆旧的历史数据。我已经创建了一个多选ListBox,允许用户选择多个“年度季度”来显示历史数据中所选季度的数据。

我的问题是我写的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

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

vba ms-access access-vba
1个回答
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

然后再次运行代码。如果“Quarter”查询仍未按预期过滤,请将查询的SQL添加到您的问题中,并描述查询结果与您的需求之间的差异。

© www.soinside.com 2019 - 2024. All rights reserved.