[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