成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

access下如何恢復已經刪除的記錄;如何恢復已經刪除的表、窗體等等對象

瀏覽:283日期:2023-03-18 16:41:52
問題:

    如何恢復已經刪除的記錄;如何恢復已經刪除的表、窗體等等對象
1、我用 DELETE FROM TABLE 刪除了一些記錄,現在發現誤刪除了,該如何恢復?
2、我直接手動刪除或者用 DROP TABLE 刪除了一個表,現在發現是誤刪除了,該如何恢復?
3、我手動刪除了一個窗體,該如何恢復?
4、我刪除了記錄,可是數據庫體積并沒有減小,那么是否能找回記錄呢?

 


回答:

    1、已經刪除的記錄是無法恢復的,ACCESS 不是 FOXPRO,MDB 格式不是 DBF 格式,沒有邏輯刪除和物理刪除的概念,一旦刪除就無法恢復了。
2、無法恢復,但是你可以查看一下,有沒有隱藏的以 "~" 符號開頭的表,更改該表的名稱有可能找回你需要的表。
3、無法恢復,但是你可以查看一下有沒有系統隱藏的對象,有時候對象被刪除時系統并不直接刪除,而是更改對象名后隱藏它。
4、數據庫體積的確沒有變小,你壓縮修復數據庫后體積就會變小了。那是因為在二進制上你的數據的確沒有被刪除,仍然存放在磁盤的某個扇區,但是微軟沒有提供 MDB 格式二進制組織方式的參考資料(微軟也不會提供,其他第三方公司也沒有權利直接反編譯 MDB 格式)。至今為止,中國大陸我也沒有看到過相關的參考資料。所以目前為止,你已經刪除的數據是無法恢復的。但是你可以嘗試使用磁盤恢復軟件來找到恢復數據的方法,但是該方法不在本文討論范圍。

建議:在建立數據庫結構時,可以在各個表中再多加一個 ISDEL 字段,刪除記錄時不使用 DELETE FROM ,而使用 UPDATE TABLE SET ISDEL=TRUE 這樣的語句,然后在界面上不顯示 ISDEL=TRUE 的記錄即可。
復制代碼 代碼如下:
如果還沒有被壓縮理論上可以。試試這段代碼吧。加在access模組中
恢復刪除的工作表(未被壓縮)
 
Public Function FnUndeleteObjects() As Boolean
  On Error GoTo ErrorHandler:
  Dim strObjectName           As String
  Dim rsTables                As DAO.Recordset
  Dim dbsDatabase             As DAO.Database
  Dim tDef                    As DAO.TableDef
  Dim qDef                    As DAO.QueryDef
  Dim intNumDeletedItemsFound As Integer
  Set dbsDatabase = CurrentDb
  For Each tDef In dbsDatabase.TableDefs
      "This is actually used as a "Deleted Flag"
      If tDef.Attributes And dbHiddenObject Then
         strObjectName = FnGetDeletedTableNameByProp(tDef.Name)
         strObjectName = InputBox("A deleted TABLE has been found." & _
                         vbCrLf & vbCrLf & _
                         "To undelete this object, enter a new name:", _
                         "Access Undelete Table", strObjectName)

         If Len(strObjectName) > 0 Then
            FnUndeleteTable CurrentDb, tDef.Name, strObjectName
         End If
         intNumDeletedItemsFound = intNumDeletedItemsFound + 1
      End If
  Next tDef

  For Each qDef In dbsDatabase.QueryDefs
      "Note "Attributes" flag is not exposed for QueryDef objects,
      "We could look up the flag by using MSysObjects but
      "new queries don"t get written to MSysObjects until
      "Access is closed. Therefore we"ll just check the
      "start of the name is "~TMPCLP" ...
      If InStr(1, qDef.Name, "~TMPCLP") = 1 Then
         strObjectName = ""
         strObjectName = InputBox("A deleted QUERY has been found." & _
                         vbCrLf & vbCrLf & _
                         "To undelete this object, enter a new name:", _
                         "Access Undelete Query", strObjectName)

         If Len(strObjectName) > 0 Then
            If FnUndeleteQuery(CurrentDb, qDef.Name, strObjectName) Then
               "We"ll rename the deleted object since we"ve made a
               "copy and won"t be needing to re-undelete it.
               "(To break the condition "~TMPCLP" in future...)
                qDef.Name = "~TMPCLQ" & Right$(qDef.Name, Len(qDef.Name) - 7)
             End If
         End If
         intNumDeletedItemsFound = intNumDeletedItemsFound + 1
      End If
  Next qDef
  If intNumDeletedItemsFound = 0 Then
     MsgBox "Unable to find any deleted tables/queries to undelete!"
  End If

  Set dbsDatabase = Nothing
  FnUndeleteObjects = True
