Consulta desde Drop DownDW

Necesito consultar desde un Drop DownDW la relación a otro dw mostrando el registro de cada uno de ello, por ejemplo: necesito registrar una cantidad de puesto de trabajo en distintas áreas, la cual anteriormente ya fueron registradas por otra tabla (este es el Drop DownDW ) entonces la idea es que en cada área se leccionada me muestre solamente los puesto de trabajo que corresponda a cada área no todos los puesto de trabajo, esto se relación a través de su código, si tienes una idea de como puedo hacerlo te lo agradecería mucho ya que recién eston con Power Builder v9 te agradecería como lo puedo hacer, a lo mejor no me exprese bien con la problemática, si fue hace no dude en preguntar para haci buscarle una solución.
De antemano muchas gracias y espero tu importante respuesta o guía, Nos vemos

2 respuestas

Respuesta
1
No se si lo entendí bien, si lo que se selecciona es el área de trabajo, puede hacer en el evento itemchange del drop down obtener un getchild con ese campo( el código del área) y aplicar un filtro( setfilter), no se si me especificas un poco más, te diría exactamente, como y en que momento.
Experto, me explico. Tengo una tabla Puesto de Trabajo los campos son los siguiente: Área, Sub-Área, Código, Nombre Puesto, esto es el registro de los Puestos entonces necesito identificar en que a rea y sub área se va a registrar el puesto, los que son Drop DownDW es área y sub área lo que pretendo es que cuando seleccione el Drop DownDW
Area en el Drop DownDW Subarea me muestre solamente los k corresponde a esa area. ya tengo relacionada atravez de codigos de area, bueno si no logras entenderme porfavor no dudes en preguntar ya k necesito esta opcion urgente, de antemano muchas gracias.
De lo que me dices, tengo lo siguiente, un dw con la información de los puestos, allí
seleccciono el área y subarea, al momento de seleccionar el área le aplico un filtro a
subarea para que solo despliegue a los que corresponden a esa área. Si es así debes hacer los siguiente
en el itemchanged del dw, pon el siguiente cdigo, con los cambios que correspondan, tipo de dato, nombres de campos, no se si debo ser más explicita
---------------
datawindowchild ldw_datawindow
string ls_area
CHOOSE CASE dwo.name
CASE "cod_area"
idw_datos.GetChild('cod_subarea',ldw_datawindow)
ldw_datawindow.SetFilter("subarea_cod_area = '" + data + "'")
ldw_datawindow.Filter()
END CHOOSE
-----------------
Cod_subarea, es el campo que se liga del Drop DownDW del subarea con el área
cod_area, es el nombre campo de código del área, data va a tener el área que estas seleccionando
esto hace que se aplique el filtro con el área que en ese momento selecciones para ese registro,
si tienes alguna duda, dímela
ldw_datawindow.SetFilter("subarea_cod_area = '" + data + "'")
no estiendo el campo k estas ocupando subarea_cod_area???
Si podrías ser más explicito sobre ese punto te lo agradecería mucho de antemano muchas gracias
En el drow down del subarea, tienes el campo que hace referencia al área( si no lo tienes seleccionado lo tendrías que seleccionar), esto es en el dddw que llamas en el campo de subarea, es el campo que relaciona la subarea con el área. ¿No se si me explico?
Claro que estan relacionados cada unos de los campos Area y Sub-Area y cada drop down tiene relacion con sus campo, es decir existe 3 datawindow  uno con area (ar_codigo, ar_nombre) el otro es el subarea (sa_codigo, sa_nombre y ar_codigo (haciendo la relacion con la tabla area y tiene el drop downdw con edit: display= ar_nombre y Data= ar_codigo)) y el tercero es el puesto de trabajo (pu_codigo, pu_nombre, ar_codigo y sa_codigo estos 2 ultimos con drop down es el cual nesito hacer un filto para k al seleccionar el ar_codigo se relacione solo los que pertenecen ) 
ejemplo de un país:
Pais = Chile, Region = Bio-Bio y Comuna = Concepcio,  si tengo la region y la comuna con drop down, cuando yo selecione la region de Bio- Bio tendria que aparecerme como opcion en drop down de comuna Concepcion no otra comuna que no pertenesca a esta region, bueno espero que me entiendas ya que es super importate este flitro ya que me fasilita el reporte, si tienes algunas opcion o scrip que podria ayudarme te lo agradeceria mucho de antemano muchas. Nos vemos
Ahora esta mucho más claro, lo que debes hacer es en el itemchanged del primer datawindow(área) aplicar el filtro para el
segundo datawindow (subarea)
datawindowchild ldw_datawindow
string ls_filtro, ls_area
if not isnull(data) then
ls_area = data
is_filtro_zona = ' and clpv_cod_zona = ' + data
ls_filtro = "ar_codigo = '"+ls_area+"'"
dw_subarea.GetChild('ar_codigo',ldw_datawindow)
ldw_datawindow.SetFilter(ls_filtro)
ldw_datawindow.Filter()
end if
Eso hace que al cambiar de área en el datawindow de área, filtre en el datawindow de subarea solo los de esa área,
Ahora en el ultimo datawindow, puedes hacer algo parecido, en el itemchanged del datawindow de puesto:
datawindowchild ldw_datawindow
string ls_filtro, ls_area
choose case dwo.name
case 'ar_codigo'
end choose
datawindowchild ldw_datawindow
string ls_codigo
CHOOSE CASE dwo.name
CASE 'ar_codigo'
this.GetChild('sa_codigo_ar_codigo',ldw_datawindow)
ldw_datawindow.SetFilter("ar_codigo = '" + data + "'")
ldw_datawindow.Filter()
END CHOOSE
Sa_codigo_ar_codigo, es el código que debe relacionar en la tabla o drowdown del subarea con el área, ese código lo pones en el datawindow que llamas para el drowdown, es decir
el dddw, lo que hace aquí es alcambiar el dato de área, le aplica un filtro al drowdown
de subarea, todo esto en el datawindow de puesto, esto es a nivel de drowdown,
aver si te entiendo, son 3 script diferentes uno para cada Dw (area, sub_area y puesto) no me queda claro el primer filtro que me señalas para el area, el segundo de subarea no me queda muy claro tu sintaxis
 is_filtro_zona = ' and clpv_cod_zona = ' + data
