Evento-señal "despues de actualizar"


([N4] ns) #1

Buenas, hay algún evento que sea como el "despues de actualizar" de Access. Se ejecuta al modificar un campo, en velneo sin embargo no encuentro nada parecido y creo que es un evento-señal muy útil.


([N4] velavisual) #2

@info.naturalsoft

 

Desconozco realmente lo que hace el -después de actualizar- de access, pero te indico los posibles eventos que existen en las propias tablas de velneo. Creo que puedes referirte al evento - Modificación: Posterior a una modificación de ficha.

Si no es así, no creo que tengas problemas en crear un proceso que ejecutado dentro de cualquiera de estos eventos consigas  lo que pretendes.

 

Puedes contarnos la situación, de esta forma nos será más útil poder ayudarte.

 

 

[attachment=5656,593]


([N4] ns) #3

Buenas, el ejemplo que estoy haciendo es el siguiente. Tengo un formulario que tiene 4 campos numéricos:

-Costo

-%Margen

-Pvp (=Costo+costo*margen/100)

-Ganancia (Pvp - Costo)

 

Lo que quiero es que al editar cualquiera de los campos se me recalculen los demas, esto en Visual Basic se hace con un evento que se llama "Despues de actualizar" que se ejecuta despues de modificar el contenido de un campo.

Ahora en velneo lo tengo medio solucionado con la señal "Pierde foco" pero no me convence como está funcionando, no es "redondo", por ejemplo: sí escribo algo en un campo edición y en lugar de pulsar el Tab para cambiar de campo pulso por ejemplo el botón "Aceptar" (Interfaz: Aceptar) se cierra el formulario, no se ejecuta el evento y no se me recalculan los campos.

 

como puedo hacer esto de una manera mas fiable?

 

gracias


([N4] velavisual) #4

@info.naturalsoft

 

¿Has probado a sustituir los campos numéricos por campo tipo -Fórmulas Numéricas- ?

 





([N4] ns) #5

Sí pero no lo domino y tengo una duda respecto a eso.

En el ejemplo que he puesto antes, todos los campos son editables por el usuario, es decir, la Ganancia (que seria en formula, PVP-Costo) puede ser modificada por el usuario de manera que el escriba que ganancia quiere obtener y se recalculen en margen y el Pvp que corresponderian. De igual forma el usuario podría modificar el Pvp y se tendrian que recalcular Margen y Ganancia.

 

¿Eso se puede hacer con furmulas numericas?  

Los campos formula numerica son editables?

 


([N4] velavisual) #6

Las fórmulas numéricas se emplean en campos virtuales que se generan en ejecución según la fórmula que la contiene.

 

Por lo tanto, si los campos de la fórmula que usas deben ser editados por los usuarios, yo te recomiendo que uses otros campos cuya formula o  contenido inicial sean los editados por los usuarios.

 

Ejemplo:

A=campo editable

B=campo editable

Af=ContenidoInicial de A

Ab=ContenidoInicial de B

C=formulanumerica(Af+Ab)

 


([N4] ns) #7

Gracias, no se si lo he entendido del todo, pero voy a hacer unas pruebas y te comento como fué...

 

Un saludo 


([N2] overall) #8

Buenos días,

Podrías probar con la señal soltar tecla, de ésta forma el cálculo se hace siempre al momento.

Saludos

Overall


([N1] JorgeVelasco) #9

Buenas noches.

No es más fácil tener los 4 campos numéricos, de los cuales el PVP tenga de contenido incial (Costo+costo*margen/100) y el campo Ganacia tenga de contenido incial (Pvp - Costo) y dos eventos al perder foco tanto el campo Ganancia como el campo PVP?

Un saludo.

 

 

Jorge Velasco

SISTEMA BINARIO

 


([N4] mperez) #10

Como te indica Jorge, creo que estas complicando muchisimo algo que en Velneo es sencillisimo.

Tan solo necesitas utilizar "El Valor Inicial", y eso es todo. Pvp, Margen , Costo y Ganacia seran campos normales.

En Valñor inicial te limitas a poner la formula que deseas, ojo puedes incluso utilizar cualquier campo de cualquier tabla enlazada.

En ejecucion, si te cambia algun componente de la formula, te cambiara el contenido o si cambia el enlace de alguna tabla que intervenga.

EN definitiva prueba los valores iniciales, averigua como funcionan y te darás cuenta de que tienen muchisima más potencia de la que parece a primea vista y te evitan en muchisimos casos eventos de otros lenguajes, ya que al definirlos en la base de datos, lo haran igual en cualquier formulario o proceso que intervenga.


([N4] ns) #11

Buenas, estoy probando la manera que ha comentado Jorge y me encuentro nada mas empezar un problema al que no le veo explicación, a ver si sabeis por que es...

