在Access 2007如何用新行替换字符(例如“~”)。我尝试使用替换框和 ALT+010,但它不被接受为新行。
有什么建议吗?
答案1
VBA 解决方案的替代方案是一个相当简单的 SQL 查询。
(我意识到我发布了 VBA 解决方案,但出于某种原因,我只考虑了这一秒钟,抱歉)。
如果无法在您的数据库上进行测试,我无法保证安全性,因此请在尝试之前进行备份,并且您需要根据需要替换表和字段名称。
UPDATE Table1
SET data = Replace([data],"~~",Chr(13) + Chr(10));
事实上,如果您愿意,您应该能够使用查询生成器创建并运行它,只需确保您正在处理更新查询并输入Replace()
上面的函数作为update to
相关列的值。
答案2
这是一个快速的 VBA 函数,应该可以满足您的要求。将其放入数据库内的新代码模块中,根据需要进行调整,然后运行它。
显然,如果不在你的数据库上进行测试,我无法保证这是完全安全的,因此真的尝试之前请做好备份!而且,我没有努力推广该功能,只是根据给定的要求进行量身定制。
请注意,我在测试数据库中使用此代码,该数据库只有Table1
字段ID
和data
,ID
它们是 PK,data
是我们要修改的备注字段。您必须对下面的代码进行调整,以说明您的本地表和字段名称(我已为您注释了这些行)。
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