【发布时间】:2017-09-26 23:13:36
【问题描述】:
我在子表单中的 SQL 搜索字符串中遇到撇号问题。以“O'Mally 的苹果”为例。以下是我当前的 VBA 代码的一部分,它给我带来了问题。
MySearch = Replace(Me.TextSearch, "'", "''")
MySearch = "*" & MySearch & "*"
LineOne = "SELECT xxxxxxxxxx & vbNewLine
LineTwo = "From xxxxxxxxx & vbNewLine
The following line is where my problem is.
LineThree = "WHERE ((([GLItems].Item) Like '" & MySearch & "'))" & vbNewLine
LineFour = "ORDER BY xxxxxxx;"
MyCriteria = LineOne & LineTwo & LineThree & LineFour
stDocName = "[GLItemsSubform]"
Me![GLItemsSubform].Form.RecordSource = MyCriteria
如果我搜索“O'Mally's”,则查询返回(空白) 如果我搜索“mally”,它会返回 O'Mally's Apples
我不能只删除数据库中的所有撇号,双撇号在这种情况下不起作用
我已经到了极限。
请帮忙...
【问题讨论】:
-
我假设您已经尝试搜索 'O''Mally''s' (注意它们每次都是两个单引号,而不是双引号。(我不使用访问,但这是标准SQL 会处理它)- 你可能还需要一个 % 最后来捕获 Apples 位。
-
我认为您需要将这一行
MySearch = "*" & MySearch & "*"从 * 替换为 %:MySearch = "%" & MySearch & "%"。查看这篇文章:Using the Right Wildcard characters -
How to debug dynamic SQL in VBA -- 如果这没有直接帮助,请将
Debug.Print MyCriteria的输出添加到您的问题中。 -
我将这一行更改为 MySearch = "%" & MySearch & "%" ,令我惊讶的是,它像宣传的那样工作。非常感谢,我一直在把头发拉出来。我正在研究旧的 Visual Basic 书籍以及在线挖掘,我找不到任何像你建议的东西。你教了一只很老的狗一个新把戏。现在我要阅读你提到的那些文章。再次感谢