使用ADODB在Filter上输入撇号时VB6获取错误

时间:2015-10-29 01:31:02

标签: vb6 ado

我试图从文本框中过滤数据网格,但是如果撇号或“apos”在文本框中键入,我使用ADODB和VB6

Public Sub pGetCustomer(Optional vSearch As String)

  If vSearch = "'" Then
  xRSTree.Filter = adFilterNone
  xRSTree.Requery
Else
    xRSTree.Filter = "description like '%" & vSearch & "%' or customercode like '%" & vSearch & "%'"
End If

Private Sub txtSearch_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))

 End Sub

2 个答案:

答案 0 :(得分:3)

正如它在ADO文档中所说的那样(人们何时会陷入这种奇怪的习惯,即调用ADO“ADODB”???):

  

注意要在过滤器值中包含单引号('),请使用两个单引号来表示一个。例如,要对O'Malley进行过滤,条件字符串应为"col1 = 'O''Malley'"。要在过滤器值的开头和结尾包括单引号,请用井号(#)括起该字符串。例如,要过滤'1',标准字符串应为"col1 = #'1'#"

您还必须在此处考虑通配符规则:

  

如果Operator LIKE ,Value可以使用通配符。只允许使用星号(*)和百分号(%)通配符,它​​们必须是字符串中的最后一个字符。值不能为null

但有点令人困惑:

  

LIKE 子句中,您可以在模式的开头和结尾使用通配符(例如,LastName Like '*mit*'),或者仅在模式的末尾使用通配符(例如,LastName Like 'Smit*')。

答案 1 :(得分:2)

你需要"逃避"你的qoutes或单个qoutes。简单的方法是在vSearch中替换所有'与''和所有"用""。

相关问题