MyTetra Share
Делитесь знаниями!
Функция коя "ловит" апострофы в "буржуйских" именах.
Время создания: 16.03.2019 23:43
Раздел: !Закладки - VBA - Access - msa.polarcom.ru - 13 Преобразование Строк
Запись: xintrea/mytetra_db_adgaver_new/master/base/15320182494p5ym0uw5y/text.html на raw.githubusercontent.com

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

Автор: Коротков Александр  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



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования