problemas abrir tabla modo exclusivo
Publicado por raul (16 intervenciones) el 02/05/2001 17:04:03
Hola,
estoy intentando hacer un programa que maneja una tabla DBF y necesito empaquetarla para eliminar los registros borrados. Para empaquetarla uso este procedimiento:
tablaelementos.Close;
tablaelementos.Exclusive := True;
tablaelementos.Open;
DBIPackTable (Tablaelementos.DBHandle,
Tablaelementos.Handle,
nil,nil,True);
Tablaelementos.close;
Tablaelementos.Exclusive := False;
El hecho es que cuando intento ejecutar este procedimiento (dentro del programa principal) resulta que obtengo un error '... exception class EDBEngineError with message 'Table is busy''. El error parece que lo obtengo justo cuando intento abrir la tabla despues de haber impuesto que esté en modo exclusivo.
El procedimiento funciona si lo uso fuera del programa principal (es decir, ejecuto mi programa que manipula la base de datos, lo cierro y abro otro que solo contiene este procedimiento de empaquetamiento).
No entiendo que me ponga 'Table is busy' porque la primera instruccion que le pongo es que me la cierre.
Ciertamente no domino esto del DELPHI y quizas sea un error de bulto en la forma que tengo de controlar la tabla.
Esta tabla la uso tanto desde el form principal como desde otros varios.
¿existe alguna forma de poder cerrar 'totalmente' una tabla de igual forma a como lo hacer el propio programa cuando cerramos el form principal?
muchas gracias por adelantado y saludos a la gente del foro.
RAUL
estoy intentando hacer un programa que maneja una tabla DBF y necesito empaquetarla para eliminar los registros borrados. Para empaquetarla uso este procedimiento:
tablaelementos.Close;
tablaelementos.Exclusive := True;
tablaelementos.Open;
DBIPackTable (Tablaelementos.DBHandle,
Tablaelementos.Handle,
nil,nil,True);
Tablaelementos.close;
Tablaelementos.Exclusive := False;
El hecho es que cuando intento ejecutar este procedimiento (dentro del programa principal) resulta que obtengo un error '... exception class EDBEngineError with message 'Table is busy''. El error parece que lo obtengo justo cuando intento abrir la tabla despues de haber impuesto que esté en modo exclusivo.
El procedimiento funciona si lo uso fuera del programa principal (es decir, ejecuto mi programa que manipula la base de datos, lo cierro y abro otro que solo contiene este procedimiento de empaquetamiento).
No entiendo que me ponga 'Table is busy' porque la primera instruccion que le pongo es que me la cierre.
Ciertamente no domino esto del DELPHI y quizas sea un error de bulto en la forma que tengo de controlar la tabla.
Esta tabla la uso tanto desde el form principal como desde otros varios.
¿existe alguna forma de poder cerrar 'totalmente' una tabla de igual forma a como lo hacer el propio programa cuando cerramos el form principal?
muchas gracias por adelantado y saludos a la gente del foro.
RAUL
Valora esta pregunta


0