En la tabla los campos estan definidos de la siguiente manera:

-Costo: Numerico sin contenido inicial. Longitud 4, decimales 2

-Margen: Numerico sin contenido inicial. Longitud 4, decimales 2

-Pvp: Numerico, contenido inicial (costo+costo*margen/100). Longitud 4, decimales 2

-Ganancia: Numerico, contenido inicial (pvp-costo). Longitud 4, decimales 2

 

Solo hay 2 eventos al perder foco Pvp y al perder foco Ganancia (Ver imagenes adjuntas)

 

Voy a poner un ejemplo con números de como me está calculando el pvp y ganancia paso por paso.

1-Relleno el Costo con 100: Se quedan Costo=100, Margen=0, Pvp=0  y Ganancia=557.92

2-Relleno el Margen con 27: Se quedan Costo=100, Margen=27, Pvp=54 y Ganancia=611.92  (No tiene sentino este resultado, no?)

3-Relleno el Pvp con 120 y pulso Tab para cambiar de campo ( se ejecuta el evento modificar_pvp): Se quedan Costo=100, Margen=20, Pvp=40 y Ganancia=597.92

 

Bueno este es el ejemplo que estoy probando y por mas que lo miro, no lo entiendo.

 

Por cierto, ahora mismo mientras escribia este post e iba haciendo pruebas cambiando de aplicación con Alt+Tab me he dado cuenta de que se recalculan los campos, es decir, si tienes velneo abierto con el cursor en un campo que tiene un evento asociado al Perder Foco y cambias de aplicacion 2 o 3 veces se está ejecutando el evento, no debería ser así verdad?

 

Otro problema que le veo a la señal Pierde Foco es que si tu modificas un campo con una señal Pierde Foco y en lugar de cambiar de campo o pulsar Tab pulsas un botón Aceptar (Interfaz: Aceptar) no se ejecuta el proceso asociado a la señal Pierdo Foco.

 

 


([N4] ns) #12

Las imagenes....

[attachment=5692,596] [attachment=5692,597]


([N1] JorgeVelasco) #13

Buenas.

Lo primero revísate el contenido inicial del campo PVP. Por los ejemplo que has puesto te está cogiendo el doble del campo MARGEN.

Que se te desmadre el campo GANANCIA puede ser que al quedar el valor en negativo, al ser COSTO > PVP, no tengas puesto en la propiedad "Signo" del campo GANANCIA el valor "Verdadero"

Un saludo.

 

 

Jorge Velasco

SISTEMA BINARIO

 


([N4] mperez) #14

o estoy muy perdido , o no se para que necesitas los eventos ni las señales.

Es mas puede que los valores estraños, se esten produciendo por este motivo, ya que estas modificando los valores por dos sitios distintos. Uno tu con los eventos y otro la base de datos por la definicion del Valor Inicial.

Elimina los eventos que tienes y debe funcionar. Si te saca valores raros, en algunos casos es por el tema de los negativos que se produzcan y no lo tengas definido o por dimensiones pero me parece que ese no es tu caso

 

http://6x.velneo.es/3480/%C2%BFcuando-se-evalua-la-formula-de-un-contenido-inicial-de-un-campo/

 

Si tienes definido como dices

 

-Costo: Numerico sin contenido inicial. Longitud 4, decimales 2

-Margen: Numerico sin contenido inicial. Longitud 4, decimales 2

-Pvp: Numerico, contenido inicial (costo+costo*margen/100). Longitud 4, decimales 2

-Ganancia: Numerico, contenido inicial (pvp-costo). Longitud 4, decimales 2

 

El Pvp se te recalculara segun el valor inicial que definiste cada vez que varies el costo o el margen.

La ganancia, cada vez que modifiques el Costo, o se modifique aunque sea automaticamente el Pvp por la condicion anterior


([N4] ns) #15

Buenas,

Jorge: Creo que el contenido inicial del campo PVP esta bien, es decir (COSTO+COSTO*MARGEN/100) pero aparentemente parece que siempre lo calcula como (COSTO+COSTO) , pero esta bien puesto, adjunto imagen. 

 

Mperez: Necesito los eventos porque en este ejemplo el cliente necesita flexibilidad en cuanto al margen, ganancia, etc... de manera que ademas de que el programa calcule la GANANCIA tambien te permita introducir manualmente la GANANCIA deseada y se recalculen automáticamente MARGEN y PVP. De igual manera ocurre con el PVP ademas de calcularse automático debe permitir edición y mediante proceso recalcular el MARGEN y la GANANCIA.

 

Creo que por esto necesitamos eventos y no veo la forma de hacerlo sin ellos. 

 

¿Que me decis del problema que he comentado, cuando se ejecuta el evento "Pierde foco" al cqambiar de aplicación en Windows con Alt + Tab?


