Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-09-2015
pelambres pelambres is offline
Registrado
NULL
 
Registrado: mar 2014
Posts: 3
Poder: 0
pelambres Va por buen camino
Error "Table is busy"

Hola:

A ver si a alguien le salido este error:

Al actualizar a Windows10 me da este error que con windows7 no salia (no he cambiado nada del código)

Error "Table Is busy"

Llevo usando el mismo código con diferentes versiones de Windows y nunca había tenido problema, quería pasarme de nuevo a Windows7, pero parece ser que una vez pasados 30 días ya no es posible.

Datos.Table2.Active:=False;
Datos.Table2.Exclusive:=True;
Datos.Table2.Active:=True;
Datos.Table2.EmptyTable;

Utilizo Delphi 5 con Windows10 y el BDE con tablas DBase

Agradeceria cualquier opinión al respecto.
Responder Con Cita
  #2  
Antiguo 30-09-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Hace mucho que no manejo Dbf, así que disculpa si me lío.

Podría ser que algún proceso marcara la tabla como abierta y olvidara quitar la marca al terminar. La cabecera de los archivos DBF tienen una marca para indicar que se está trabajando con ella, y si al abrir un archivo se encuentra dicha marca, entonces sólo permite operaciones de lectura. Ahora no sé si alguna herramienta como FoxPro o similar permita modificar dicha marca. También podrías modificarla directamente, haciendo un programa ex-profeso o mediante alguna herramienta de gestión de archivos binarios (como GHex), pero no lo recomiendo por si afecta a la integridad del archivo (si te equivocas de octeto, la lías parda).

Otra posible razón podría ser que el archivo de la tabla ya lo abrió otro proceso, programa o handle diferente y hasta que no se cierre no podrás acceder a él. Un problema de Windows es que siempre te bloquea los archivos cuando se abren, por lo que sólo un handle puede usarlo cada vez. Si ningún proceso lo tiene abierto, entonces es posible que algún proceso lo abriera y después no lo cerrara, dejándolo colgado. Personalmente, nunca me había pasado esto desde los tiempos de Windows 98, ya que con XP (como mínimo) al cerrar un programa se cierran todos los archivos y se liberan los handles correspondientes independientemente de lo que diga la aplicación. Lo mismo pasa al cerrar la sesión del sistema operativo.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 30-09-2015
pelambres pelambres is offline
Registrado
NULL
 
Registrado: mar 2014
Posts: 3
Poder: 0
pelambres Va por buen camino
Error "Table is busy"

Hola:
Ante todo gracias por responder tan rápido.
He revisado si había modificado código en relación con esa tabla, pero además de ese error con esa tabla me da el mismo error con otra que se usa muy exporadicamente, por lo cual sigo pensando que es problema de Windows10 y sus privilegios para modificar ficheros. Como ya comentaba en el mensaje anterior, no he cambiado el código que lleva escrito mas de 14 años en ninguno de los sitios en que da error, y coincide que el error les ha salido a usuarios que les hecho alguna modificación a partir de actualizarme a Windows10.
Responder Con Cita
  #4  
Antiguo 01-10-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Ahora que lo re-leo, creo que Windows 10 está todavía en fase beta, de ahí que lo anden regalando. Yo no suelo actualizar mi sistema operativo (sea Windows, Linux, Android o lo que sea) hasta como mínimo un año después de su primera publicación. Suele ahorrarme dolores de cabeza.

Pero sí, es posible que se deba a los permisos de Windows 10.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 01-10-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Ahora que lo re-leo, creo que Windows 10 está todavía en fase beta, de ahí que lo anden regalando. Yo no suelo actualizar mi sistema operativo (sea Windows, Linux, Android o lo que sea) hasta como mínimo un año después de su primera publicación. Suele ahorrarme dolores de cabeza.
Responder Con Cita
  #6  
Antiguo 22-10-2015
pelambres pelambres is offline
Registrado
NULL
 
Registrado: mar 2014
Posts: 3
Poder: 0
pelambres Va por buen camino
Hola:

Para los que le surja el error esta es la forma en que yo lo he arreglado:

Datos.table2 es la tabla MOVIMIEN.DBF
Por lo que se ve el error sale al establecer un vínculo del Query1 con la tabla, por lo que creo una tabla TEMP.DBF para que coja los datos de ella en lugar de cogerlos de la tabla original.
Código Delphi [-]
     copyfile('MOVIMIEN.DBF','TEMP.DBF',False); // NUEVO
     Datos.Query1.SQL.Clear;
     Datos.Query1.Active:=False;
    // Datos.Query1.SQL.Add('Select * from MOVIMIEN.DBF'); // ANULADA
     Datos.Query1.SQL.Add('Select * from TEMP.DBF');  // NUEVO
     Datos.Query1.Active:=True;
     Datos.Table2.Active:=False;
     Datos.Table2.Exclusive:=True;
     Datos.Table2.Active:=True;
     Datos.Table2.EmptyTable;
Por lo que se ve esto se debe a un bug de Windows10, que por otra parte estoy contento con el, especialmente porque es increiblemente rápido al arrancar el ordenador.
Saludos a todos.

Última edición por ecfisa fecha: 23-10-2015 a las 01:25:22. Razón: Etiquetas Delphi
Responder Con Cita
  #7  
Antiguo 23-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pelambres.

Por favor cuando incluyas código en tus mensaje usa etiquetas para darle más legibilidad:



Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Usar TServerSocket y TClientSocket para enviar "streams" más o menos "grandes" dec Internet 9 04-08-2015 16:11:50
Como resuelvo este error "Temporary table resource limit" fredy_boots Conexión con bases de datos 3 29-10-2014 12:53:01
Error al compilar: "Unknown table type" DSK25 C++ Builder 0 27-06-2012 20:10:39
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53
error "table is read only" Supermagayin Conexión con bases de datos 6 10-04-2005 22:39:17


La franja horaria es GMT +2. Ahora son las 18:15:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi