Tìm thủ thuật nhanh hơn với chức năng tìm trong Blog

11/10/09

Phục Hồi Table lỡ xóa

Trả lời: Ý tưởng đặt ra là ta sẽ tìm lại table bi xóa trong những file ~templete (được tạo ra khi access dang chạy). Bạn tạo một command button phuchoi gọi lệnh UndeleteTable () như sau nhé:

Private sub phuchoi_click ()

Call UnDeleteTable ()

End sub




Option Compare Database

Function UnDeleteTable(Optional sName As String)

Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim sTable As String
Dim sSQL As String
Dim sMsg As String

If IsMissing(sName) Then sName = "Tablephuchoi"
If Len(sName) = 0 Then sName = "Tablephuhoi"

Set db = CurrentDb()

For Each tdf In db.TableDefs
If left(tdf.Name, 4) = "~tmp" Then
sTable = tdf.Name
sSQL = "SELECT [" & sTable & "].* INTO " & sName
sSQL = sSQL & " FROM [" & sTable & "];"

db.Execute sSQL

sMsg = "Da phuc hoi xong mot Tablle bi xoa voi ten " & sName
MsgBox sMsg, vbOKOnly, "Da phuc hoi xong"
GoTo Exit_Undelete
End If
Next

' Neu khong tim thay thi thong bao
MsgBox "Khong tim thay Table nao co the phuc hoi", vbOKOnly, "Xin loi!"

Exit_Undelete:
Set db = Nothing
Exit Function

Err_Undelete:
MsgBox err.Description
Resume Exit_Undelete

End Function

' Notes: Ham nay chi su dung cho Access 95 tro len va con tuy thuoc vao mot so dieu kien sau:
' - Da xoa nham Table nhung chua dong CSDL (đóng rồi thì tui chưa thử)
' - CSDL chua su dung che do compact and comact repair (dọn rác rồi lấy đâu ra mà phục hồi?)
' - CSDL bi xoa boi phan quyen User trong ung dung access cua ban (tui thu roi khoi test nua)
' - Ham nay chi phuc hoi cho mot Table bi xoa gan nhat (những cái trước đó tui bó tay chưa nghĩ ra)

Xin lỗi các bạn chịu khó đọc phần notes kô dấu nhé mình copy cho lẹ (^_^)

------------------------------------------

Chúc thành công!
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum