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

Ms access VBA代码不会给出准确的ListBox多选查询结果,ms-access,vba,Ms Access,Vba,我在Access中提供了一个巨大的链接Excel表,其中包含一堆旧的历史数据。 我创建了一个多选列表框,它允许用户从历史数据中选择多个“年度季度”来显示所选季度的数据 我的问题是我编写的VBA代码没有正确过滤出结果。例如,我将从列表框中选择季度1和季度2,运行查询按钮,它仍然会给我未过滤的结果,它只显示季度1、2、3和4的所有数据。它将显示所有正确的信息,但不会过滤列表框中指定的条件 这是我的密码: Private Sub Command2_Click() DoCmd.RunSQL ("Del

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

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

您的示例代码包含一个逻辑错误

如果选择了Me.List0.Selected(x)>0,则
DoCmd.RunSQL“插入…”
如果结束
问题是当
x
是一个列表框所选项目的行索引时,
Me.List0.selected(x)
返回True,即-1。因为-1不大于零,所以
如果。。。然后
条件的计算结果为False,因此不插入任何行

检查“四分之一”表。它应该是空的,因为您在过程开始时删除了它的所有行,之后没有添加任何行

把那行改成这行

如果Me.List0.Selected(x)=True,则

然后再次运行代码。如果“四分之一”查询仍未按预期打开,请将查询的SQL添加到您的问题中,并说明查询结果与您想要的结果有何不同。

我会设置一个断点并单步执行…嘿,peakpeak,感谢您的回复!你能给我一个例子,或者直接告诉我在哪里可以找到断点和单步的例子吗?这是VBA故障排除的基本知识。如果你用VBA编码,你需要知道它:断点F9,运行F5,单步F8等等…对不起,我用不同的方式学习了所有这些术语,谢谢你的输入。这是VBA代码;任何非变量声明的行都可以有断点。它在表格上的位置是正确的。