修改 MS Access 列表框中的项目列表

Posted

技术标签:

【中文标题】修改 MS Access 列表框中的项目列表【英文标题】:Modify list of items in a list box in MS Access 【发布时间】:2014-04-08 15:01:06 【问题描述】:

首先,用户使用黄色部分选择产品。这将为结果部分右侧的下拉框生成信息。用户选择特定产品,Dlookups 在文本框中生成值。

在下面的表格中,我有一个列表框(目前没有图片)。列表框列出了使用属性部分从查询中生成的信息。问题是列表框经常显示来自查询的信息,这些信息与文本框中的任何结果都不匹配。我需要从列表中删除该结果。

使用下面给出的这段代码,它循环遍历每个文本框控件并检查每个文本框中的值是否与查询结果匹配。如果没有,则从列表框中删除。但是,它似乎不起作用。有关此代码哪里出错的任何建议或有关如何实现相同目标的建议。

    Private Sub Command87_Click()
    'Refine Search Results based on the control attributes
        Dim iCtr As Long, valFound As Boolean, frmCtl As Control
        Dim selStr As String

        With Me.ResList
            iCtr = .ListCount
            While iCtr <> 0
                For Each frmCtl In Me.Controls
                    If frmCtl.ControlType = acTextBox Then
                        If .Column(0, iCtr) = frmCtl.Value Then
                            valFound = True
                            Exit For
                        End If
                    End If
                Next
                If Not valFound Then selStr = selStr & .Column(0, iCtr) & ","
                iCtr = iCtr - 1
            Wend
        End With

        If Len(selStr) > 0 Then
            selStr = Left(selStr, Len(selStr) - 1)

            Me.ResList.RowSource = ("Test_Qry")

        End If
End Sub

【问题讨论】:

你能在这方面取得进展吗? 目前它还没有被搁置,因为我们的注意力已经集中在其他需要尽快完成的项目上。我会看看这周,让你知道。 我仍然有这个问题。我仍然无法减少与表单上的文本框不相等的列表。有任何想法吗?抱歉,花了这么长时间才回复你,我被其他优先级更高的项目轰炸了。 这可能会通过我对答案的新更正来解决。 效果比以前好。它计算出列表中有 3 个,但是 2 个不匹配,应该留下一个。相反,它从列表中删除了所有三个。 【参考方案1】:
selStr = Left(selStr, Len(selStr) - 1)
Me.ResList.RowSource = ("Test_Qry")

selStr 似乎拥有你所需要的东西,但你没有用它做任何事情。您需要执行以下操作:

Me.ResList.RowSourceType = "Value List"

Me.ResList.RowSourceType = "Table/Query"
Me.ResList.RowSource = selStr

以上注释更正,2014 年 6 月 2 日

【讨论】:

感谢您这么快的回复,我没有注意到线路没有被使用。当我使用您的解决方案时,它没有产生任何错误,但没有列出任何结果。当我用断点运行它时,它将 selStr 的值显示为“,”。 对于初学者,请在声明 .RowSource 之前为 selStr 创建一个值,以便测试最终的 UI 部分。然后使用Debug.Print 发现为什么selStr 没有按应有的方式加载。可能有很多原因 - 错字、逻辑缺陷、If() 比较问题... 如果您有任何输入,我发现 .column 存在问题。请参阅上面的附加图片。 您的列表框具有必须与代码匹配的规范。您可以了解代码“看到”的内容:在中断模式下,通过输入?.column(0,1)?.column(1,0) 等,使用即时窗口检查值。本地窗口可能会更好。 我才刚刚注意到这一点...编写此代码的人没有考虑到查询中生成的信息(Test_Qry)所以代码没有什么可以比较结果的表格也是如此,因为它没有加载任何比较信息。

以上是关于修改 MS Access 列表框中的项目列表的主要内容,如果未能解决你的问题,请参考以下文章

从列表框中删除项目(MS Access VBA)

MS Access 2013 - 根据文本框中的值过滤列表框中的值

MS Access 07-10,希望能够将字段放入列表/组合框中

确定是不是在 MS Access 2007 列表框中选择了行

Ms Access,双击列表框元素以更新表单

从 Access 中的列表框中提取选定的行