Power Builder - Filtrar filas

 
Vista:

Filtrar filas

Publicado por Celso (48 intervenciones) el 06/04/2005 00:53:18
Hola.

Tengo una duda hacerca de como realizar lo siguiente:

Tengo un reporte en donde se le parametriza que debe traer los primeros 20, 30, 100 o 1000 registros(la cantidad que se requiera) y presentarlos en el reporte. La consulta de informacion la hago por medio de datawindows, lo que no se es como decirle que una vez traida la información, me filtre los primeros 20, 30 etc registros que se requieran ver, es decir, como le digo al datawindows que me filtre, o me visualice solo la cantidad de filas que yo necesite. Una solucion para nada buena que encontre es dejar que el datawindows cargue todas las filas y luego procedo a borrar aquellas filas que no necesite, es decir, que si ocupo 20, borro de la 21 en adelante. Lo anterior no es para nada practico, y cuando el datawindow trae mucha informacion realizar el borrado toma mucho tiempo. Alguien me puede ayudar a encontrar una solucion mejor?

Gracias
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:Filtrar filas

Publicado por Jesús (18 intervenciones) el 06/04/2005 11:31:17

Si tienes que recuperar todas las filas y después filtrar las
primeras, puedes utilizar el siguiente código después de ejecutar
el retrieve.

li_numFilas = //10, 100, o las que sean
dw_ejemplo.setfilter("getrow() <= " + string(li_numFilas))
dw_ejemplo.filter()

Si sólo vas a utilizar las primeras filas, podría ser más eficiente no recuperar las siguientes (sobre todo si son muchas).

Una posibilidad sería utilizar el evento "retrieverow" de la datawindow, que se ejecuta cada vez que se recupera una fila. En este evento puedes parar el retrieve cuando quieras, y tienes el parámetro row para saber cuantas filas se han recuperado hasta el momento.

// Ejemplo de evento retrieverow
// Si ya se han recuperado las 10 primeras filas, parar el retrieve
if row = 10 then
// Parar el retrieve
return 1
else
// Continuar recuperando filas
return 0
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