MS Access 2007,查找并用新行替换字符

MS Access 2007,查找并用新行替换字符

Access 2007如何用新行替换字符(例如“~”)。我尝试使用替换框和 ALT+010,但它不被接受为新行。

有什么建议吗?

答案1

VBA 解决方案的替代方案是一个相当简单的 SQL 查询。
(我意识到我发布了 VBA 解决方案,但出于某种原因,我只考虑了这一秒钟,抱歉)。

如果无法在您的数据库上进行测试,我无法保证安全性,因此请在尝试之前进行备份,并且您需要根据需要替换表和字段名称。

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

事实上,如果您愿意,您应该能够使用查询生成器创建并运行它,只需确保您正在处理更新查询并输入Replace()上面的函数作为update to相关列的值。

答案2

这是一个快速的 VBA 函数,应该可以满足您的要求。将其放入数据库内的新代码模块中,根据需要进行调整,然后运行它。

显然,如果不在你的数据库上进行测试,我无法保证这是完全安全的,因此真的尝试之前请做好备份!而且,我没有努力推广该功能,只是根据给定的要求进行量身定制。

请注意,我在测试数据库中使用此代码,该数据库只有Table1字段IDdataID它们是 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

相关内容