Power Builder - recuperacion de datos dentro de un datawindow desp

 
Vista:

recuperacion de datos dentro de un datawindow desp

Publicado por Diana (57 intervenciones) el 28/06/2006 18:03:21
Hola, les escribo por que tengo una duda con el codigo que estoy utilizando para la recuperacion de datos.. E l problema es el siguiente:
yo tengo un data window que tiene dos drop down, el dropdown cuentas y el dropdown especificaciones. lo que yo quiero hacer es que cuando escoja una cuenta el dropdown de especificacion solo me cargue las especificaciones que pertenecen a esa cuenta..
Nota: Yo le puse argumentos de recuperacion en los dropdown. el de cuentas no le puse, pero le puse al de especificacion el argumento es id_cuentas.

Este codigo lo coloque en el evento itemchanged
String ls_cuenta

if dwo.name ='id_cuentas' then
datawindowchild dwc
ls_cuenta=data
getchild('id_especificacion',dwc)
dwc.setTransObject(sqlca)
dwc.retrieve(ls_cuenta)
end if

y este en el evento retrieveend

datawindowchild dwc

this.Getchild('id_especificacion',dwc)
dwc.Insertrow(0)
this.retrieve()
dwc.settransobject(sqlca)
dwc.retrieve(this.getitemstring(this.getrow(),'id_cuentas'))

yo coloque esto pero no me funciona, lo quiero saber es que si es que tengo algun error, o que donde estoy utilizando el argumento de recuperacion va es la llave primaria de cuenta o la de especificacion.. por favor espero me puedan ayudar con esto rapidamente, ya que es un proyecto que tengo que entregar y esto no me funciona...
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

RE:recuperacion de datos dentro de un datawindow d

Publicado por Jancarlo (890 intervenciones) el 28/06/2006 18:59:23
Tienes los siguientes DDDW:

1.- dddw_cuentas (Sin Argumentos)
2.- dddw_especificaciones (id_cuentas)

En el evento ItemChanged colocas los siguiente

datawindowchild dwc_espec
string ls_null

if not row > 0 then return

accepttext( )
setnull(ls_null)

choose case getcolumnname()
case 'id_cuentas'
getchild('id_especificacion',dwc_espec)
dwc_espec.settransobject(sqlca)
dwc_espec.retrieve(data)
setitem(row,'id_especificacion',ls_null)
end choose

En el evento RetrieveEnd

datawindowchild dwc_espec

if not rowcount > 0 then return

getchild('id_especificacion',dwc_espec)
dwc_espec.settransobject(sqlca)
dwc_espec.retrieve(getitemstring(getrow(),'id_cuentas'))

Ahora si el error persiste lo que te faltaría decirnos es, donde te arroja el error, en cual de los dos eventos o en ambos.

Suerte !
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

RE:recuperacion de datos dentro de un datawindow d

Publicado por Diana (57 intervenciones) el 28/06/2006 23:01:55
Hola, mira provee lo que me enviastes, pero cuando le doy consultar el cual tiene el scrip
t dw_1.retrieve()
entonces me manda error en esta linea del evento retrieveend
dwc_espec.retrieve(getitemstring(getrow(),'id_cuentas'))

pues ahora cada vez que presiono algun botom me pide argumentos de recuperacion..........
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

RE:recuperacion de datos dentro de un datawindow d

Publicado por Fabian Vera Vargas (1 intervención) el 03/07/2006 23:57:52
Hola: Yo lo que haría sería lo siguiente primero cargo el dw_cuentas y en su evento ItemChanged cargo el dwc de especificaciones y en el evento constructor del dw_especificaciones haría un InsertRow(0) para que no pida el parámetro. El código sería el siguiente:

// Evento ItemChanged para dw_cuentas
Datawindowchild dwc
String ls_cuenta
Integer li_found

IF dwo.name ='id_cuentas' then
ls_cuenta=data
This.GetChild('id_especificacion',dwc)
dwc.setTransObject(sqlca)
dwc.retrieve(Long(ls_cuenta)) // Carga el dwc cambiando tipo del argumento
// ls_cuenta a Long (o integer) segun el tipo en
// la tabla.
END IF
IF dwc_child.RowCount() <= 0 THEN
MessageBox("¡Aviso!", "No existen especificaciones para esta cuenta" )
END IF

// Evento Constructor para el dw_especificaciones
datawindowchild dwc
This.GetChild('id_especificacion',dwc)
dwc.SetTransObject(SQLCA)
dwc.Insertrow(0) // Aqui no hago el Retrieve de el dwc porque lo hago en el
// evento ItemChanged del dw_cuentas, de lo contrario pedirá
el argumento.

Con esto yo creo que es suficiente para lograr lo que deseas sin problemas.
Espero que te sirva y no sea tarde para tu proyecto. Alguna duda enviame un correo a [email protected].
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