Hola a todos, aquí dejo el código que he logrado optimizar, pero aún me anda muy lento, en este momento tengo 1000 registros en la tabla que estoy consultando, les agradezco cualquier ayuda.
Código Delphi
[-]
procedure TMaster.ListarTabla( DB: TIBDatabase; sTabla: String; Listado: TListView );
var
Campos: TStringList; i: Integer; Consulta: TIBQuery;
begin
if DB = nil then Exit;
Campos := TStringList.Create;
DB.GetFieldNames( sTabla, Campos );
Consulta := TIBQuery.Create( nil );
Consulta.Transaction := CronosTR;
Consulta.SQL.Add( 'SELECT * FROM ' + sTabla );
try
Consulta.Open;
except
CronosTR.Rollback;
raise;
end;
Listado.Columns.Clear;
Listado.Columns.Add;
Listado.Columns[0].Width := 0;
for i := 0 to Campos.Count - 1 do
begin
Listado.Columns.Add;
Listado.Columns[i+1].Caption := Campos[i];
Listado.Columns[i+1].Width := 100;
end;
Listado.Clear;
Listado.AllocBy := Consulta.RecordCount;
Listado.Items.BeginUpdate;
Consulta.DisableControls;
while not Consulta.Eof do
begin
Listado.Items.Add;
for i := 0 to Campos.Count - 1 do
Listado.Items[Listado.Items.Count-1].SubItems.Add(Consulta.FieldByName(Campos[i]).AsString);
Consulta.Next;
end;
Consulta.EnableControls;
Listado.Items.EndUpdate;
FreeAndNil( Campos );
FreeAndNil( Consulta );
end;