Autor Tema: Recuperas tablas borradas  (Leído 2748 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 200
Recuperas tablas borradas
« en: Abril 14, 2012, 07:06:52 pm »
Palabras clave: recuperar, restaurar, tablas, borradas, eliminadas
Autor: Happy
Extraído de: La web del Búho

Pregunta
¿Alguna posibilidad de recuperar una tabla borrada?

Responde Happy
Por lo que conozco (poco, la verdad), cuando una tabla se borra MANUALMENTE (quiero decir que no lo ha sido a través de código) lo que hace Access en realidad es renombrarla y cambiar sus  atributos a oculto y de sistema. Con lo cual la tabla no ha sido borrada de momento.

La vida de esta tabla por lo que yo se, dura mientras:

1- no se cierre la bd
2- no se compacte la bd (claro, para que se compacte la bd, primero tiene que cerrarse)
3- no se cree una nueva tabla (pues al parecer, la nueva tabla ocuparía el lugar en algún sitio de la tabla borrada)

Sabiendo esto y mientras no haya ocurrido ninguna de las 3 condiciones anteriormente descritas (ya digo que son las que yo he podido comprobar), podríamos ejecutar una función como la siguiente para recuperar esa tabla borrada accidentalmente (a la función hay que pasarle como argumento el nombre de la tabla recuperada, y la función devolverá un valor True/False si ha tenido éxito o no):

Código: [Seleccionar]
'********** Código **************
' Función para recuperar una tabla
' borrada manual y accidentalmente
' siempre que:
'
' 1-No se haya cerrado la BD
' 2-No se haya compactado la BD
' 3-No se haya creado una nueva
'   tabla.
'
' desde el momento en el que se
' haya borrado la tabla.
'
' Autor: Juan M. Afán de Ribera
' Fecha: 22/04/2003
'
' ¿Por qué?: Pues porque sí
'
Function recuperarTabla( _
   nomTabla As String) As Boolean

   Dim tabla As Object
   Dim cadSQL As String

   For Each tabla In CurrentDb.TableDefs
      If Left(tabla.Name, 4) = "~TMP" Then
         cadSQL = "SELECT * INTO [" & nomTabla & _
         "] FROM [" & tabla.Name & "];"
         CurrentDb.Execute cadSQL
         recuperarTabla = True
         Exit For
      End If
   Next

End Function
'************ Fin código **************

Esto es lo que yo conozco sobre el tema. A ver si alguien aporta más cosas y entre todos conocemos más sobre esto.