** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Quitar acentos,ñ,...
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoQuitar acentos,ñ,...

 Responder Responder
Autor
Mensaje
enano123456 Ver desplegable
Habitual
Habitual


Unido: 27/Enero/2009
Estado: Sin conexión
Puntos: 129
Enlace directo a este mensaje Tema: Quitar acentos,ñ,...
    Enviado: 09/Enero/2016 a las 18:33
Muy buenas a todos.

Tengo una base de datos para la gestión de personal, donde también trato el tema económico.

Por la cuestión del personal y de las cartas, correos, etc. que le escribimos los nombres y apellidos tienen puestos sus acentos.

Para el tema económico necesito mandar un archivo a Hacienda con lo que ha cobrado cada uno, pero ese archivo no puede llevar ni acentos, ni ñ, ni º, ni ª.

Me gustaría saber si hay alguna manera de que al lanzar el informe se quiten estos caracteres y se reemplacen por las vocales sin acento u otra cosa.

Yo he probado en la Hoja de Propiedades del informe, en la columna Al paginar poner:

=Reemplazar([Nombre Completo];"Á";"A")

Pero no me lo hace.

No se mucho de VBA, trabajo con el asistente.

Muchas gracias por adelantado.
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 09/Enero/2016 a las 19:25
Hola enano123456,
en mis funciones favoritas tienes una función hecha por le maestro Emilio que quita los acentos, ampliándola un poco, evidentemente respetando su criterios podrías sustituir la "ñ" por "n".

Te paso el link para que la ojees


Mis Funciones Favoritas

Editado para insertar el link bien.

Suerte

Editado por jmmiralles - 09/Enero/2016 a las 19:30
Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
enano123456 Ver desplegable
Habitual
Habitual


Unido: 27/Enero/2009
Estado: Sin conexión
Puntos: 129
Enlace directo a este mensaje Enviado: 09/Enero/2016 a las 21:03
Hola jmmiralles

Como te dije no se mucho de VBA.

En la Función, cuando pones

Argumentos: strTexto => cadena de texto a convertir

strTexto que sería poner el nombre del campo donde están los nombres que quiero quitarle los acentos? ([Nombre Completo])

y esa función donde la pongo en la hoja de propiedades, Al abrir, Al paginar,..?

Muchas gracias, como verás no estoy muy ducho


Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 09/Enero/2016 a las 23:26
Hola nuevamente,
la función la pones en el módulo del informe.

strTexto, efectivamente, es el nombre, frase, campo etc que quieres tratar.

Replace es una Function de VBA su equivalente, si no controlas, es Reemplazar

Te dejo un link para que le eches un vistazo y sepas como funciona

Funcion Reemplazar

¿El evento? prueba en los que dices y también en "Al dar formato" de Detalle y tu mismo decides donde debes ponerlo, la mejor forma de aprender es probar y equivocarte.

Por cierto para llamarla lo puedes hacer desde la hoja de propiedades y en el evento pones por ejemplo:

Evento Al dar formato =SinTildes("Nombre de tu campo a modificar")

Suerte
Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
enano123456 Ver desplegable
Habitual
Habitual


Unido: 27/Enero/2009
Estado: Sin conexión
Puntos: 129
Enlace directo a este mensaje Enviado: 10/Enero/2016 a las 21:03
Hola jmmiralles

He puesto esto:

Option Compare Database

'*******************************************************************************
'* SinTildes
'* Devuelve sin tildes (acentos, dieresis) la palabra pasada como parámetro y
'* convertida a minusculas
'* Argumentos: strTexto => cadena de texto a convertir
'* uso: SinTildes strTexto
'* ESH 28/09/04 10:51
'*******************************************************************************
 Function SinTildes(strTexto As String) As String
  'strTexto = LCase(strTexto)  esto lo he quitado porque en el informe los nombres tienen que ir en mayúsculas
  strTexto = Replace(strTexto, "Á", "A")
  strTexto = Replace(strTexto, "É", "E")
  strTexto = Replace(strTexto, "Í", "I")
  strTexto = Replace(strTexto, "Ó", "O")
  strTexto = Replace(strTexto, "Ú", "U")
  strTexto = Replace(strTexto, "Ü", "U")
  SinTildes = strTexto
End Function            ' SinTildes

Y en Al dar formato del Detalle:

=SinTildes([Nombre Completo])

Pero no me funciona

Si puedes dime que hago mal

Muchas gracias por todo y por tu paciencia.
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5300
Enlace directo a este mensaje Enviado: 10/Enero/2016 a las 21:28
Hola buenas noches.

En el informe ya sabemos que tienes un control de texto que contiene el campo [Nombre Completo], yo le llamaría a partir de ahora así: NombreCompletoTxt (así, tal cual, sin espacios de ningún tipo y repito: NombreCompletoTxt, así le llamaría yo, haz la prueba).

Con esto te evitarás poner ningún evento, no los necesitas. (Ni al dar formato, ni a nada mas, sin eventos)

Pon ahora al lado de ese control, otro control mas (llámale como tu quieras, da igual), y en su origen de control pones esto:


=SinTildes(NombreCompletoTxt)

Lanza el informe y verás como tienes dos controles con dos nombres, uno con acentos y el otro sin acentos.

Usa el de sin acentos para pasarselo a Hacienda.

Ya nos cuentas.

Saludos.

P.D.: (Ahora que edito veo que el amigo Miralles también te ha contestado, hola Jose María).

Por cierto en esta función te falta esto para la Ñ, coloca lo que te indica Jose María.


Editado por VIMIPAS - 10/Enero/2016 a las 21:34
Gracias
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 10/Enero/2016 a las 21:29
Hola,

1º Para reemplazar la "ñ" por "n" debajo de lo siguiente
strTexto = Replace(strTexto, "Ü", "U")

pon esto
strTexto = Replace(strTexto, "ñ", "n")

2º En el evento "Al dar formato" del Detalle

pon

SinTildes( MI CAMPO)

Donde MI CAMPO es el campo o nombre que tienes que remplazar los acentos y la Ñ

Ojo, si llamas la función desde el módulo de VBA no tienes que poner el signo = delante de SinTildes, si lo haces desde la hoja de propiedades, en el evento al dar formato, si tienes que ponerlo.

Aprovecho la edición para saludar a Vimipas (Vicente) que se me había adelantado.

Editado para ampliar la advertencia de Ojo.

Espero te sirva, ya nos dices

Editado por jmmiralles - 10/Enero/2016 a las 21:34
Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
enano123456 Ver desplegable
Habitual
Habitual


Unido: 27/Enero/2009
Estado: Sin conexión
Puntos: 129
Enlace directo a este mensaje Enviado: 11/Enero/2016 a las 12:20
Muchas gracias a los dos.

jmmiralles, de la manera que me dices no me ha funcionado, seguro que hago algo mal

De la manera que me dice VIMIPAS me funciona perfectamente.

Muchísimas gracias a los dos.

Se puede cerrar.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable