Power Builder - problema con group en dw

 
Vista:

problema con group en dw

Publicado por a (327 intervenciones) el 21/03/2005 21:42:39
perdon por repetir el post, pero no obtuve respuesta, hola a todos, tengo un dw agrupado al cual le he creado un grupo (fecha), lo que deseo es poder filttar los primeros 15 grupos
como hago para conocer la cantidad de grupos que arrojo esa consulta
muchas gracias a todos
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:Contar numero de grupos

Publicado por Oscar (1178 intervenciones) el 23/03/2005 13:42:30
Hola Amilkar:
Para calcular el número de grupos, luego de filtrar por fecha, intentá con lo siguiente:

1. En tu objeto DW, insertá en la sección detail un Compute field (compute_1)

2. En expression pegas:
if(getrow() = first( getrow() for group 1 ), 1, 0)

Nota: Este compute genera el número 1 en el primer registro de cada grupo y ceros en los demás registros del mismo grupo. Es decir:

fecha1
1
0
0

fecha2
1
0

fecha3
1
0
0
0

3. Ahora, insertá otro Compute field (compute_2) en la sección Summary o Footer de tu objeto DW, con la siguiente expresión:
cumulativesum(compute_1)

Nota: Como habrás notado, lo único que hace la anterior expresión, es sumar todos los valores del compute_1, dando como resultado 3; que corresponde exactamente a los tres grupos que se observan.

4. Ahora, si deseas extraer el valor del compute_2, se realiza:
Long ll_NumeroGrupos
ll_NumeroGrupos=dw_1.GetItemDecimal(dw_1.GetRow(),"compute_2")
messagebox("Aviso",ll_NumeroGrupos)
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

oscar no anda del todo bien

Publicado por amilcar (327 intervenciones) el 28/03/2005 22:29:10
hola oscar, agradezco tu post , pero en el punto 3 (el compute_2) me pone valor 0 , tenes idea que puede ser, ya que el compute_1 se me geera tal como vos dijiste.
muchas gracias
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:oscar no anda del todo bien

Publicado por Oscar (1178 intervenciones) el 30/03/2005 17:13:39
Tienes razón amilcar.
Lo que pasa, es que al realizar el filtrado, todos los valores del compute_1, se vuelven cero; en consecuencia, el compute_2 muestra esa suma acumulativa.

Entonces, en el botón que realiza tu filtrado, debes volver a generar los valores del compute_1 y del compute_2, mediante script. Es decir:

//Realizas tu filtrado de manera normal. Ejemplo:
dw_1.SetFilter("fecha>='25/12/2004' ")
dw_1.Filter()

//Pero lo más importante es volver a generar estas dos lineas:
dw_1.Modify("compute_1.Expression='if(getrow() = first( getrow() for group 1 ), 1, 0) ' ")
dw_1.Modify("compute_2.Expression='cumulativesum(compute_1)' ")

//-----------------Fin------------------------
Si tienes problemas, comentá.
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