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***