В Access 2007 как заменить символ (скажем, «~») на новую строку. Я попытался использовать поле Заменить с ALT+010, но оно не принимается как новая строка.
Есть предложения?
В Access 2007 как заменить символ (скажем, «~») на новую строку. Я попытался использовать поле Заменить с ALT+010, но оно не принимается как новая строка.
Есть предложения?
Альтернативой решению VBA является довольно простой SQL-запрос.
(Я понимаю, что опубликовал решение VBA, но по какой-то причине я думал об этом только одну секунду, извините).
Не имея возможности протестировать его в вашей базе данных, я не могу гарантировать безопасность, поэтому, пожалуйста, сделайте резервную копию, прежде чем пытаться, и вам нужно будет заменить имена таблиц и полей по мере необходимости.
UPDATE Table1
SET data = Replace([data],"~~",Chr(13) + Chr(10));
На самом деле вы должны иметь возможность создавать и запускать его с помощью построителя запросов, если хотите, просто убедитесь, что вы работаете над запросом на обновление, и введите функцию Replace()
сверху в качестве update to
значения для соответствующего столбца. ,
Вот быстрая функция 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