Ver Mensaje Individual
  #2  
Antiguo 06-10-2008
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Reputación: 18
mightydragonlor Va por buen camino
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;
Responder Con Cita