([N4] mperez) #16

Y quien  dice que no es así.

Igual estoy entendiendote mal , pero fijate que siempre estoy hablando de campos numericos  con Valor inicial, no te campos formula. Funciona exctamente como tu quieres. Un campo numerico permite la edición al margen te que tenga un valor inicial y este se recalcule (Si tu cambias los parametros claro)

Si tu cambias Margen o Pvp, el valor del campo Ganancia cambiará ya que depende de ellos. Pero si tu modificas directamente el contenido de Ganancia este permanecera con el valor que le has puesto tu, independientemente de los componentes del valor inicial.

Solo en el caso de que vuelvas a variar alguno de estos componentes el Margen o el pvp, te lo recalculara, pero esto es lo lógico y normal.

Esto es normal en los que venis de otras herramientas de programación y como siempre, todo lo que puedas recolver en la parte de datos es mucho más eficaz que en un formulario, ya que puede haber otro tipo de formularios o entradas que deban realizar la misma operacion y tendras que programarlo en cada ocasión. De esta forma te evitas esto.

No es el caso, por que el ejemplo que pones es muy sencillo y creo que lo que te he comentado basta. Pero en casos mas complejos cabe la posibilidad de poner un valor calculado y otro valor forzado, por ejemplo Descuento calculado (En funcion de tarifas, precios , escalas y clientes por la maquina) y otro campo manual que fuera Descuento Forzado o Manual y crear a su vez otro campo en la tabla de datos que te de el calculado, salvo que exista un valor manual. Pero repito, para lo que tu quieres nada de esto último hace falta.


([N4] alfons.emecesoftware) #17

Qué tal a todos,

@info.naturalsoft,

yo estoy con lo que insiste Miguel Pérez, y creo que con sólo campos numéricos y con contenidos iniciales debería funcionarte. También es importante la sintaxis de las operaciones.

Comentas : (COSTO+COSTO*MARGEN/100).

Quizás mejor ( (COSTO) + (COSTO*MARGEN/100) ). O incluso ( (COSTO) + ( (COSTO)* (MARGEN/100) ) ).

Es mi opinión creyendo haber entendido tu caso. Un saludo.

 


([N1] Nacho) #18

Hola @info.naturalsoft

Asegurate de los siguientes puntos:

1- Todos los campos de la tabla tienen que permitir valores negativos!!! (Propiedad Signo: Verdadero), como ya te dijo Jorge. !!!Esto te puede provocar valor muy extraños!!!!

2- Utiliza lo valores iniciales, pero ten atención cuando modificas los campos. Te explico:

Evento modificar Ganancia: Al modificar el campo MARGEN, el sistema automáticamente recalculará el campo PVP, puesto que su valor inicial está en función del MARGEN, es este caso no sería necesario modificar el campo PVP.

El cambio del PVP provocará un cambio de GANANCIA, pero si el cálculo está bien debería dar como resultado su valor actual.

Evento Modificar PVP: Lo mismo al modificar el MARGEN --> modifica el PVP --> modifica GANANCIA automáticamente

 


([N4] mperez) #19

Yo me refería a algo similar a lo que te propongo aquí, evidentemente con eventos lo puedes solucionar, pero desde mi punto de vista a la larga y cuando el software crezca, es mucho mas complicado de mantener. Puede que necesites crear algún campo más y puede que no este bien resuelto ya que lo he escrito deprisa y corriendo, pero quería incidir en que esete tipo de cosas se pueden resolver sin necesidad de eventos y solo con la parte de datos. De esta manera sa cual sea el interface o incluso con el Dataclient funcionara para siempore y en todos sitios.

Pero para gustos colores y tambien es cierto que es posible que sea mas pesado hacerlo asi al principio pero a la larga es mucho mas comodo de mantener

 

Costo : Numerica

Margen Propuesto: Numerica, Valor Inicial :

                                Decidir Datos Si Ganacia Forzada Manualmente : Ganancia x 100/ costo 

                                                   Si Pvop Forzado Manualmente : Pvp-(Costox100)/Costo (Si Pvp Forzado)

                                                   Si ninguno de los dos , el valor que le den manualmente

Pvp : Campo Formula : Decidir dato si Pvp Manual =0 ,Valor Inicial C + (CxM/100), si no Pvp Manual

Ganancia : Campo Formula : Dicidir dato Si Ganancia Manual =0 ,PVP-C, si no Ganacia Manual

 

Pvp Forzado Manualmente : Campo Numerico

Ganancia Forzada Manualmente Manualmente : Campo Numerico


([N1] Nacho) #20

Estoy con @mperez, todo lo que pongas en la parte de datos serán reglas que se aplicarán desde cualquier interfaz, y quedará mucho mas robusto.