Tengo un campo (una cadena) que se parece a esto: '0000000840509001' cuando está impreso en mi informe. Quiero que se vea así: '84-05-090.01'. ¿Hay alguna forma de hacer esto en el nivel de diseño del informe?
Básicamente, quiero eliminar los ceros iniciales y poner la cadena restante en un formato ##-##-###.##.
Respuesta1
Lamentablemente, no existe un método único para eliminar los ceros a la izquierda... pero aquí hay un pequeño truco que aprendí...
format(replace(ltrim(replace([your-field-name],"0"," "))," ","0"),##-##-###.##)
descompuesto...
format(
replace(
ltrim(
replace(
[your-field-name],
"0",
" "
)
),
" ",
"0"
),
"##-##-###.##"
)
El método para llegar a la locura es reemplazar todos los ceros con un carácter de espacio y luego "recortarlo" sólo en el lado izquierdo. (no queremos que los ceros finales desaparezcan) luego reemplace los caracteres de espacio con ceros... y finalmente formatéelo de la manera que desee.
Alternativamente... en lugar de intentar recortar los dígitos... también puedes convertirlo a un número entero real usando cint() y luego formatearlo así:
format(cint([your-field-name]),"##-##-###.##")
Es posible que cualquiera de los métodos no funcione de la manera deseada... simplemente porque no hay ningún error al verificar si la entrada proporcionada es válida. es decir, si tiene 10 (o más) dígitos significativos en lugar de 9... truncaría silenciosamente los dígitos iniciales... además, usar cInt no aceptará "caracteres" como "0000000ABCDEFGHI" o lo que sea...
Es posible que desee crear una función en vb-script para formatear correctamente... y luego usarla en su informe. Pero este es un tema mucho más complejo... así que no voy a tocarlo aquí.