Power Builder - restaurar valor null en dropdowndatawindow

 
Vista:

restaurar valor null en dropdowndatawindow

Publicado por Paco Monge (16 intervenciones) el 17/10/2012 21:31:05
Hola a todos/as,
Hace un tiempo encontré en el foro la solución a un problema y me gustaría ver si alguien puede
echarle un vistazo a esto que me sucede.

Tengo un DropDown que se hace visible al activar un CheckBox. Hasta aquí todo bien.

Dentro de un DataWindow - en el correspondiente ItemChanged tengo el siguiente codigo
para asignar unos valores de una tabla determinada a unos campos que quiero dependan
de lo que elijo en el DropDow:

1
2
3
4
5
6
7
8
If dwo.name = 'id_administrador' Then                // si el boton es id_administrador 
 If data <> '' Then
  Select administrador                                              // selecciona 
   Into :ldc_dest
  From LF_administradores                                    // toma los datos de la tabla LF_administradores
      Where id_administrador = :data;
      Object.fdestinatario[1]=ldc_dest                      // asigna valores
...


y luego con este otro trozo, chequeo si se desactiva y restauro los valores a 'vacio':

1
2
3
4
5
6
7
if dwo.name = 'poseeadm' then
 If data = '0' Then
  Object.fdestinatario[1]=''
  ...
 AcceptText()
 end if
end if


Todos estos campos se actualizan porque son campos normales... no son DropDowns
El problema viene cuando intento resetear el valor del DropDown,
porque cuando re-activo el checkbox el DropDown se me abre con el antiguo valor
que tenia al dejar de ser visible y yo querria que ese valor ahora fuese NULL como la
primera vez que se muestra.

¿ Se entiende la situación ? ¿ Alguna sugerencia ?

Muchas gracias a todos
Un saludo
Paco
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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

restaurar valor null en dropdowndatawindow

Publicado por JeinnerH (646 intervenciones) el 18/10/2012 07:44:25
Y cómo reseteas el DDDW?

Saludos.
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

restaurar valor null en dropdowndatawindow

Publicado por Paco Monge (16 intervenciones) el 18/10/2012 09:03:45
pues he intentado actualizar como los otros campos con un "Object.dddw=NULL" con varias opciones =""... ="NULL"... etc y no he conseguido llegar a el
al hacerlo me da error... en cuanto llegue a casa del trabajo puedo revisarlo de nuevo y enviar el error...
gracias
un saludo
Paco
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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

restaurar valor null en dropdowndatawindow

Publicado por JeinnerH (646 intervenciones) el 18/10/2012 16:54:59
Un DDDW es un DataWindow dentro de otro. Para Resetearlo debes hacerlo así:

DataWindowChild ldwc_1

GetChild('Columna', ldwc_1)
ldwc_1.Reset()

Saludos.
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

restaurar valor null en dropdowndatawindow

Publicado por Paco Monge (16 intervenciones) el 19/10/2012 22:09:54
hola de nuevo...
te copio casi al completo el codigo que tengo ahora...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
datawindowchild dddw_administradores	//declaro el dddw como datawindowchild
 
string ldc_dest                                                     //variable para meter el nombre del administrador
 
//la activación del dddw que es el campo id_administrador la controlo en el datawindow general
//la variable "poseeadm" es un checkbox que al inicio esta a cero y si cambia hace visible el dddw
 
If dwo.name = 'id_administrador' Then		// si este cambia... actualiza el valor de "fdestinatario"
	If data <> '' Then
		Select administrador
			Into :ldc_dest
		From LF_administradores
     	Where id_administrador = :data;
     	Object.fdestinatario[1]=ldc_dest
 
      AcceptText()
   End If
 
End If
 
if dwo.name = 'poseeadm' then			// si se desactiva... resetea el valor de "fdestinatario"
	If data = '0' Then
		Object.fdestinatario[1]=''
		GetChild('id_administrador', dddw_administradores)	// he consiguido resetearlo
		dddw_administradores.Reset()				// pero ahora no consigo restaurarlo
                AcceptText()
	end if