o
ls_filtro_zona = ' and clpv_cod_zona = ' + data
y el sa_codigo_ar_codigo no se entiende, me gustria que seas un poco mas explicito en el codigo si no fuera mucho la molestia te lo agraderia mucho, nos vemos
Perdón enesa linea se me fue, porque estab revisando un ejemplo parecido para adaptarlo a tu pregunta, solo quitele esa linea, ¿no se que parte más no comprende?
¿Puedo pasar el valor que tiene un dddw de un dw a otro?, ¿Cómo?
Para cargar el segundo dw según el valor que recupere del 1º
Si, puedes hacerlo aplicando un filtro al segundo dw, cada vez que hagas un cambio en el primero o a su vez cada vez que cambies en el primero
string ls_codigo
ls_codigo = this.GetItemNumber(GetRow(),'sa_codigo_ar_codigo')
dw_2.SetFilter("ar_codigo = '" + ls_codigo + "'")
dw_2.Filter()
Respuesta
1
Debes crear un dw external, en ella deberás crear dos campos: área y trabajo.
Luego crea dos dw: uno que muestre el área y el código, el otro que muestre el trabajo, código de trabajo y código de área, en este ultimo campo permitirá hacer el filtro del trabajo con respecto al área seleccionada
Crea como variable de instancia dos datawindowchild los cuales servirán para enlazar a los dos dw que haz creado (área y trabajo)
Datawindowchild idwc_area,idwc_trabajo
String is_area
Luego en el evento constructor del dw coloca:
Getchild("area",idwc_area)
GetChild("trabajo",idwc_trabajo)
idwc_area.SetTransObject(sqlca)
idwc_trabajo.SetTransObject(sqlca)
idwc_area.Retrieve()
Luego en el evento itemchanged del datawindow coloca:
if dwo.name = "area" then
is_area = data
idwc_trabajo.Retrieve()
idwc_trabajo.SetFilter("cod_area = '"+is_area+"'")
idwc_trabajo.Filter()
end if
Eso es todo
Si tienes alguna duda al respecto solo pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas