[Lazarus-es] problema con lentitud en sistema

Paola Bruccoleri pbruccoleri en adinet.com.uy
Mie Oct 24 19:05:48 CEST 2012


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







More information about the Lazarus-es mailing list