end if
 
commit using sqlca;
 
//cuando activo la variable 'poseeadm' por primera vez me muestra en el dddw todos los valores.
//cuando desactivo me resetea... pero me muestra un valor numerico que se incrementa
//cuando activo de nuevo no me muestra ningun dato en el desplegable


He probado el siguiente codigo añadido:

1
2
3
Elseif data = '1' then
		GetChild('id_administrador', dddw_administradores)
		dddw_administradores.settransobject(SQLCA)


pero no consigo restaurar en mi dddw los valores que se cargan al activar por primera vez la variable 'poseeadm'

¿ alguna idea de que me estoy dejando ?
mil gracias de nuevo
Paco
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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

restaurar valor null en dropdowndatawindow

Publicado por JeinnerH (646 intervenciones) el 21/10/2012 06:09:11
Ok. Si lo que necesitas es cargar de nuevo la información en el DDDW, lo que debes hacer es otra vez el Retrieve de este:

1
2
3
4
5
6
7
if dwo.name = 'poseeadm' then // si se desactiva... resetea el valor de "fdestinatario"
 If data = '0' Then
 Object.fdestinatario[1]=''
 GetChild('id_administrador', dddw_administradores) // he consiguido resetearlo
 dddw_administradores.Retrieve(Parámetro1, Parámero2, ...)
 end if
 end if
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

restaurar valor null en dropdowndatawindow

Publicado por Paco Monge (16 intervenciones) el 21/10/2012 10:21:45
Hola de nuevo,
El código que tengo ahora es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
if dwo.name = 'poseeadm' then
	If data = '0' Then
		Object.fdestinatario[1]=''
		GetChild('id_administrador', dddw_administradores)
		dddw_administradores.Retrieve('id_administrador')
      		AcceptText()
	Elseif data = '1' then
		GetChild('id_administrador', dddw_administradores)
		dddw_administradores.settransobject(SQLCA)             // sin esto me daba un error
		dddw_administradores.Retrieve('id_administrador')
	End if
End if


Cuando se carga la ventana por primera vez, el dddw aparece vacío y se carga al pinchar el despleagable, pero una vez que he seleccionado una opción, y vuelvo a pinchar el desplegable ya no vuelve a salir vacio, sino que aparece el ultimo valor que habia seleccionado antes.

No se porque, pero no consigo vaciar el valor del dddw :(

Intentaré alguna otra opción aunque no se me ocurre mucho mas
Muchas gracias de nuevo
Paco
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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

restaurar valor null en dropdowndatawindow

Publicado por JeinnerH (646 intervenciones) el 22/10/2012 17:46:20
Un dropdown funciona bien, si se emplea en un DW, el cual dependa sólo de una variable, por ejemplo:

Código de Empleado: 3939393
Tipo de Empleado: { DDDW de la tabla de Tipos de Empleados }

Pero si se usa en el siguiente DW da problema, proque el DDDW sólo puede llenarse con un tipo de información:

Código de Empleado Tipo de Empleado Cargo del Empleado
0303939390 { DDDW } { DDDW depende del Tipo de Empleado }

Como el tipo de Empleado pueden ser varios y el DDDW de Cargos puede tener varios valores en la lista, dependiendo del Tipo de Empleado, esto no va a funcionar bien y la lista de valores del DDDW de Cargos, va a presentar siempres sólo una lista asociada a un Tipo de Empleado.

No sé si este es el caso que estás trabajando.

Ahora bien, para que funcione correctamente un DDDW, debes hacerle el Retrieve en el Create del DW. Y cada vez que se varie el valor del cuál depende el DDDW, debes hacerle Retrieve de nuevo.

Igualmente, si haces un InsertRow, también deberas hacerle el Retrieve de nuevo al DDDW.

El DDDW no hace nada sólo, todo tienes que programarlo.

Saludos.
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

restaurar valor null en dropdowndatawindow

Publicado por Paco Monge (16 intervenciones) el 22/10/2012 20:08:53
gracias.
lo reviso y os cuento
un saludo
Paco
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