TopPicLogo TopPicText

Функция коя "ловит" апострофы в "буржуйских" именах.

Автор: Коротков Александр  norma@mgn.ru

      Если в двух словах, то функция возвращает строку ей переданную без изменений, если в исходной нет апострофов и удваивает каждый таковой, если они есть в исходной.. Необходимость возникла при поиске в табличке буржуйских имен, а они, оказываются, могут иметь апострофы, например, Жанна Д'Арк...


     В качестве условий отбора используется SQL строчка, в которой условием отбора являются данные, введенные в поле, например, txtPersonName:
если в качестве условия использовать:
strSQLWhere = strSQLWhere & "[PersonName] Like '" & txtPersonName & "' AND"

то если данные в поле txtPersonName имеет апостроф, возникнет ошибка при выполнении запроса (или открытии набора). Данная строчка с использованием указанной функции выглядит так:
strSQLWhere = strSQLWhere & "[PersonName] Like '" & Apostrophe(1, txtPersonName) & "' AND"


Вот и сама функция:

Function Apostrophe(Num As Integer, strString As String) As String

Dim intLenString As Integer
Dim intPos As Integer
Dim strTemp As String

' подсчет длины исходной строки

intLenString = Len(strString)

If intLenString = 0 Then
Apostrophe = ""
Exit Function
End If

' выяснение позиции аострофа в исходной строке

intPos = InStr(Num, strString, "'")

If intPos = 0 Then
Apostrophe = strString
Exit Function
End If


strTemp = Left(strString, intPos) & "'" & Right(strString, intLenString - intPos)


Apostrophe = Apostrophe(intPos + 2, strTemp)

End Function
Назад ToTop
L.E. 12.11.2012
Рейтинг@Mail.ru