Problemas con el retieve arguments en power builder

Antes que nada un saludo tengo un problema con una ventana que contiene una datawindow en si es el problema en una consulta es decir al hacer doble clic sobre la fila de la datawindow aparece otra ventana con la consulta de esa fila pero bueno lo he hecho de manera que se le encía el id de la factura seleccionada y en el evento open recibo ese id y después hago el retrieve en base a esa factura pero lo que pasa es que siempre me muestra el primer id de la data window y no el cual sobre se hizp doble clic espero me puedas ayudar de antemano

1 respuesta

Respuesta
1
Te entiendo perfectamente, ¿dime en el segundo datawindows le has crear un argumento que recibe el id de la factura?
Bueno si osea en la parte de la dw de la consulta le especifico un retrieval arguments pero bueno lo pongo dentro del select de la siguiente manera.
:id_factura.
Claro, ¿en el datawindows le has especificado a que campo hace referencia el argumento?
Si pero digamos la otra ventana la abro con un openwithparm lo he intentado así pero en la otra window solo me aparece siempre los datos de el primer id_factura.
Lo quise intentar con el retrieval arguments pero me he puesto en líos por que me abre esa ventana de que especifique el argumento.
Sabes no se si me puedas decir una breve explicación de en si acerca del Retrieval arguments :( No entiendo mucho eso.
Muy bien, ya estamos, ahora es cuestión de código:
Creamos una variable global:
// Supongamos que el idfactura es de tipo String
String gs_idfactura
En la ventana donde seleccionamos (Evento: DoubleClicked)
// el idfactura seleccionado segun la fila lo colocamos en la variable global
gs_idfactura = This.GetItemString( This.GetRow( ), "idfactura")
// Abrimos la ventana que contiene los datos de la factura
Ahora en la ventana de los datos de la factura (Evento Open)
// Conectamos el datawindows con el objeto transaccion
dw_1. SetTransObject( SQLCA)
// Colocamos el valor del argumento del objeto datawindows, que en este caso es el id de la factura que capturamos en datawindows de la ventana anterior
dw_1. Retrieve( gs_idfactura)
Eso es todo, pruébalo y me avisas. Si tienes más dudas, me las haces saber.
Lo he hecho así pero bueno ahora en la ventana que abro para la consulta me sucede que no puedo modificar los datos y me sigue mostrando los datos de la primera factura no de la que le doy doble clic :(
Que raro, algo estas haciendo mal.
Hagamos algo, hay que darle nombres a las ventanas y a los controles dw.
Haber si entiendo, tienes una ventana donde te muestran todas las facturas, llamemos a esta ventana w_facturas y en el esta el control datawindows dw_facturas. Este control nos permite seleccionar una factura y ver los productos que se compraron, ¿estamos bien?. Entonces al dar doble clic en la en el registro seleccionado, nos habré otra ventana la cual llamamos w_productosfactura que contiene un control dw_prodfactura que te muestra solo los productos de dicha factura que seleccionamos anteriormente, ¿cierto?, si es así, entonces el código que te di hace rato debe de funcionar perfectamente.
gs_idfactura = This.GetItemString( This.GetRow( ), "idfactura")
El idfactura es el nombre del campo que contiene los id de las facturas asegurate de cambiarle el nombre por el que tu tienes.
Si es el nombre del campo correcto y digamos por medio de un message box verifico que id le envío y si es el correcto osea pero al momento de mostrar los datos de la consulta sigue mostrando los datos del id de la factura numero uno y otra cuestión es que en la ventana de la consulta no me deja modificar los datos.
Sabes, entonces el problema esta en el objeto datawindows, no has enlazado el campo al argumento, verifica eso por favor, si es así, mandame una imagen del objeto datawindows.
Je mi estimado estoy a punto de darme por vencido por hoy he vuelto a crear la dw y ya me deja actualizar los datos pero insisto no me muestra los datos de la factura a la cual le di doble clic
Entonces no estas enlazando el argumento creado al campo.
Supongamos que tu objeto datawindows que seas mostrar según la factura seleccionada, tiene los siguientes campos: idfactura, productos.
Ejemplo de la data:
--------------------------
Idfactura Productos
1 Prosesador Intel Core2Duo
1 Mouse Inalabrico V3JY21
1 Teclado HP V423
2                  Case Modelo A456JK
2 Monitor LG 21'
Entonces así esta conformado el datawindows, le creas un argumento arg_idfactura, entonces en la edicicion de la data buscas en la pestaña WHERE el idfactura y lo igualas con el argumento que creaste: arg_idfactura. Ver Imagen:
 
Tu lo tendrás con la columna de idfactura, después retornas a la vista de diseño del objeto datawindows y le das Retrieve, te pedirá que ingreses el argumento (arg_idfactura) ingresas por decir el "1" entonces te mostrara todos los productos de la factura 1, si te sale todo esto, con el código que te di no debes de tener ningún problema. No olvides finalizar la pregunta y valorar
Mi estimado si he hecho así como tu dijiste hasta el paso donde se crea el argumentpo hasta ahí voy boien mi estimado pero al momento de regresar a la vista de diseño en que parte debo de hacer el Retrieve()
Y dime al hacer el retrieve en la vista de diseño, ¿te pide el argumento?
Mi estimado en la vista de diseño donde debo de hacer el retrieve es decir en el menu rows me aparece la opción de retrieve pero me aparece deshabilitada.
Disculpa estoy perdido como te habrás dado cuenta soy un super novato pero no se donde hacer el retrieve en la vista de diseño
Disculpa enserio por que ya estoy pareciendo imprudente con mis preguntas y estoy asumiendo tu valiosisisisisisimo tiempo
En el menu busca el botón de retrieve:
Mi estimado he solucionado el problema Gracias eres excelente.
Se que no es bueno que me digas de ti pero bueno en la foto te vez muy chavo sabes he finalizado la pregunta pero ojala pudiera saber de ti osea mínimo tu edad y digamos en si a que te dedicas.
Excelente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas