[Lazarus-es] problema con lentitud en sistema

Maxi maximiliano.duarte en gmail.com
Mie Oct 24 19:23:42 CEST 2012


El 24 de octubre de 2012 14:05, Paola Bruccoleri
<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<Lazarus-es en lists.lazarus.freepascal.org>
> http://lists.lazarus.**freepascal.org/mailman/**listinfo/lazarus-es<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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20121024/66707aac/attachment-0002.html>


More information about the Lazarus-es mailing list