MS Access 2007, localize e substitua caractere por nova linha

1

Em Access 2007 como faço para substituir um caractere (digamos "~") por uma nova linha. Eu tentei usar a caixa Substituir com ALT + 010, mas não é aceito como nova linha.

Alguma sugestão?

    
por Muleskinner 27.06.2011 / 10:29

2 respostas

1

A alternativa para uma solução VBA é uma consulta SQL bastante simples.
(percebo que postei a solução VBA, mas, por algum motivo, só pensei nesse segundo, desculpe).

Sem poder testá-lo em seu banco de dados, não posso garantir segurança, por isso, faça backup antes de tentar, e você precisará substituir os nomes de tabela e campo conforme necessário.

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

Você deve, de fato, ser capaz de criar e executar isso usando o criador de consultas, se desejar, apenas verifique se está trabalhando em uma consulta de atualização e insira a função Replace() acima como o valor update to para a coluna relevante.

    
por 27.06.2011 / 11:23
0

Aqui está uma função rápida do VBA que deve fazer o que você quiser. Coloque-o em um novo módulo de código no banco de dados, ajuste-o conforme necessário e, em seguida, execute-o.

Obviamente, não posso garantir que isso seja totalmente seguro sem testá-lo em seu banco de dados, então faça um backup realmente bom antes de testar isso! E eu não fiz nenhum esforço para generalizar a função, apenas adapte-a aos requisitos fornecidos.

Observe que estou usando isso em um banco de dados de teste que tem apenas Table1 com os campos ID e data , ID sendo o PK e data sendo o campo de memorando que desejamos modificar. Você terá que fazer ajustes no código abaixo para considerar sua tabela local e nomes de campos (eu comentei estas linhas para você).

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
    
por 27.06.2011 / 11:12