Ver Mensaje Individual
  #5  
Antiguo 10-06-2011
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Reputación: 17
jhonalone Va por buen camino
Gracias, como siempre, por vuestra desinteresada ayuda.

He resuelto el problema, o por lo menos a mí me funciona. Estas son las conclusiones a las que he llegado. (Por si son de utilidad para alguien)

Algunas Condiciones para que funcione Reindexar:
1.- Las tablas master/detail deben estar cerradas (Salvo la que se Reindexa)
2.- Las tablas que compartan Dataset deben estar cerradas (Salvo la que se Reindexa)
3.- Usar Table1.DisableControls para que no interfieran los controles conectados

Así me quedó el código funcionando:
Código Delphi [-]
procedure Reindexar (Tabla : TTable);
begin
  Check (DbiRegenIndexes (Tabla.Handle));
end;
 
...
        TTabla.TableName := ExtractFilename(lstFicheros.FileName);
        TTabla.Close;
        TTabla.DatabaseName := DirActual;
        TTabla.Exclusive := True;
        TTabla.TableName := ExtractFilename(lstFicheros.FileName);
        TTabla.Open;
        TTabla.DisableControls; // que no actualice los controles conectados
        Reindexar (TTabla);
        TTabla.Close;  // Cerramos la tabla por si comparte un Dataet con la siguiente que reindexemos
...

Saludos.
Responder Con Cita