我是Microsoft Access的新手,但我一直在使用另一个数据库中的相同代码,并将其替换为您在下面看到的代码。
strsearch = Me.txtSearch.Value
Task = "SELECT * FROM t_Cases WHERE ((CaseID Like ""*" & strsearch & "*"") OR (ActiveYN Like ""*" & strsearch & "*"") OR (ClaimType Like ""*" & strsearch & "*"") OR (HousingLocation ""*" & strsearch & "*"") OR (GrievanceAddress Like ""*" & strsearch & "*""))"
Me.RecordSource = Task
Me.OrderByOn = True有一个名为txtsearch的文本框,表单上的记录将根据所选的书面文本框进行过滤。但是,我得到一个runtime error '3075',指出查询表达式中存在语法错误(缺少运算符)。有人能帮我找出这里面的语法错误是什么吗?我非常感谢你能提供的任何帮助。
琼恩
发布于 2017-08-26 11:27:30
使用运算符(例如:=,<,>,LIKE)可以比较两个值。
您在HousingLocation之后缺少一个LIKE
Task = "SELECT * FROM t_Cases WHERE ((CaseID Like ""*" & strsearch & "*"")" & _
" OR (ActiveYN Like ""*" & strsearch & "*"")" & _
" OR (ClaimType Like ""*" & strsearch & "*"")" & _
" OR (HousingLocation LIKE ""*" & strsearch & "*"")" & _
" OR (GrievanceAddress Like ""*" & strsearch & "*""))"发布于 2017-08-26 17:25:25
让我们永远不要对用户输入使用简单的连接。如果用户输入包含",那么我们的查询中就存在语法错误。
让我们使用BuildCriteria函数。
Dim strsearch As String
strsearch = Me.txtSearch.Value
Dim filters(0 To 4) As String
filters(0) = BuildCriteria("CaseID", dbText, strsearch)
filters(1) = BuildCriteria("ActiveYN", dbText, strsearch)
filters(2) = BuildCriteria("ClaimType", dbText, strsearch)
filters(3) = BuildCriteria("HousingLocation", dbText, strsearch)
filters(4) = BuildCriteria("GrievanceAddress", dbText, strsearch)
Dim filter As String
filter = Join(filters, " OR ")
Dim Task As String
Task = "SELECT * FROM t_Cases WHERE " & filter
Me.RecordSource = Task
Me.OrderByOn = Truehttps://stackoverflow.com/questions/45887200
复制相似问题