Подтвердить что ты не робот

Доступ к VBA | Как заменить части строки другой строкой

Я пытаюсь создать фрагмент кода, который заменяет одно слово другим. Пример: Замените Авеню авеню и Север с N. Я использую MS Access, я мог бы использовать функцию SQL REPLACE, но я хочу сделать это в VBA с помощью модуля доступа, чтобы я мог привязать функцию к другому столбцу.

Я не уверен, с чего начать, поэтому любой ввод будет с благодарностью.

Гай

4b9b3361

Ответ 1

Использовать функцию доступа VBA Replace(text, find, replacement):

Dim result As String

result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave")

Ответ 2

Я читал эту тему и хотел бы добавить информацию, хотя она, конечно, уже не является своевременной для OP.

BiggerDon выше указывает на трудность замены rote "North" на "N". Аналогичная проблема существует с "Авеню" на "Авеню" (например, "Авеню Северной и Южной Америки" становится "Авеню Америк": все еще понятно, но, вероятно, не то, что хочет OP.

Функция replace() полностью не имеет контекста, но адресов нет. Для полного решения необходимо иметь дополнительную логику для правильной интерпретации контекста, а затем применить replace() по мере необходимости.

Базы данных обычно содержат адреса, поэтому я хотел бы указать, что обобщенная версия проблемы OP применительно к адресам в Соединенных Штатах была адресована (юмором!) системой поддержки точности кодирования (CASS). CASS - это инструмент базы данных, который принимает адрес U.S. и завершает или исправляет его, чтобы соответствовать стандарту, установленному Почтовой службой США. В записи в Википедии https://en.wikipedia.org/wiki/Postal_address_verification есть основные сведения, а в почтовом отделении доступна дополнительная информация: https://ribbs.usps.gov/index.cfm?page=address_info_systems

Ответ 3

Вы можете использовать аналогичную функцию, это позволит вам добавлять в разные случаи, когда вы хотите изменить значения:

Public Function strReplace(varValue As Variant) as Variant

    Select Case varValue

        Case "Avenue"
            strReplace = "Ave"

        Case "North"
            strReplace = "N"

        Case Else
            strReplace = varValue

    End Select

End Function

Тогда ваш SQL будет читать что-то вроде:

SELECT strReplace(Address) As Add FROM Tablename

Ответ 4

Так как строка "Север" может быть началом названия улицы, например. "Северный бульвар", направление улицы всегда находится между номером улицы и названием улицы и отделено от номера улицы и названия улицы.

Public Function strReplace(varValue As Variant) as Variant

Select Case varValue

    Case "Avenue"
        strReplace = "Ave"

    Case " North "
        strReplace = " N "

    Case Else
        strReplace = varValue

End Select

End Function