Power Builder - Como cambiar el datawindow child

 
Vista:
sin imagen de perfil

Como cambiar el datawindow child

Publicado por Denys Alberto (109 intervenciones) el 29/09/2010 16:34:45
Hola a todos y agradezco ya las posibles respuestas que me puedan brindar con respecto al siguiente problema que tengo:

Tengo un datawindow de tipo freeform en el cual ademas contiene 2 dropdowndatawindows, en una de ellas selecciono un determinado servicio por ejemplo mantenimiento: en dicho servicio el personal trabaja de acuerdo a un horario que esta establecido por un rol mensual en el cual se encuentra establecido, que dia toca laborar a cada trabajador, por ejemplo el dia2, le toca laborar a las siguiente personas: Juan, Pedro y Katia, y en el dia3 le toca laborar a fredy, Luisa y Juan, como ya se han podido dar cuenta que existen metodos de filtrado, por dia, mes y servicio, he creado por dia un datawindow, dgrid_personaldia1, dgrid_personaldia2 y asi por cada dia, lo que deseo hacer es cambiar estos datawindow en el segundo dropdowndatawindow , tal como se realiza con un datawindow normal. Por ejmplo dw_registros.DataObject='dfree_registros1' en el datawindow normalmente se le puede cambiar de esa manera, sin embargo para cambiar un dropdowndatawindo es complicado, lo del filtrado no hay problema, el detalle es como hago para poner al dropdowndatawindow de acuerdo al dia ya que en que en ello no se puede establecer el dataobject xq me manda error.

Nuevamente reitero mis muestras agradecimiento con sus respeustas...un saludo caluroso

Denys desde Perú.
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:Como cambiar el datawindow child

Publicado por eduardo.v (34 intervenciones) el 29/09/2010 19:47:43
para cambiar el DW utiliza el dataobject nomas, pero acuerdate de hacer un settransobject antes de ejecutar el retrieve

pero...

¿un DW por dia? amigo, busca la manera que sea un solo DW y que varie la data segun los argumentos que le mandes

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

RE:Como cambiar el datawindow child

Publicado por JeinnerH (646 intervenciones) el 29/09/2010 21:19:01
Compañero, es algo complicado hacer esto en un DW, y siempre hay problemas con el DDDW y lo que muestra en otras filas.

Lo mejor que se puede hacer es abrir otra ventana para la edición de cada registro por aparte. Es decir, una pantalla con la lista y otr apara edición.

Aunque hay ciertos trucos que también podrían darte algunos resultadados, como por ejemplo utilizar un filtro para el DDDW. En ese caso, debes refrescar el filtro cada vez que escojas el Servicio.

Puedes probar también, haciendo de nuevo el Retrieve del DDDW, cuando escojas el servicio, pero esto también causa problemas.

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
sin imagen de perfil

Gracias por su tiempo...amigos

Publicado por Denys Alberto (109 intervenciones) el 29/09/2010 21:43:12
Gracias por su tiempo amigos, ya veré como me las arreglo
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:Como cambiar el datawindow child

Publicado por Manuel  (28 intervenciones) el 30/09/2010 23:21:30
Hola lo que te sugiero es que modifiques tus tablas o las revises porque puedes crearte 3 tablas que tienen que estar relacionadas como pueden ser , SERVICIOS, o AREAS, PERSONAL, Y ASIGNACIONES

estas tienen que estar relacionadas comenzando por la primera en asignaciones puedes colocarle los campos de dias o fechas

en personal los datos de tabajadores, y en SERVICIOS , las areas ya sea mantenimiento u otras areas de tal forma que al seleccionar mantenimiento te muestre el personal de mantenimiento y cuando selecciones personal te muestre sus horarios de trabajo y dias de trabajo esto lo haces con el retrieve al dwchild recuperando el codigo de cada campo por eso es importante la relacion en las tres tabalas
espero que se lo que buscas o delo contrario deberias ser mas especifico con lo que deseas
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:Como cambiar el datawindow child

Publicado por JorgeE (1 intervención) el 01/10/2010 17:23:31
Haber, yo supongo que dgrid_personaldia1 ,..., dgrid_personaldia7 tienen la misma setencia select.
Si fuera así yo solamente crearía uno, supongamos dgrid_personaldia pero a este lo pongo argumentos de recuperación
y cada vez que hago un changed en el datawindow frefomr (campos dia,mes,servicio) voy recuperando los trabajadores de DDDW.

idwc_Trabajador.Retrieve(li_dia,li_mes, ls_servicio)

Pero si no te es muy familiar de esta manera y seguis empeñado en hacer como tienes pensado. esto te puede ayudar.

Condiciones:
dgrid_personaldia1 ,..., dgrid_personaldia7 deben tener de prefencia la misma cantidad de columnas con los mismos nombres de columnas.

//En variables de instancia lo siguiente
DataWindowChild idwc_trabajador


// Crea un método a nivel de ventana con un argumento de entrada mediante el cual ingresarás el día por ejemplo:

of_setDataObjectChild(String ls_dia )

// Script dentro de la funcion

String ls_dataObjectChild
String ls_rc

CHOOSE CASE as_dia
CASE '1'
ls_dataObjectChild = 'dgrid_personaldia1'
CASE '2'
ls_dataObjectChild = 'dgrid_personaldia2'
CASE '3'
ls_dataObjectChild = 'dgrid_personaldia3'
END CHOOSE

ls_rc = dw_registros.Modify("nombre_campo.dddw.name='" + ls_DataObjectChild + "'" )
ls_rc += dw_registros.Modify("nombre_campo.dddw.displaycolumn=display_column_datawindowchild")
ls_rc += dw_registros.Modify("nombre_campo.dddw.datacolumn=data_column_datawindowchild")

dw_registros.GetChild("nombre_campo",idwc_trabajador)

idwc_trabajador.setTRansObject( SQLCA )
//Donde:
// nombre_campo es el campo del freeform en dw_registros
display_column_datawindowchild y data_column_datawindowchild reemplazarlo por las columans correspondientes del grid.

// Finalmente llamar a la función of_setDataObjectChild cada vez que hagas cambios en el freeform.
//
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

RE:Como cambiar el datawindow child

Publicado por Denys Alberto (109 intervenciones) el 04/10/2010 17:35:30
Desde luego que tienen la misma, sin embargo, en lo que varia es en la columna, ya que es de la siguiente manera para el dia uno:

"SELECT enrolpersonal.num_mes,
enrolpersonal.cod_servicio,
derolpersonal.cod_personal,
personal.ap_paterno,
personal.ap_materno,
personal.nombres,
derolpersonal.dia1
FROM derolpersonal,
enrolpersonal,
personal
WHERE ( enrolpersonal.num_regrol = derolpersonal.num_regrol ) and
( personal.cod_personal = derolpersonal.cod_personal ) and
( ( enrolpersonal.num_mes = :nmes ) AND
( enrolpersonal.cod_servicio = :servicio ) AND
( derolpersonal.dia1 = 5 ) )"

El 5 quiere decir que el personal se encuentra de guardia
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