我在获取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
答案 0 :(得分:0)
尽管我强烈建议不要使用这种“动态查询”,但是有一种方法可以处理多值字段的这种条件。
假设Group_List
是从Groups
表中填充的,作为GroupID
和GroupName
列,您需要将Groups
表联接到NCECBVI
表(连接GroupID
和Group_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。