Devolver un datawindow con closewithreturn

Tengo una ventana (w_principal) con un botón que llama a otra ventana de tipo response (w_select). En esta ventana hay un datawindows que se llena con una tabla, donde el usuario marca los documentos que desea. ¿De qué manera puedo pasarle estos datos a la ventana w_principal?
Yo necesito pasarle a la ventana w_principal el tipo, número y monto de los documentos que el usuario seleccionó .
Ya probé definiendo una estructura conteniendo un DW y también con una estructura con 3 listas (una por cada dato) y siempre obtengo el mismo error:
Power Builder Application Execution Error (R0002).
Application terminated.
Error: null object reference at line ...

Los datos permanecen en la ventana w_select hasta antes de ejecutar el CloseWithReturn(parent, st_datos)

1 Respuesta

Respuesta
Suponiendo que tu estructura se llama st_datos
st_datos lst_datos
lst_datos.campo1 = 'dato1'
lst_datos.campo2 = 'dato2'
lst_datos.campo3 = 'dato3'
closewithreturn(this,lst_datos)
En la ventana principal debes colocar
st_datos lst_datos
lst_datos = Message.PowerObjectParm
luego ya podras usar los datos q se encuentran dentro de la estructura
st_1.text = lst_datos.campo1
Creo que no me expliqué bien. Si yo quiero obtener los datos de UN SOLO documento, con la estructura funciona bien.
Pero yo quiero pasarle a la ventana w_principal datos de VARIOS documentos, es decir, el tipo, numero y monto de los documentos que el usuario seleccionó, que puede ser uno solo, algunos o todos. La cantidad de documentos que se devolvería a la ventana principal. No lo sé, depende de la selección del usuario.
Yo hice un programa similar donde proceso unos datos en una ventana y luego paso el DW resultante a otra ventana para emitir un reporte y funciona excelente.
Pero creo que pasar el DW con un CloseWithReturn desde la ventana response NO funciona porque llega nulo.
Desde w_principal llamo a la ventana response como:
OpenWithParm(w_select, li_codigo)
En el evento Close de la ventana response escribo:
    CloseWithReturn(parent, dw_1)
donde dw_1 es el datawindows que contiene los documentos seleccionados.
recibo el dw_1 con Message.PowerObjectParm asignandolo a una variable de tipo DW.
Pero al intentar trabajar con el dw que llega me da el error.
¿Qué otras alternativas puedo tener? O ¿Qué me está haciendo falta?
Nos agarró el fin de semana y no me pudieron responder nuevamente. Pero agradezco la pronta respuesta, aunque no era lo que quería saber. Ya encontré la solución y la comparto con ustedes:
En la ventana response, coloqué lo siguiente:
    // Filtro los seleccionados
    dw_1.SetFilter("seleccionado = 1")
    dw_1.Filter()
    // Asigno cantidad de documentos y valores a la estructura
    st_dw.st_i = dw_1.rowcount()
    st_dw.st_datos = dw_1.Object.DataWindow.Data
    CloseWithReturn(parent, st_dw)

dw_1.Object.DataWindow.Data devuelve un string que contiene los datos del datawindows delimitados por un tab.
Ahora bien, en la ventana principal, coloqué lo siguiente:
    // Recibo los valores
    st_dw = Message.PowerObjectParm


    // Verifico si el usuario marcó algún documento
if st_dw. st_i > 0 then
        // Asigno los valores al datawindows
dw_1. ImportString(st_dw. st_datos)

(...)
    end if
dw_1. ImportString(st_dw.st_datos) copia al datawindows los datos contenidos en mi variable string.
Con esto resolví. Espero que sea de ayuda para alguien más.
Gracias.
PD. Califico como Regular porque no tengo otra opción. Sorry!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas