提问人:HelenC 提问时间:1/23/2023 更新时间:1/23/2023 访问量:38
访问:在字段上筛选表单 - 当字段包含撇号时失败
Access: Filtering form on field - fails when fields contains an apostrophe
问:
我在连续表单上有一个过滤器,它使用组合框来选择要匹配的记录;代码是:
Private Sub SelectHospitalCbo_AfterUpdate()
Me.Filter = "[ContactHospital] = " & "'" & Me.SelectHospitalCbo & "'"
Me.FilterOn = True
End Sub
这一直很好,直到我发现如果 ContactHospital 字段包含撇号(例如 Children's Hospital),我会收到一条错误消息:
运行时错误“3075”: 查询表达式“[ContactHospital] = 'Children's Hospital”中的语法错误(缺少运算符)。
我了解发生错误的原因,但我找不到解决方法。这个论坛上最近的一个问题似乎与我的问题类似,但没有答案。这是否意味着我无法绕过它?
如果有人想建议删除医院名称中的所有撇号,我会考虑,但不幸的是,这个数据库与一个(更大的)数据库交互,其中医院名称无法更改并且必须匹配,所以这对我来说不是一个选择。
来自更多经验的任何帮助 Access 开发人员表示赞赏!
答:
0赞
June7
1/23/2023
#1
选项:
按数字医院 ID 而不是其名称进行筛选
"[ContactHospital] = '" & Replace(Me.SelectHospitalCbo, "'", "''") & "'"
"[ContactHospital] = """ & Me.SelectHospitalCbo & """"
"[ContactHospital] = " & Chr(34) & Me.SelectHospitalCbo & Chr(34)
评论
0赞
mazoula
1/23/2023
回答提出的问题。如果您正在寻找 quik-fix,那么您可以通过调用 Replace 然后正确分隔 ' 来处理此特定问题。例如,换行“[Contact...with: Public Function DelimitApostrophes(stringwithapostrophe As String) As String DelimitApostrophes = Replace(stringwithapostrophe, “'”, “'”) End Function End Function 或者只是用替换部分换行。
0赞
mazoula
1/23/2023
是的,这确实是“'”与“,但在上下文中,这意味着用引号撇号(” ' “)替换任何撇号(')。请参阅替换
0赞
June7
1/23/2023
@mazoula,您的评论中的代码显示将撇号替换为撇号 - 没有变化。
0赞
HelenC
1/24/2023
@june7,非常感谢您的回复,选项 2 是有效的!
评论