Access中的高级过滤条件

时间:2013-11-11 18:48:24

标签: ms-access filtering

问题很简单,但我无法弄明白。

我有两个访问表,一个有记录,另一个有“关键词”。我需要过滤包含某些“关键词”的记录。换句话说,使用一个表字段作为另一个表的字段,但不链接它们,因为“关键字”表只包含随机字而不是整个记录。

在excel中,我可以在记录上运行高级过滤器,并将关键字列表(并使用通配符)指定为条件,但在access中我没有找到根据另一个表字段进行过滤的方法。

有关它的任何想法?

1 个答案:

答案 0 :(得分:0)

您可能需要创建一个函数,该函数将包含其中所有关键字的自定义SQL吐出。这是一个让你入门的例子。

Public Function fGetTrashRecords()
'add your own error handling
Dim SQL As String
Dim rst As DAO.Recordset
Dim rstTrash As DAO.Recordset
Dim db As DAO.Database

Set db = CurrentDb
Set rst = db.OpenRecordset("SELECT sKeyWord FROM tblBadKeyWords", dbOpenSnapshot)
If Not rst Is Nothing Then
    rst.MoveFirst
    Do While Not rst.EOF
        SQL = SQL & " strFieldContaingKeyWord LIKE *'" & rst!sKeyWord & "'* OR"
        rst.MoveNext
    Loop
    If SQL > "" Then SQL = Left(SQL, Len(SQL) - 2) 'get rid of the last OR
    rst.Close
    Set rst = Nothing
End If
If SQL > "" Then
    Set rstTrash = db.OpenRecordset("SELECT * FROM tblHasKeyWords WHERE " & SQL, dbOpenDynaset, dbSeeChanges)
    If Not rstTrash Is Nothing Then
        rstTrash.MoveFirst
        Do While Not rstTrash.EOF
            Debug.Print rstTrash!ID
            rstTrash.MoveNext
        Loop
        rstTrash.Close
        Set rstTrash = Nothing
    End If
End If
Set db = Nothing

End Function