2015-10-29 3 views
0

Я пытаюсь фильтровать DataGrid из текстового поля он работает, но не тогда, когда апостроф или "было напечатано на текстовое поле, я использую ADODB и VB6VB6 Получение ошибки при вводе апостроф фильтр, используя ADODB

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

Вам нужно «избежать» ваших qoutes или одиночных qoutes. Простым способом было бы заменить в vSearch все «на» и все «на».

3

Как говорится в документации ADO (когда люди попадали в эту странную привычку звонить ADO «ADODB» в любом случае ???):.

Примечание чтобы включить одиночные кавычки (') в фильтре Value, используют две одиночные кавычки, чтобы представить один Например, для фильтрации O'Malley, строка критерии должны быть "col1 = 'O''Malley'" чтобы включить. одиночные кавычки как в начале, так и в конце значения фильтра, заключают строку с знаками фунта (#). Например, для фильтрации по '1' строка критериев должна быть "col1 = #'1'#".

Вы должны также рассмотреть правила подстановочные здесь:

Если Оператор LIKE, значение можно использовать подстановочные знаки. Только звездочка (*) и знак процента (%) разрешены, и они должны быть последним символом в строке. Значение не может быть null.

Но немного смешения:

В LIKE пункте в , вы можете использовать маску в начале и в конце шаблона (например, LastName Like '*mit*'), или только в конце шаблон (например, LastName Like 'Smit*').

Смежные вопросы