Power Builder - Retornar un DataWindow como Parametro

 
Vista:

Retornar un DataWindow como Parametro

Publicado por DataWindow como Parametro (11 intervenciones) el 08/09/2020 19:58:19
Colegas tengo problemas para recibir como retorno de una ventana recibir como parámetro los registro del Datawindows con data.Detalle mi proceso:

1.- Desde mi Window w_lista abro la ventana para completar una ficha de registro con:

1
OpenWithParm(w_formato, ls_id)

2. Al salir de esa ventana w_formato después de ingresar los datos en el datawindow dw_datos, en el boton Aceptrar de mi windows realizo lo sgte:
1
2
3
4
5
6
7
8
9
//Defino una estructura con una variable de tipo datawindow dw_datos
st_parametro   lst_parametro
 
lst_parametro.dw_datos = this.dw_datos         // Asigno el dw de retorno,
li_total = lst_parametro.dw_datos.rowcount()   // Verifico que contenga regitsro (66 reg)
 
CloseWithReturn(parent, lst_parametro)   // retorno toda la estructura
 
// Hasta aqui todo bien

3. Y en la Window w_lista, despues del openwithparm
1
2
3
4
5
6
7
st_parametro   lst_parametro
 
OpenWithParm(w_formato, ls_id)
 
lst_parametro = Message.PowerObjectParm
 
li_total = lst_parametro.dw_datos.rowcount()   // Verifico que contenga regitsros

ESTA ULTIMA LINEA ME SALE ERROR: NULL OBJECT
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Retornar un DataWindow como Parametro

Publicado por Jorge (29 intervenciones) el 13/09/2020 21:14:14
Hola,

Sucede que, cuando se cierra la ventana w_formato se destruye dw_datos; por tanto, cuando se intenta contar las filas (de algo que ya no existe) devuelve el error porque a la variable str_parametro.dw_datos se está asignado uan referencia (que se acaba de destruir).

Lo que se debe hacer es asignar una variable, de modo que permanezca auque la ventana se cierre. Podría ser, por ejemplo, un blob. es decir, devolver un Blob y ese blob convertirlo a datawindow o, simplemente, en la ventana w_formato asignarle el blob, de la siguiente menera.

Al llamar a w_parametro se debe enviar un control datawindow.

1
2
3
4
5
st_parametro 	lst_parametro
 
lst_parametro.dw_datos = dw_1
 
OpenWithParm(w_formato, lst_parametro)

En variables de instancia de w_formato se debe declarar una variable del mismo tipoo.
1
st_parametro		istr_request

En el Open de w_formato recibir la estructura.
1
istr_request	= Message.PowerObjectParm

En el botón Aceptar y al cerrar la ventana estoy devolviendo un 1, para validar al retorno.

1
2
3
4
5
6
7
8
dw_datos.acceptText( )
 
Blob		lblb_data
dw_datos.getFullState( lblb_data )
 
istr_request.dw_datos.setFullState(lblb_data )
 
CloseWithReturn( parent, 1)

Y en la Window w_lista, despues del openwithparm

1
2
3
4
5
6
7
8
9
10
11
12
13
st_parametro 	lst_parametro
 
lst_parametro.dw_datos = dw_1
 
OpenWithParm(w_formato, lst_parametro)
 
li_rc	= Message.DoubleParm
 
IF li_rc <> 1 THEN
	RETURN
END IF
 
li_total = dw_1.rowcount( )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Retornar un DataWindow como Parametro

Publicado por Sigfredo (11 intervenciones) el 15/09/2020 18:27:39
Lo que necesito recibir es todos el datawindow.

Gracias
Sigfredo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar