Undelete table

M

Mauro Chojrin

Hi:

I have a problem with a database in access 2k. Somebody erased a table by
mistake, the database hasn't been shrunk yet, is there a way to get the table
back?

Thanks
 
J

Jeff Boyce

Mauro

If you haven't closed the db or Access, there's a way to undelete a table
(NOTE: this does not apply if records were deleted from a table, but the
table structure left intact).

There's a KB article (209874) that describes one way to do this.

Here's some (sample -- no guarantees) code that extends the idea to recover
multiple deleted tables. You'll need to set a reference to DAO 3.6, and
you'll need to watch for line-wrap.

Again, this will only work if you have a table deleted, no Compact & Repair,
and have not closed the database or Access.

Good luck!

Jeff Boyce
<Access MVP>

'***Begin sample code***
'20050607

' Copyright, Jeff Boyce

' Information Futures

' Microsoft Access MVP



Function RecoverDeletedTable()



' Purpose: recover deleted table(s) BEFORE closing Access

' Changed: 06/07/2005 -- adapted from Microsoft KB 209874

' Tested: Access 2002

' Requires: reference to DAO 3.6



On Error GoTo ExitHere



'*Declarations*

Dim db As DAO.Database

Dim strTableName As String

Dim strSQL As String

Dim intCount As Integer

Dim blnRestored As Boolean



'*Init*

Set db = CurrentDb()



'*Procedure*

For intCount = 0 To db.TableDefs.Count - 1

strTableName = db.TableDefs(intCount).Name

If Left(strTableName, 4) = "~tmp" Then

strSQL = "SELECT DISTINCTROW [" & strTableName & "].* †_

"INTO " & Mid(strTableName, 5) & " FROM [" & strTableName
& ];"

DoCmd.SetWarnings False

DoCmd.RunSQL strSQL

MsgBox "A deleted table has been restored, using the name '" &
Mid(strTableName, 5) & "'", vbOKOnly, "Restored"

blnRestored = True

End If

Next intCount



If blnRestored = False Then

MsgBox "No recoverable tables found", vbOKOnly

End If



'*EXIT/ERROR*

ExitHere:

DoCmd.SetWarnings True

Set db = Nothing

Exit Function



ErrorHandler:

MsgBox Err.Description

Resume ExitHere



End Function
'***End sample code***
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top