¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo convertir un campo de cadena a número en la base de datos de forma eficiente

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 7 Vistas
0
Cargando...

Tengo un campo que es una cadena en la base de datos, pero quiero convertirlo a un número para poder formatear decimales, etc.

He intentado

toNumber {table.field}

pero obtengo "la cadena no es numérica" - ¿así que no todos son numéricos o hay nulos?

luego intenté el

Si TextoNumérico ({table.field}) Entonces

ANúmero ({table.field})

Sino

0

pero obtengo un 0 no deseado que aparece en el informe.

He intentado

Si TextoNumérico ({table.field}) Entonces

ANúmero ({table.field})

Sino

({table.field})

pero luego obtengo "se esperaba un número aquí"

Entonces, ¿cuál es la forma más eficiente de lograr esto? He leído publicaciones sobre preguntas similares, pero no encuentro la respuesta que funcione para mí.

¡Gracias por toda la ayuda! Jenn

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Jenn,

¿Qué deseas devolver si el valor no es numérico?

Tu primer fragmento de fórmula debería darte lo que estás buscando:


If NumericText ({table.field}) Then
      ToNumber ({table.field})
Else
     0

Si colocas una versión sin formato de {table.field} al lado del campo anterior, ¿cuáles son sus valores cuando se devuelve "0"?

Esto te dará una idea de qué elementos en la base de datos están causando que falle NumericText.

Tal vez intenta con IsNumeric(str) y ve si eso es diferente.

Tal vez verifica la configuración de localización de la base de datos en comparación con la configuración de CR, si los indicadores decimales son diferentes, podrías tener problemas.

También asegúrate de recortar los datos primero, los espacios en blanco al final o al principio harán que falle NumericText.

Por lo tanto, es posible que tengas que hacer algún formato en el texto antes de verificar si es numérico.

Para estar seguro, tal vez intenta


StringVar myNumericString

myNumericString := Replace({table.field}," ","");
myNumericString := Trim(myNumericString);       // Above will do this but just for fun 

 
If NumericText(myNumericString) then 
	ToNumber(myNumericString);
Else 
	0;

Con suerte eso ayuda.

Darren

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Gracias Darren. Eso funcionó. Muy apreciado.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

JC,

Just remove the "Else 0" part and this will sort of insert a NULL, if the field cannot be converted to a number.

You then have to format your Formula item on the layout of the report to handle zero values as <supress> or what ever you

want the "null" values to appear as.

Hope that makes sense.

Darren

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Al colocar el campo en el informe, los elementos que aparecen como ceros son o bien en blanco o una línea de guiones.


¿En lugar de "0" hay alguna forma de lograr " " en blanco?

jc

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?