[Lazarus-es] problema con lentitud en sistema

Jorge Martinez Saez jorge.martinez.saez en gmail.com
Mie Oct 24 20:39:59 CEST 2012


El 24-10-2012 13:23, Maxi escribió:
>
>
> El 24 de octubre de 2012 14:05, Paola Bruccoleri 
> <pbruccoleri en adinet.com.uy <mailto:pbruccoleri en adinet.com.uy>> escribió:
>
>     Hola todos..
>     necesito me orienten en un problema que tengo.
>     Tengo un form donde hay una grilla que muestra TODOS los registros
>     de un TTable (firebird 2.1.4, componentes zeos).
>     Además hay botones para agregar/eliminar/modificar esos registros.
>
>     A ese TTable le hice clic derecho/editar campos y agregué todos
>     los campos de la tabla y además cree 4 campos lookup para que por
>     ejemplo en vez de que se vea el código del operario se vea el
>     nombre, etc.
>     En el grid se visualizan solo el número de registro, la fecha y
>     esos 4 campos lookup.
>     Como esos 4 campos son claves foráneas de otras tablas, hay índices.
>
>     En el evento onTitleClick, se ordenan los datos según la columna
>     clickeada.
>     Uso este código:
>
>     procedure TABMF03.DBGrid1TitleClick(Column: TColumn);
>     var
>       temp : ZAbstractRODataset.TSortType;
>     const
>       PreviousColumnIndex: integer = 0;
>     begin
>       try
>           DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
>              DBGrid1.Columns[PreviousColumnIndex].title.Font.Style -
>     [fsBold];
>       except
>       end;
>
>       Column.Title.Font.Style:=  Column.Title.Font.Style + [fsBold];
>       PreviousColumnIndex := Column.Index;
>
>       temp := dbForm03.SortType;
>       dbForm03.SortedFields := Column.FieldName;
>       if temp = stAscending then begin
>            dbForm03.SortType := stDescending;
>            DBGrid1.Columns[PreviousColumnIndex].Title.ImageIndex:= 1;
>       end else begin
>            dbForm03.SortType := stAscending;
>            DBGrid1.Columns[PreviousColumnIndex].Title.ImageIndex:= 0;
>       end;
>     end;
>
>     pero con una simple tabla de 10mil registros, ordenar por esos
>     campos lookup lo hace MUY LENTO y además, en la mayoría de las
>     veces se cuelga el sistema.
>
>     Otra cosa es que cuando agrego un registro a esa tabla, el guardar
>     tb se hace mUY lento.. y solo hago 1 insert en esa tabla y hasta 6
>     inserts más en otra de detalle
>
>     Se que es un disparate mostrar todos los registros de esa tabla..
>     pero en un principio es lo que ellos querían.
>     Se que debería quizás rediseñar ese form para que se muestre solo
>     determinados registros y quizás eso haga que no se enlentezca al
>     ordenar por X columna y al grabar.
>
>     El concepto es como si fuera un listado de facturas, con
>     posibilidad de agregar, borrar, eliminar, imprimir las mismas.
>
>     Agradezco cualquier idea..
>     byeeeeeeeee
>
>
>
>
>     _______________________________________________
>     Lazarus-es mailing list
>     Lazarus-es en lists.lazarus.freepascal.org
>     <mailto:Lazarus-es en lists.lazarus.freepascal.org>
>     http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
> Regla numero 1, si vas a ordenar debes tener indices creados para cada 
> columna, asi el motor los aprovecha sino en cada ordenamiento los 
> recorre uno a uno para generar el orden.
> en un lookup no es buena idea una tabla con muchos registros no esta 
> pensado para eso, en ese caso pondria un buscador segun tipee el 
> usuario. y abrir una grilla con la busqueda en caso de que arroje mas 
> de 1 coincidencia. Tengo un ejemplo si te sirve.
>
>
> -- 
> El que pregunta aprende, y el que contesta aprende a responder.
>
> No a la obsolecencia programada: 
> http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html
>
> Linux User #495070
> http://domonetic.com/blog
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
Hola Paola:

Esta de mas mi respusta pero apoyo la idea de maxi en cuanto a los 
indices..... ( yo uso indices por cada  columna que uso para ordenar y 
la verdad es bastante mas rapido).

Saludos
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20121024/61e35296/attachment-0002.html>


More information about the Lazarus-es mailing list