Power Builder - cantidad de filas en un datawindow

   
Vista:

cantidad de filas en un datawindow

Publicado por TANO (75 intervenciones) el 14/05/2008 06:31:11
Hola amigos, tengo un problema con retrieve que contiene 12.000 filas con campos computables incluídos, lo que sucede es que se cuelga el programa o redja de responder. El mismo reporte con menos filas no se cuelga. Que debo hacer para que no se vuelva a colgar mi programa. Saludos desde Argentina, y muchas 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:cantidad de filas en un datawindow

Publicado por javieron (26 intervenciones) el 14/05/2008 11:52:30
Pues yo creo que el problema mas ke las 12.000 podrian ser los campos computables.
¿ De que tipo son funciones ?

Si puedieras cambiarlos por joins directos en sql seria recomendable, en caso de no ser campos de una base de datos siempre podrias definirte campos vacios , y rellenarlos inmediatamente despues del retrieve.

long ll_x , ll_y
string ls_texto

ll_y = dw_1.rowcount()

for ll_X = 1 to ll_y
select texto into :ls_texto from tutabla where loquetuqieras = esto ;
dw_1.object.campotonto[ll_x] = ls_texto
next

Asi evitarias el problema de que cada vez que mueves la ventana , o bien navegas por el datawindow se tengan ke recalcular los computed fields de esas 12.000 filas.

Un saludo desde Valencia - España ¡
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

Posible solución

Publicado por Leopoldo Taylhardat (690 intervenciones) el 14/05/2008 16:50:48
Saludos desde Maracay, Venezuela.
El proceso asumo que se cuelga es por la capacidad de memoria para realizar los proceso de los campos computados tya que el proceso con campos computados se realizan muchas veces en el proceso.. y eso crea un loop de recalculos y de paso cuando muestra los datos..
para comprobarlo, toma un dw con cierta cantidad de datos... (20 o 50)
coloca un campo computado con llamada a una función y que esta tenga un messagebox... por ejemplo...
Creas la función global f_mensaje y colocas dentro de esta el messagebox...

Messagebox(string(now()),'Proceso')
Luego crea el campo computado y le colocas en la expresión...
f_mensaje()

Y ve el resultado...

¿Puedes calcular los valores desde el mismo sql del dw para los que corresponden al detalle ????? colocando en un campo compute la expresión...
Ejemplo...
columna_a + columna_b as total a_mas_b.... o
sum(columna_a) + sum(columna_b) as total_general_a_mas_b (debes agrupar en todo caso)....
y así sucesivamente...

de esta forma quien va a trabajar es la BD y no el dw realizando los cálculos base...
Te quedarían los totales de grupo y generales que no puedas manejar en el SQL...
espero que te sirva..
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