ExitFunction:
  Exit Function
ErrorHandler:
  MsgBox "Error occured in FnUndeleteObjects() - " & _
         Err.Description & " (" & CStr(Err.Number) & ")"
  GoTo ExitFunction
End Function


Private Function FnUndeleteTable(dbDatabase As DAO.Database, _
                 strDeletedTableName As String, _
                 strNewTableName As String)

  "Module (c) 2005 Wayne Phillips (http://www.everythingaccess.com)
  "Written 18/04/2005
  Dim tDef As DAO.TableDef
  Set tDef = dbDatabase.TableDefs(strDeletedTableName)
  "Remove the Deleted Flag...
  tDef.Attributes = tDef.Attributes And Not dbHiddenObject
  "Rename the deleted object to the original or new name...
  tDef.Name = strNewTableName
  dbDatabase.TableDefs.Refresh
  Application.RefreshDatabaseWindow
  Set tDef = Nothing
End Function

Private Function FnUndeleteQuery(dbDatabase As DAO.Database, _
                 strDeletedQueryName As String, _
                 strNewQueryName As String)

  "Module (c) 2005 Wayne Phillips (http://www.everythingaccess.com)
  "Written 18/04/2005
  "We can"t just remove the Deleted flag on queries
  "("Attributes" is not an exposed property)
  "So instead we create a new query with the SQL...

  "Note: Can"t use DoCmd.CopyObject as it copies the dbHiddenObject attribute!

  If FnCopyQuery(dbDatabase, strDeletedQueryName, strNewQueryName) Then
     FnUndeleteQuery = True
     Application.RefreshDatabaseWindow
  End If
End Function


Private Function FnCopyQuery(dbDatabase As DAO.Database, _
                 strSourceName As String, _
                 strDestinationName As String)

  "Module (c) 2005 Wayne Phillips (http://www.everythingaccess.com)
  "Written 18/04/2005
  On Error GoTo ErrorHandler:

  Dim qDefOld As DAO.QueryDef
  Dim qDefNew As DAO.QueryDef
  Dim Field As DAO.Field

  Set qDefOld = dbDatabase.QueryDefs(strSourceName)
  Set qDefNew = dbDatabase.CreateQueryDef(strDestinationName, qDefOld.SQL)

  "Copy root query properties...
  FnCopyLvProperties qDefNew, qDefOld.Properties, qDefNew.Properties

  For Each Field In qDefOld.Fields
      "Copy each fields individual properties...
      FnCopyLvProperties qDefNew.Fields(Field.Name), _
                         Field.Properties, _
                         qDefNew.Fields(Field.Name).Properties
  Next Field
  dbDatabase.QueryDefs.Refresh
  FnCopyQuery = True
ExitFunction:
  Set qDefNew = Nothing
  Set qDefOld = Nothing
  Exit Function
ErrorHandler:
  MsgBox "Error re-creating query "" & strDestinationName & "":" & vbCrLf & _
         Err.Description & " (" & CStr(Err.Number) & ")"
  GoTo ExitFunction
End Function

Private Function PropExists(Props As DAO.Properties, strPropName As String) As Boolean
  "Module (c) 2005 Wayne Phillips (http://www.everythingaccess.com)
  "Written 18/04/2005
  "If properties fail to be created, we"ll just ignore the errors
  On Error Resume Next
  Dim Prop As DAO.Property
  For Each Prop In Props
      If Prop.Name = strPropName Then
         PropExists = True
         Exit Function " Short circuit
      End If
  Next Prop
  PropExists = False
End Function

