No se si me puedas ayudar lo que pasa es que estoy realizando un programa en donde yo tengo un grid dondeme muestra a todos mis cliente con su respectiva clave pero lo que yo necesito es que al darle click en el nombre de mi cliente (o en la clave), me salga su saldo deudor de las ventas pasadas junto con todos sus artículos que le he vendido todos esos datos los tengo en una tabla
1 respuesta
Respuesta de Antonio Garcia
1
1
Antonio Garcia, clipper todas sus versiones (manejo total) power builder todas...
Este efecto lo puedes conseguir de la siguiente forma: Primero: Creas una nueva ventana de tipo response, en donde colocas un nuevo datawindow tipo grid, apuntando este a la tabla que me comentas, luego en el evento create del datawindow control, ademas de asignar el objeto de transacción que utilizas también activas el retrieve del nuevo datawindow, este retrieve deberá recibir un parámetro el cual es el código del cliente que necesitas recuperar la información que me comentas, este valor lo dejo a tu criterio puesto que no se que tipo es, (más adelante te explico como deberás integrarlo) Segundo: En el datawindow donde se encuentran los clientes utilizas el evento doubleclick de este, haces la llamada del nuevo window tipo response, solo que utilizas la apertura con parámetro, Por ejemplo, OPENWITHPARM(dw_datos_cliente, <codigo>) El código como te lo comento en la parte primera lo dejo a tu criterio, pues desconozco cual es el tipo. Tercero: La apertura de una ventana de forma OPENWITHPARM, indica que el parámetro que acompaña el nombre del window, será recibido dentro de esta, esta forma de apertura se auxilia de una clase llamada MESSAGE la cual puedes utilizar como intermediario entre una ventana y otra tanto de ida como de vuelta, esta clase tiene varias propiedades, las cuales son asignadas automáticamente dependiendo del tipo de dato que envíes o devuelvas. Por ejemplo En tu casi si el valor del código del cliente es numérico, entonces power builder asigna este valor a la propiedad DOUBLE, de tal manera que en la nueva ventana extraigas el valor enviado o recibido como: LONG ll_codigo ll_codigo = MESSAGE.DOUBLE Y el valor será inscrito en la variable ll_codigo. Advertencias. Los valores de las propiedades de la clase MESSAGE, cambian cada vez que se efectúa una transacción, por lo que te recomiendo que, una de las primeras cosas que haga la ventana o window, es asignar el valor de dicha clase y propiedad, a una variable de instancia, la cual este disponible en toda la ventana, evitando con esto puedas perder el valor por algún motivo. Por ejemplo Cuando es creado un objeto o control dentro de una ventana, (recomendable que siempre elijas el primero), en el caso del ejemplo en los párrafos anteriores, proponía que asignaras el valor dentro del evento constructor, del datawindow control, en este caso no es necesario asignar el valor a una variable de instancia, puesto que la ventana solo va a extraer los valores y los presenta, por lo que utilizando un valor local es suficiente. Digamos entonces que el código del cliente es numérico. El script en el evento constructor seria más o menos así: LONG ll_codigo ll_codigo = MESSAGE.DOUBLE THIS.SetTransObect(SQLCA) THIS.Retrieve(ll_codigo) Por supuesto que el datawindow object deberá recibir el parámetro o argumento, e internamente manipularlo para extraer unicamente la información requerida, Finalizando. Para más información (si así lo necesitaras), con respecto a la clase MESSAGE, simplemente pulsa la tecla F1, y escribres MESSAGE, y encontraras otras propiedades, las cuales son asignadas dependiendo del tipo de valor que envías o recibes, sin embargo, solo puedes recibir o enviar uno a la vez.