¿Cómo actualizar correctamente un DataWindow a partir de DropDownDWChild?
Utilizando un script que encontré en esta página, he construido un DW que internamente utilizan DropDownDWChild.
La idea es que al seleccionar un órgano jurisdiccional, me cargue "sólo" las especialidades asignadas a ése órgano. De igual forma, al seleccionar una especialidad, deberá recuperar "sólo" las materias de esa especialidad.
http://www.subeimagenes.com/img/dudapb1-166723.html
Cuando lo haga por primera vez, lo hace bien; pero al modificar el órgano, permanecen la especialidad y materia del órgano anterior.
http://www.subeimagenes.com/img/dudapb2-166726.html
En realidad los dwchild si se cargan, pero como primer registro y visible aparecen los datos del anterior órgano; lo que puede inducir a error al no mostrarse los correctos como primer registro.
Los datawindows están creados perfectamente, incluso hacen los retrieve desde su entorno.
Este es el código que utilizo. Espero puedan ayudarme a identificar donde está mi error.
DW_DATOS: INSTANCE VARIABLES
============================
DataWindowChild dwch_espec
DataWindowChild dwch_mat
integer II_orgstring IS_espe
DW_DATOS: EVENTO CONSTRUCTOR
===========================
integer a, b
this.settransobject(sqlca)
this.retrieve()
this.scrolltorow(this.insertrow(0))
a =this.GetChild("especialidad",dwch_espec)
dwch_espec.insertrow(0)
dwch_espec.settransobject(sqlca)
b = this.GetChild("materia", dwch_mat)
dwch_mat.insertrow(0)
dwch_mat.settransobject(sqlca)
DW_DATOS: EVENTO ITEMCHANGED
============================
integer cod_org, cod_mag, cod_sec, valor
string pat, mat, nom, esp
if dwo.name = "órgano" then
cod_org = integer(this.gettext())
//CAPTURAR EL CÓDIGO DEL MAGISTRADO DEL ÓRGANO SELECCIONADO
SELECT "responsable"."magistrado" INTO :cod_mag FROM "responsable"
WHERE "responsable"."órgano" = :cod_org;
//CAPTURAR APELLIDOS Y NOMBRES DEL MAGISTRADO
SELECT "magistrado"."paterno", "magistrado"."materno", "magistrado"."nombres"
INTO :pat, :mat, :nom FROM "magistrado"
WHERE "magistrado"."magistrado_id" = :cod_mag;
//ACTUALIZAR EL TEXT
this.Modify("t_mag.text='" + pat + " " + mat + " " + nom + "'")
//CAPTURAR EL CÓDIGO DEL SECRETARIO DEL ÓRGANO SELECCIONADO
SELECT "responsable"."secretario" INTO :cod_sec FROM "responsable"
WHERE "responsable"."órgano" = :cod_org;
//CAPTURAR APELLIDOS Y NOMBRES DEL SECRETARIO
SELECT "secretario"."paterno", "secretario"."materno", "secretario"."nombres"
INTO :pat, :mat, :nom FROM "secretario"
WHERE "secretario"."secre_id" = :cod_sec;
//ACTUALIZAR EL TEXT
this.Modify("t_sec.text='" + pat + " " + mat + " " + nom + "'")
//ALMACENAR SOLO LAS ESPECIALIDADES ASIGNADAS
valor = (integer(this.gettext()))
if valor<> II_org then
II_org = valor
dwch_espec.retrieve(valor)
end if
elseif dwo.name = "especialidad" then
esp = this.gettext()
if esp <> IS_espe then
IS_espe = esp
dwch_mat.retrieve(esp)
end if
end if