Cómo quitar tildes (acentos) en campos de texto de una tabla de Access

Tengo una BBDD Access de 2000 registros aproximadamente. Algunos registros en los campos de Nombre y de Apellidos tienen acentos y otros no. Quiero quitar los acentos a todos los que lo tienen de una forma rápida.

Trabajo con Office 365. He buscado información con la ayuda de la aplicación y no la he encontrado.

Con Buscar y Reemplazar, tampoco lo consigo de una forma rápida.

He intentado hacer una consulta de actualización y no lo consigo.

¿Pueden ustedes ayudarme?

Respuesta
1

Una forma de hacerlo "de una pasada" y sin mucha complicación (pero por si las moscas, prueba en una copia de tu BD):

Crea un módulo nuevo en tu BD y en él pega esta función:

'--------------------------------------------------------------------------------------------
'Función para quitar acentos de una cadena de texto
'--------------------------------------------------------------------------------------------
Public Function fncQuitarAcentos(ByVal strTexto As String) As String
Const conAcentos = "ÁÀÂÄÃáàâäãÉÈÊËéèêëÍÌÎÏíìîïÓÒÔÖÕóòôöõÚÙÛÜúùûüÝýÿ"
Const sinAcentos = "AAAAAaaaaaEEEEeeeeIIIIiiiiOOOOOoooooUUUUuuuuYyy"
Dim i As Long
Dim lngPos As Long
Dim strCaracter As String * 1
If Len(strTexto) = 0 Then
fncQuitarAcentos = ""
Exit Function
End If
For i = 1 To Len(strTexto)
strCaracter = Mid(strTexto, i, 1)
'comparamos el caracter con la cadena con acentos
lngPos = InStr(1, conAcentos, strCaracter, vbBinaryCompare)
'si se ha encontrado coincidencia ...
If lngPos <> 0 Then
'sustituímos el caracter con el que tiene la misma
'posición en la cadena sin acentos (o sea la letra sin acentos)
strCaracter = Mid(sinAcentos, lngPos, 1)
End If
'... y si no, pues seguimos como si nada
fncQuitarAcentos = fncQuitarAcentos & strCaracter
Next i
End Function

Guarda los cambios.

Crea una consulta, añade únicamente el campo (o campos) al que le quieres quitar los acentos, convierte la consulta en una consulta de actualización, y en la fila "actualizar a" que te aperecerá, pones, en cada campo:

fncQuitarAcentos([NombreCampo]).

Así como te muestro en la imagen:

Otra forma es que crees directamente la consulta en Vista SQL, por ejemplo:

UPDATE TuTabla SET TuTabla.Campo= fncQuitarAcentos([Campo]);

En tu caso, con dos campos, sería algo así (cambia el nombre de la tabla):

UPDATE TuTabla SET Nombre = fncQuitarAcentos([Nombre]), Apellidos = fncQuitarAcentos([Apellidos])

¡ Muchísimas Gracias, Sveinbjorn El Rojo.

Aunque todavía me parece mentira... Ya he solucionado el problema. He descubierto por qué algo tan sencillo como Buscar y reemplazar no me funcionaba.

Cuando se selecciona un campo para la búsqueda y el resto de parámetros son correctos como "Buscar en cualquier parte del campo" y desactivada la opción "Coincidir mayúsculas y minúsculas", una vez que escribo, por ejemplo la Á en Buscar y la A en Reemplazar, si se hace clic en la opción Reemplazar, sale el mensaje: "Microsoft Access no encontró el texto que especificó en el cuadro Buscar".

Creo que esto se debe corregir en la programación de la aplicación.

Hoy, intentándolo de nuevo, me he dado cuenta de que hay que dar en este caso, 1º a "Buscar siguiente" y después a reemplazar o directamente a Reemplazar todos.

Le agradezco sinceramente su amabilidad y su rapidez en ofrecerme una solución, pues he dedicado muchísimo tiempo a buscar alternativas a mi problema, ya que no controlo VBA.

Saludos cordiales,

María Belén

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas