Numero de decimales de un campo en un formulario no funciona?


([N1] percyleoncio) #1

Buenas amigos:
Tengo un campo que durante el alta la propiedad número de decimales no hace que el campo en el formulario presente el N° de decimales que en tiempo de ejecución mediante un evento lo establezco depurando el código veo que realmente figura el valor del N° de decimales mayor a cero pero en el formulario permanece sin decimales y sólo muestra correctamente los decimales cuando lo doy de alta y después vuelvo a visualizar en el formulario dicho campo.

Algún comentario?

Gracias


([N1] percyleoncio) #2

No había revisado si alguien tenía el mismo problema lo encontré en la publicación “Campo en formulario con decimales” y ahora si me funciona pero con js.


([N1] percyleoncio) #3

Nuevamente sobre lo mismo lo anterior lo consigo con un evento al ganar el foco con la siguiente instrucción
theRoot.dataView().control(“ED_PRE”).decimals = theRegisterIn.fieldToInt(“PAR_GES.DEC_RED”);
Ahora como le hago para que en el mismo control del formulario en Número de decimales le ponga directamente la instrucción en js le puse: theRegisterIn.fieldToInt(“PAR_GES.DEC_RED”);
pero da error de sintaxis.


([N1] sergi.esteve) #4

Hola percyleoncio, no sé si les pasará a los demás, pero yo al menos no me estoy enterando de nada, ni del problema que tienes ni de la solución js que propones.

Lo mejor es que pongas capturas:

Del campo de la tabla con sus propiedades que da problemas.
Del formulario con el control edición y sus propiedades.
Del problema que te da con los decimales

Porque pueden ser mil cosas

Así a bote pronto sobre el js.

¿ En la tabla de la que hablamos tienes un campo PAR_GES ?
¿ Qué error de sintaxis te da ?
¿ Estas usando las comillas dobles adecuadas (si las has copiado del foro seguramente estén mal) ?


([N1] percyleoncio) #5

Gracias por responder amigo sergi.esteve:

Fig.: Corresponde al meollo del asunto en alta de la ficha no figuran los decimales correctos, pero si figuran cuando la ficha ya está dada de alta.

La solución la tome de otra entrada del foro con un evento gana foco al campo Precio con lo siguiente:
theRoot.dataView().control(“ED_PRE”).decimals = theRegisterIn.fieldToInt(“PAR_GES.DEC_RED”); el cual funciona bien.

Pero pensé que podría funcionar si directamente con js le asigno a la propiedad Número de decimales, hice la prueba con: theRegister.fieldToInt(“PAR_GES.DEC_RED”); no tira error pero tampoco funciona.

Mientras tanto seguiré como está



([N1] wikan) #6

Yo optaría a guardar los decimales en una variable en memoria al inicio de la aplicación. Así no tienes que acceder a la ficha cada vez que necesitas poner el número de decimales.

Puede que en el alta, el campo #PAR_GES no tenga valor por eso no lo ves en el alta y si cuando la ficha esta grabada.


([N1] percyleoncio) #7

Durante el alta le asigne el valor de decimales con modificar campo luego lo grabé la ficha con Interfaz: Guardar ficha en alta o modificación pero seguian sin aparecer los decimales


([N4] Infortic) #8

Hola, no sé si el problema puede venir de ponerlo como fórmula, puede que el objeto theRegisterIn no funcione en este contexto.

En fórmulas en lugar de usar theRegisterIn, usa theRegister a secas ( theRegister.fieldToInt(“PAR_GES.DEC_RED”) ) ya que theRegisterIn es un objeto DEL FORMULARIO y no tiene valor en el ámbito de la fórmula.

Otra forma de hacerlo es la siguiente:

Crea un manejador js que haga:

theRoot.dataView().control(“ID_DEL_TEXTBOX”).decimals = theRegisterIn.fieldToInt(“PAR_GES.DEC_RED”);

Y una conexión de evento en el post init del formulario o cada vez que quieras que se evalúe.

Un saludo.

Sergio Esteve


([N1] wikan) #9

Creo que la fórmula de número de decimales solo se evalúa al iniciar. Si necesitas cambiarlo cuando ya está el formulario abierto deberás javascript.


([N3] pacosatu) #10

Hola percyleoncio.

Estoy de acuerdo con Sergio. No puedes pretender que después de soltar una parrafada de 4 líneas sin comas ni puntos, hagamos el esfuerzo extra de descifrar lo que has querido contar.
No quiero dictar normas, pero seguro que si redactamos las preguntas de forma detallada y clara, obtendremos mayor número de respuestas.

Hago un resumen del problema y de las respuestas dadas, para que el resto de foreros tengan una idea más clara.

  • Tenemos un formulario de Alta con 2 campos de una tabla.
  • El primer campo IMPORTE es numérico y con 4 decimales como máximo.
  • El segundo campo DECIMALES, también numérico, determina el Nº de decimales que mostraremos en IMPORTE, tendrá un valor de 0 a 4.

Queremos que al cambiar el valor del control DECIMALES, el control IMPORTE aparezca con el Nº de decimales indicado.

Para determinar el Nº de decimales que vamos a mostrar en el control IMPORTE, fijamos la propiedad “Número de decimales”.
Tenemos varias opciones:
1º- “Número de decimales” = #DECIMALES
2º- “Número de decimales” = /JAVASCRIPT/theRegister.fieldToInt(“DECIMALES”)
3ª- “Número de decimales” = #DECIMALES y un Manejador JavaScript que se ejecuta con el evento Value changed del control DECIMALES. El manejador JavaScript es:
theRoot.dataView().control(“IMPORTE”).decimals = theRegisterIn.fieldToInt(“DECIMALES”);

Las opciones 1º y 2º solo se evalúan una vez, cuando se crea el control, por lo tanto NO sirven para formularios de Alta.
La opción 3º es la que funcionará correctamente, tanto para Alta como Edición.

Saludos
Paco Satué


([N1] percyleoncio) #11

Gracias amigos por responder:

En el formulario tengo 3 campos que dependen del mismo valor (N° de decimales) que lo da una tabla padre cuyo valor actual lo tengo en una variable global, lo resolví simplemente creando una conexión Pre-Inicialización del formulario con un evento cuyas líneas son:

If (#ID=0)
—Modificar campo (PAR_GES, $PAR_GES@Pruebas_dat.dat)

y asunto arreglado y en cada campo de edición numérica simplemente quedó: Número de decimales=#PAR_GES.DEC.RED, no es necesario js