PDA

Ver la Versión Completa : Reindexar en Paradox


DarkSide
24-09-2003, 23:26:35
Hola amigos del club Delphi.

¿Como puedo regenerar los indices en una tabla Paradox?.

Busque en el ayuda de Delphi, y me encontre con la función: DbiRegenIndexes, pero al ejecutarla me da un mensaje de error indicando que este identificador no ha sido declarado, y en ninguna parte encontre si tenia que agregar algo al uses.

Desde ya muchas gracias.

marcoszorrilla
24-09-2003, 23:38:52
Añade BDE.

Un Saludo.

DarkSide
25-09-2003, 00:01:06
Ok, muchas gracias nuevamente Marcos.

Lamento realmente molestar tanto, pero al reindexar los archivos me arrojo el siguiente error: "Table is busy".

El codigo utilizado es el siguiente:

Table1.Close;
Table1.Exclusive:= True;
Table1.Open;
fDbiRegenIndexes(Table1);
Table1.Close;
Table1.Exclusive:= False;
Y el codigo de la función es:

procedure TfrmEmiteInforme.fDbiRegenIndexes(TblName: TTable);
begin
Check(DbiRegenIndexes(TblName.Handle));
end;
{la misma del ejemplo, je, je, je}
Gracias.

roman
25-09-2003, 00:55:46
¿Estás seguro de que el error se debe a DbiRegenIndexes?

Acabo de hacer una prueba con el mismo código y no me da problema. Sin embargo, si desde otra parte tengo abierta la misma tabla entonces lo que falla es al momento de intentar abrirla ya que no puede abrirla en modo exclusivo. El error que me manda es el de "Table is busy".

Haz un debug de la aplicación para ver dónde salta el error.

// Saludos

DarkSide
25-09-2003, 01:10:27
Hola Roman, gracias por contestar.

Cerré y abrí Delphi, y el error que me da es: "Object not Locked"

Si la tabla esta abierta en modo exclusivo, supongo que no deberia darme ese error.

¿Que podrá ser?

Gracias.

__cadetill
25-09-2003, 01:50:06
El error que te da, como bien dice Román, es porque la tabla la tiene abierta algún otro programa de Windows (el SQL Explorer, el propio Delphi,....., cualquier programa)

Cierra toda conexión con la tabla y después ejecuta el programa que te hace la reindexación y verás que te funcionará ;)

Si sigue sin funcionar, seguramente es porque se te habrá "quedado pillado" alguna vez el Delphi con la tabla abierta o algún otro programa. Reinicia la máquina y borra los archivos *.lck (si mal no recuerdo la extensión ya que hace tiempo que no trabajo con Paradox :D)

Cabanyaler
25-09-2003, 09:00:21
Primero, existen infinitos enlaces para tan antiguo problema con paradox. En la página de ianmarteens.com, la paginilla de delphi, trucomania, este mismo foro....
Después, de la manera más rápida y eficaz de regenerar los indices, es no regenerarlos, me explico, eliminalos, y vuelvelos a crear con algún procedimiento aunque te parezca que te va ha llevar un poco más de tiempo, al final observarás como no es así.
También puedes utilizar utilidades como por ejemplo sysutils, pero no siempre se reparan.