搜索访问多值字段

时间:2018-09-04 15:28:14

标签: ms-access

我在获取Access来查询报表的多值字段时遇到麻烦。多值字段是Group_List,当尝试在多值字段中搜索值时,我不断收到表示无法在where或具有子句中搜索的错误。在报告中,如果我在字段中搜索值,则仅希望这些值显示在报告中。

Private Sub Command284_Click()
    Dim reportsearch As String
    Dim reportText As String
    Dim strReport As String

    If IsNull(Me.txtReport.Value) Then
        strReport = "'SELECT * FROM NCECBVI'"
        DoCmd.OpenReport "NCECBVI-Report", acPreview, , strReport
        txtReport.Value = ""
    Else
        reportText = Me.txtReport.Value
        reportsearch = "[Last Name] LIKE ""*" & reportText & "*"" OR [First Name] LIKE ""*" & reportText & "*"" OR Group_List LIKE "" * " & reportText & " * """
        DoCmd.OpenReport "NCECBVI-Report", acPreview, , reportsearch
        txtReport.Value = ""
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

尽管我强烈建议不要使用这种“动态查询”,但是有一种方法可以处理多值字段的这种条件。

假设Group_List是从Groups表中填充的,作为GroupIDGroupName列,您需要将Groups表联接到NCECBVI表(连接GroupIDGroup_List.Value)并将条件应用于GroupName字段。要仅显示NCECBVI表的每个记录,请使用DISTINCTROW。组合查询看起来像这样:

SELECT DISTINCTROW NCECBVI.* 
FROM NCECBVI
  INNER JOIN Groups ON Groups.GroupID = NCECBVI.Group_List.Value
WHERE Groups.GroupName LIKE "*SomeText*"

要处理对多值字段的查询,建议使用this article