Private Sub FnCopyLvProperties(objObject As Object, OldProps As DAO.Properties, NewProps As DAO.Properties)
  "Module (c) 2005 Wayne Phillips (http://www.everythingaccess.com)
  "Written 18/04/2005
  "If properties fail to be created, we"ll just ignore the errors
  On Error Resume Next
  Dim Prop As DAO.Property
  Dim NewProp As DAO.Property
  For Each Prop In OldProps
      If Not PropExists(NewProps, Prop.Name) Then
         If IsNumeric(Prop.Value) Then
            NewProps.Append objObject.CreateProperty(Prop.Name, Prop.Type, CLng(Prop.Value))
         Else
            NewProps.Append objObject.CreateProperty(Prop.Name, Prop.Type, Prop.Value)
         End If
      Else
         With NewProps(Prop.Name)
              .Type = Prop.Type
              .Value = Prop.Value
         End With
      End If
  Next Prop
End Sub

Private Function FnGetDeletedTableNameByProp(strRealTableName As String) As String
  "Module (c) 2005 Wayne Phillips (http://www.everythingaccess.com)
  "Written 18/04/2005
  "If an error occurs here, just ignore (user will override the blank name)
  On Error Resume Next
  Dim i As Long
  Dim strNameMap As String

  "Look up the Unicode translation NameMap property to try to guess the
  "original table name... (Access 2000+ only - and doesn"t always exist?!)

  strNameMap = CurrentDb.TableDefs(strRealTableName).Properties("NameMap")
  strNameMap = Mid(strNameMap, 23) "Offset of the table name...

  "Find the null terminator...
  i = 1
  If Len(strNameMap) > 0 Then
     While (i < Len(strNameMap)) And (Asc(Mid(strNameMap, i)) <> 0)
       i = i + 1
     Wend
  End If
  FnGetDeletedTableNameByProp = Left(strNameMap, i - 1)
