Power Builder - Filtrar contenido dw_1 en el dw_2

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

Filtrar contenido dw_1 en el dw_2

Publicado por Francisco (231 intervenciones) el 21/09/2012 19:51:18
Hola, bueno estoy intentando resolver mi problema de otra manera:

Ahora deseo realizar lo siguiente:

tengo un dw_1 tipo Group con los campos de código, apellidos y nombres, días, fecha_quincena1 al que lo filtro por el campo fecha, este es mi código:

dw_123.SetFilter("string(fecha_quincena1,'dd/mm/yy') = '" + em_1.text + "'")
dw_123.Filter()
st_total.text=string(dw_123.RowCount())

OK todo bien, me permite mostrar los días que voy a descontar de esa fecha buscada y en el compute_2 me esta contando el total de días que le ha encontrado a esa persona.

Ahora en la parte inferior de la misma ventana (debajo del dw_1) tengo el dw_2, en el que muestro a todo mi personal, son un promedio de 4900 personas, y de todos sus datos, cuenta con un campo llamado (pre_dias) en este deseo insertarle los días que se han encontrado en el dw_1 y que se suman en su totalidad en el compute_2 de ese datawindow (dw_1).

Para ello deseo que cuando de clic en el botón buscar (en donde busco en el dw_1 por la fecha)
1.- Busque los códigos del dw_1 filtrados por la fecha solicitada y los filtre también en el dw_2.

Gracias por su ayuda

Espero respuesta de mis mas expertos.
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

Filtrar contenido dw_1 en el dw_2

Publicado por JeinnerH (646 intervenciones) el 21/09/2012 22:27:57
Si ya filtraste el DW_1, cuál es el problema para filtrar el DW_2, lo haces de la misma forma.

Filtras los dos a la vez.
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

Filtrar contenido dw_1 en el dw_2

Publicado por francisco (231 intervenciones) el 22/09/2012 00:46:10
El inconveniente es que si filtro el dw_1 por la fecha, del que me puede filtrar unos 940 registros como pueden ser mas...

Como podria filtrar esos 940 registros o mas por su código en el dw_2 si ya los encontro en el dw_1.

Quiero decir que si encontro a un grupo x de personas en el dw_1 por la fecha solicitada, a esas personas tambien las filtre en el dw_2 pero por su codigo que ambos dw los tienen.

eso para poderles asignar sus dias, me entiendes Jheinner.
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

Filtrar contenido dw_1 en el dw_2

Publicado por JeinnerH (646 intervenciones) el 22/09/2012 04:33:38
Ok. Bueno, eso lo puedes hacer de varias formas, pero voy a aclararte únicamente de la forma en que lo necesitas.

Ya tienes del DW_1 Filtrado. Ahora lo recorres con un For registro a registro y vas llenando un vector con la llave de cada registro. Voy a suponer que no se repiten, si se repiten vas a tener que recorrer el vector para cada registro y comprobar si ya existen. O llenar otro DW con los datos únicos y usar este para el filtro.

Uso un vector por si tienes que buscar los registros antes, pero se puede llenar una hilera de una vez.

Integer li_Indice
Long lla_LLave[1], lla_Nulo[1]
String ls_Llaves


SetNull(lla_Nulo)

lla_Llave=lla_Nulo // Para Limpiar el Vector de Llaves, si lo vas a tener siempre en memoria.
For li_1=1 to dw_1.RowCount()
lla_Llave[li_1]=dw_1.Object.Cod_Llave[li_1]
Next

ls_Llaves=''
For li_1=1 to UpperBound(lla_Llave)
ls_Llave+='~''+String(lla_Lave[li_1])+'~''
If li_1 < UpperBound(lla_Lave) Then
ls_Llave+=', '
Next

Ahora haces lo siguiente con el DW_2:
dw_2.SetFilter( 'Cod_Llave in ( '+ls_Llaves+')')
dw_2.Filter()

Revisa si esto te funciona.

Powerbuilder tienen muchas funcionalidades, pero no todo está dado, hay que programar muchas cosas y pensar diferente, si no se puede de una forma se hace de otra. Pero casi siempre hay una forma simple.

Finalmente otra vez te recuerdo que estás creando un sistema muy lerdo, ya que vas a tener que tener los datos en memoria para poder filtrarlos, si cambias las consultas de los DW y sólo haces el retrieve de lo que se requiere seguramente vas a mejorar el desempeño de este. Además de que hay un límite en la cantidad de información que puedes cargar a memoria.
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

Filtrar contenido dw_1 en el dw_2

Publicado por francisco (231 intervenciones) el 22/09/2012 17:32:18
Hola de nuevo jeinner para este codigo me sale un error

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Integer li_Indice
int li_1
 Long lla_LLave, lla_Nulo
 String ls_LLaves
SetNull(lla_Nulo)
lla_Llave=lla_Nulo
For li_1=1 to dw_1.RowCount()
//lla_LLave[li_1]=dw_1.Object.cip[li_1]  //Cod_Llave
li_1=dw_1.Object.cip[lla_LLave]  //Cod_Llave
Next
 
ls_LLaves=''
For li_1=1 to UpperBound(lla_Llave)
ls_Llaves+='~''+String(lla_LLave[li_1])+'~''
If li_1 < UpperBound(lla_LLave) Then
ls_Llaves+=', '
Next


Dice :
//Referenced argument type does not match function definition : Upperbound

Tipo de referencia argumento no coincide con la función de definición: Upperbound
no se que es:
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

Filtrar contenido dw_1 en el dw_2

Publicado por JeinnerH (646 intervenciones) el 24/09/2012 16:28:00
Cuando se define el lla_Llave había que agregarle paréntesis cuadrados, para indicar que es un vector:

Long lla_Llave[1]

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