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

时间:2014-04-08 15:01:06

标签: vba ms-access access-vba

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

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

enter image description here

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

    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

enter image description here

1 个答案:

答案 0 :(得分: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日