End Function
標簽: Access
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
免费xxxx性欧美18vr| 欧美成人一区二区三区在线观看| 91精品国产91热久久久做人人 | 蜜桃视频免费观看一区| 99在线|亚洲一区二区| 最近日韩中文字幕| 最近看过的日韩成人| 羞羞答答国产精品www一本 | 成人毛片在线观看| 日韩欧美一卡二卡| 国产91精品欧美| 7777精品伊人久久久大香线蕉的| 久久成人免费电影| 欧美日韩国产一级片| 韩国三级在线一区| 欧美一区二区三区爱爱| 成人激情视频网站| 久久嫩草精品久久久精品一| 91在线小视频| 国产精品嫩草影院av蜜臀| 国产一区日韩一区| 亚洲色图在线播放| 亚洲一区二区三区精品在线观看 | 久久精品国产一区二区三| 欧美色网一区二区| 国产成人a级片| www一区二区| 国内视频一区| 亚洲已满18点击进入久久| 久久精品一区| 激情偷乱视频一区二区三区| 欧美一区二区三区公司| 91网页版在线| 亚洲视频一区二区在线观看| 国产日韩在线一区二区三区| 日韩中文字幕区一区有砖一区| 欧美在线观看视频一区二区| 精品亚洲aⅴ乱码一区二区三区| 91精品国产综合久久精品性色| 成人少妇影院yyyy| 国产丝袜美腿一区二区三区| 伊人精品在线| 亚洲午夜免费福利视频| 91久久精品国产91性色tv | 亚洲电影视频在线| 91成人网在线| 丁香六月综合激情| 国产精品久久一卡二卡| 男人的天堂亚洲| 久久精品72免费观看| 日韩视频免费观看高清完整版在线观看| 99re在线精品| 夜夜亚洲天天久久| 欧美日韩一区二区电影| 成人激情动漫在线观看| 国产精品蜜臀av| 国产精品日韩久久久| 蜜桃视频在线观看一区| 欧美一卡在线观看| 欧美jjzz| 亚洲丰满少妇videoshd| 欧美日韩国产影片| 亚洲欧美影院| 日韩高清在线不卡| 亚洲精品一区二区三区99| 伊人久久大香线蕉av超碰演员| 天天综合色天天| 日韩三级伦理片妻子的秘密按摩| 欧美日韩理论| 日韩av在线发布| 26uuu国产日韩综合| 国产日韩精品视频一区二区三区| 久久99精品国产麻豆婷婷| 久久久精品影视| 另类亚洲自拍| 成人小视频在线| 亚洲综合丝袜美腿| 日韩视频一区二区在线观看| 亚洲精品一品区二品区三品区| 久久av资源站| 国产精品久久影院| 欧美日韩国产一二三| 国内精品久久久久久久影视麻豆| 青青草一区二区三区| 久久一区二区三区国产精品| 亚洲在线国产日韩欧美| 不卡一二三区首页| 亚洲r级在线视频| 欧美精品一区二区蜜臀亚洲| 国产亚洲福利| 成人av在线影院| 日韩中文字幕亚洲一区二区va在线| 精品国产乱码久久久久久老虎| 亚洲二区精品| 懂色av中文一区二区三区| 亚洲免费成人av| 91精品欧美福利在线观看| 合欧美一区二区三区| 国产一区二区免费看| 亚洲免费观看高清完整| 欧美哺乳videos| 色噜噜狠狠一区二区三区果冻| 欧美日韩一区二区三区四区在线观看| 麻豆极品一区二区三区| 亚洲欧美日韩在线播放| 精品美女一区二区| 91精品1区2区| 一级日韩一区在线观看| 94色蜜桃网一区二区三区| 男女激情视频一区| 1024国产精品| xvideos.蜜桃一区二区| 欧美精品乱码久久久久久| 亚洲男女自偷自拍| 欧美国产三级| 国产乱码精品1区2区3区| 亚洲高清不卡在线| 中文字幕一区二区三区在线不卡| 日韩欧美一区二区三区在线| 久久影院亚洲| 亚洲欧洲日本mm| 91在线免费播放| 国产成人欧美日韩在线电影| 热久久免费视频| 一区二区三国产精华液| 久久日一线二线三线suv| 欧美日韩高清一区| 日本高清视频一区二区| 妖精视频成人观看www| www.日韩av| 国产精品996| 青青草91视频| 亚洲自拍偷拍综合| 1区2区3区国产精品| 国产亚洲欧美色| 欧美电影免费观看高清完整版在线| 欧美日韩在线一区二区| 一本久久a久久免费精品不卡| 中文在线不卡| 激情欧美国产欧美| 91啪亚洲精品| 国产精品91一区二区| 极品尤物av久久免费看| 日本vs亚洲vs韩国一区三区 | 91色综合久久久久婷婷| 国产精品香蕉一区二区三区| 免费人成黄页网站在线一区二区| 一区二区三区91| 亚洲欧美日韩国产成人精品影院| 国产喂奶挤奶一区二区三区| 精品蜜桃在线看| 精品久久一区二区| 日韩欧美国产午夜精品| 9191久久久久久久久久久| 欧美日韩欧美一区二区| 欧美午夜一区二区| 在线一区二区三区四区| 91福利精品第一导航| 日本高清视频一区二区| 色88888久久久久久影院野外| 久久激情综合| 久久久久在线| 久久婷婷人人澡人人喊人人爽| 毛片一区二区| 日本精品裸体写真集在线观看| 色婷婷亚洲综合| 精品视频一区二区三区免费| 欧美曰成人黄网| 色网站国产精品| 在线一区二区三区四区| 欧美日韩在线精品一区二区三区激情| 欧美在线观看视频在线| 欧美性生活久久| 宅男在线国产精品| 欧美一区二区三区视频在线 | 亚洲小说欧美激情另类| 亚洲在线观看免费视频| 一区二区欧美在线观看| 亚洲一区二区成人在线观看| 一区二区三区国产精华| 亚洲成人午夜电影| 蜜桃av一区二区三区电影| 国产真实乱偷精品视频免| 风间由美一区二区av101| 97se亚洲国产综合自在线观| 欧美日韩网址| 国产偷久久久精品专区| 久久一区中文字幕| 欧美日韩精品一二三区| 日韩免费福利电影在线观看| 久久久久久久久99精品| 国产精品国产三级国产有无不卡| 亚洲精品国久久99热| 日韩精品亚洲一区二区三区免费| 另类调教123区 | 色综合久久综合网| 在线播放不卡| 久久久精品动漫| 欧美美女喷水视频| 国产亚洲精品aa|