1

В Access 2007 как заменить символ (скажем, «~») на новую строку. Я попытался использовать поле Заменить с ALT+010, но оно не принимается как новая строка.

Есть предложения?

2 ответа2

1

Альтернативой решению VBA является довольно простой SQL-запрос.
(Я понимаю, что опубликовал решение VBA, но по какой-то причине я думал об этом только одну секунду, извините).

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

UPDATE Table1 
SET data = Replace([data],"~~",Chr(13) + Chr(10));

На самом деле вы должны иметь возможность создавать и запускать его с помощью построителя запросов, если хотите, просто убедитесь, что вы работаете над запросом на обновление, и введите функцию Replace() сверху в качестве update to значения для соответствующего столбца. ,

0

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

Очевидно, я не могу гарантировать, что это абсолютно безопасно без тестирования в вашей базе данных, поэтому сделайте действительно хорошую резервную копию, прежде чем попробовать это! И я не приложил никаких усилий для обобщения функции, просто приспособил ее к приведенным требованиям.

Обратите внимание, что я использую это в тестовой базе данных, в которой есть только Table1 с ID полей и data , ID - это PK, а data - это поле memo, которое мы хотим изменить. Вам придется внести изменения в приведенный ниже код, чтобы учесть ваши локальные имена таблиц и полей (я прокомментировал эти строки для вас).

Function SearchReplace()
    Dim db As DAO.Database, rs As DAO.Recordset, sSQL As String, sData As String

    'Get the record set we wish to modify
    Set db = CurrentDb
    sSQL = "SELECT * FROM Table1"                     '[replace table name]
    Set rs = db.OpenRecordset(sSQL)

    'iterate through each record
    While Not rs.EOF

        'check for the matching sub string in the field "data"
        sData = rs![Data]                             '[replace target field]
        If InStr(1, sData, "~~") Then

            'modify the data string, replacing "~~" with a line break
            sData = Replace(sData, "~~", vbCrLf)

            'escape any ' characters to avoid errors and/or injection
            sData = Replace(sData, "'", "''")

            'update the table with the modified string'
            sSQL = "UPDATE Table1" & _                '[replace table name]
                   " SET data='" & sData & "'" & _     '[replace target field]
                   " WHERE [ID] = " & rs![ID]          '[replace PK field]
            db.Execute sSQL

        End If

        rs.MoveNext
    Wend

    'destroy record set to be tidy
    rs.Close
    Set rs = Nothing

End Function

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .