¿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

1 Respuesta

Respuesta
1

Como dices "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. "

Estoy revisando tu código y lo que necesitas es limpiar los datawindows que internamente tienen DropDownDWChild.

//ALMACENAR SOLO LAS ESPECIALIDADES ASIGNADAS
valor = (integer(this.gettext()))
  if valor<> II_org then
   II_org = valor
   //aqui agregamos 
   //limpiamos el dw especialidad e insertamos un nuevo registro
   dw_especialidad.reset()
   dw_especialidad.insertrow(0)
   dwch_espec.retrieve(valor)
  end if
elseif dwo.name = "especialidad" then
 esp = this.gettext()
 if esp <> IS_espe then
  IS_espe = esp
  //igual aqui
  //limpiamos el dw_materia  
  dw_materia.reset()
  dw_insertrow(0)
  dwch_mat.retrieve(esp)
 end if
end if

Hola leirbagvan.

Gracias por contestar pronto; pero lamentablemente no he podido resolver el problema.

Inserté las filas que indicaste pero no funcionó.

Ojalá pueda existir otra forma.

Muchos Saludos.

Estaba revisando cual puede ser el problema de tu código y pude averiguar lo siguiente:

Sito textualmente lo siguiente:

"Uno de los contratiempos que he tenido trabajando con este control es
Cuando aplicamos la función Modify sobre un campo, del DataWindow
Control, que ha sido editado con este estilo (DropDownDW ) y luego
Queremos acceder a los registros del Datawindow Child, devolvía valores
Nulos.
Conclusión:
Deberíamos recoger los valores antes de aplicar la función Modify."

WEB:http://oleksisfraga-udic.blogspot.com/2009/09/modify-dropdown-datawindow-dddw-en.html

Solución sería que captures los valores de las variables valor antes de la función modify.

Hola de nuevo.

Te comento que quité las lineas que contienen la función "modify" y persiste el problema.

Me gustaría saber si existe alguna forma de remitirte mi workspace y la base de datos pa para que lo revises.

Me importa mucho este código y necesito toda la ayuda posible.

Gracias

Para cualquier ayuda personal [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas