En informe access tengo un campo DNI que me aparece así "34.025.525-X" y necesito generar una expesion para que quede "34025525"

Tengo un problema porque no soy experto, tengo un informe de una base de datos en access que me genera un listado de datos de clientes y entre los campos tengo el DNI, que me sale con la mascara así: 34.025.525-X, pero quiero que me salga 34025525 (que elimine los puntos, el guion y la letra), a ver si me podéis ayudar por favor, gracias (si puede ser una expresión, porque no tengo ni idea)

2 Respuestas

Respuesta

Si no dominas el VCB, casi mejor que en vista diseño del formulario le añadas un cuadro de texto, y en sus propiedades-Datos ponerlo como

De forma que cuando abres el informe

Yo minimizaría el cuadro de texto eliminado la etiqueta, o lo pondría como visible=no

Gracias Julián, esta perfecto, pero necesito que desaparezcan los puntos y el guion también, debe quedar de 22.222.222-B, a 22222222

Muchísimas gracias de antemano

Depende de como tengas definido el campo. Pero puedes ponerlo como

Que te quedaría

¡Gracias! Eres un crack, me has dejado nike, he estado probando cambiando en la tabla la mascara y dejándola así 00999999L y luego en el cuadro de texto del informe poner lo que tu me has indicado y funciona perfectamente. Un abrazo grande.

Respuesta

Si el ancho del DNI siempre es de 10 caracteres puede utilizar la siguiente función: (La puede definir en le reporte o en un módulo)

Function cambiar(strText As String) As String

       cambiar = CLng(Left(strText, 10))
  End Function

Puede crear un campo cuadro de control en el reporte va a Propiedades y en Origen del control coloca;

=cambiar(nombre_campo)

En donde nombre_campo es el campo que tiene el texto a convertir.

Ejemplo:

Si el campo tiene el texto 34.025.525-X al llamar la función cambiar("34.025.525-X") el resultado es 34025525

NOTA: No olvide ocultar el nombre del campo original.

Disculpe. Es un cuadro de texto y no cuadro de control.

La respuesta de Julián es excelente cuando conocemos el número de caracteres a extraer, pero que pasa si es menor o mayor. Que pasa si el separador es diferente de un punto(.) Y el separador de la letra no es guion (-). He preparado esta función para que la implemente para este caso u otros.

Debe guardarla en un Módulo.

Public Function cambiar(strText As String, Optional strLetra As String, Optional strSeparadorNro As String, Optional strSeparadorletra As String) As String
'Función para cambiar el formato del texto del DNI o número
'separado por un carácter cualquiera terminando en letra
'separada del número por cualquier carácter
'Elaborado por:
'eduardo perez fernández
'01/04/2020 Para TodoExpertos
'Ejemplos de llamada
¿ '? Cambiar("34.025.525-X","X",".","-")
'Retorna:
' 34025525
¿ '? Cambiar("34.025.5-X","X",".","-")
'Retorna:
' 340255
¿ '? Cambiar("34.025.525.235-X","X",".","-")
'Retorna:
' 34025525235
¿ '? Cambiar("34.025-W","W",".","-")
' Retorna:
' 34025
'NOTA: El texto puede contener cualquier cantidad de caracteres
' Si no hay separador, separador de letra y letra, queda igual
Dim strAux As String
If strSeparadorNro = "" Then 'Separador de numeros
strSeparadorNro = "."
End If
If strSeparadorletra = "" Then 'Separador de la letra
strSeparadorletra = "-"
End If
If strLetra = "" Then 'letra (último carácter)
strLetra = "X"
End If
' 1) Elimino el separador de numeros
strAux = Replace(strText, strSeparadorNro, "")
' 2) Elimino el separador de la letra
strAux = Replace(strAux, strSeparadorletra, "")
' 3) Elimino la letra
strAux = Replace(strAux, strLetra, "")
cambiar = strAux

End Function

¡Gracias! A todos sois estupendos. Muy agradecido. Ya os preguntame más cosas que me van a surgir seguro. Un abrazo desde Córdoba Spain.

Buenas tardes Sres.: Necesito aprender "mucho", sobre access, ¿me podría indicar alguien donde puedo encontrar muchas bases de datos de ejemplo? ¿Y sobre todo un buen manual del manejo del access?. Un saludo para todos.

Escríbame a [email protected] y con gusto le suministro un material, favor anotar en el Asunto la pregunta que hace.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas