Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]求助:如何恢复mde中被DAO隐藏的表?

朱军  发表于:2009-03-12 18:38:22  
复制

是用以下代码隐藏的,然后生成了MDE,现在想要这个MDE中一个表的数据,不知道如何恢复?谢谢!!!!  
  Dim tabdef As DAO.TableDef
    For Each tabdef In CurrentDb.TableDefs
                tabdef.Attributes = 1
    Next

 

Top
朱军 发表于:2009-03-12 18:40:42
找到了这段代码,可以正常隐藏/恢复当前库中的表,如何修改才能隐藏/恢复其它mdb和mde中的表啊?请高手帮帮忙!!!跪谢!!!!!现在数据出不来,急死我了......

Function chediyincangbiao()     '彻底隐蔽所有的表格包括链接表及系统表等

On Error GoTo Err_Command0_Click
Dim db As Database
Dim i As Integer
    Set db = DBEngine.Workspaces(0).Databases(0)
   
    db.TableDefs.Refresh
    For i = 0 To db.TableDefs.Count - 1
    '此项操作应避开系统表,以免将系统表属性改而造成问题.
      If db.TableDefs(i).name = "msysaccessobjects" or db.TableDefs(i).name = "MSYSACCESSXML" _
      or db.TableDefs(i).name = "MSYSACES" or db.TableDefs(i).name = "MSYSOBJECTS" _
      or db.TableDefs(i).name = "MSYSQUERIES" or db.TableDefs(i).name = "MSYSRELATIONSHIPS" Then
      
    Else
       CurrentDb.TableDefs(db.TableDefs(i).name).Attributes = 1
    End If
    Next i
    Set db = Nothing
MsgBox "当前数据库中的所有表格都已被隐藏."

Exit_Command0_Click:
    Exit Function

Err_Command0_Click:
    MsgBox Err.Description
    Resume Exit_Command0_Click

End Function

朱军 发表于:2009-03-12 19:39:31

自己顶一下,请版主出面帮下忙,谢谢啦!!!!



小魏 发表于:2009-03-12 20:32:15

你用的这段代码是我以前发表的,

当时发表时没有发布解除的方法,因为方法实在太简单了,所以就懒得去说.

你还是用这段代码,只要改一处数据,就是下面这段代码加彩色显示的地方,原值是1,就是隐藏的意思.你改为0或者是-1就可以解决你的问题了.

如果还不明白,你Q我.

 

Function chediyincangbiao()     '彻底隐蔽所有的表格包括链接表及系统表等

On Error GoTo Err_Command0_Click
Dim db As Database
Dim i As Integer
    Set db = DBEngine.Workspaces(0).Databases(0)
   
    db.TableDefs.Refresh
    For i = 0 To db.TableDefs.Count - 1
    '此项操作应避开系统表,以免将系统表属性改而造成问题.
      If db.TableDefs(i).name = "msysaccessobjects" or db.TableDefs(i).name = "MSYSACCESSXML" _
      or db.TableDefs(i).name = "MSYSACES" or db.TableDefs(i).name = "MSYSOBJECTS" _
      or db.TableDefs(i).name = "MSYSQUERIES" or db.TableDefs(i).name = "MSYSRELATIONSHIPS" Then
      
    Else
       CurrentDb.TableDefs(db.TableDefs(i).name).Attributes = 1
    End If
    Next i
    Set db = Nothing
MsgBox "当前数据库中的所有表格都已被隐藏."

Exit_Command0_Click:
    Exit Function

Err_Command0_Click:
    MsgBox Err.Description
    Resume Exit_Command0_Click

End Function



朱军 发表于:2009-03-12 21:10:27

谢谢!!

我知道这里改成0就可以恢复被隐藏的表......但只是针对当前的库,是吗?

而我想通过另一个MDB来恢复这个MDE中被隐藏的表

我知道用DAO能够操作别一个库的,就是不知道具体的代码应该是怎么样的....



小魏 发表于:2009-03-12 21:51:58

我给你写了个函数,我调试过,是可以解决这个问题的.

调用的方法示例如下:

call xianshibiao("C:\Users\zhenwu\Desktop\WZW\db2-2003.mde","")

 

Function XianshiBiao(strDBdirName As String, strDBPWD As String)
On Error Resume Next

Dim appAccess As Access.Application
Dim DB As Database
 
'OpenCurrentDatabase
Dim strDB As String
        strDB = strDBdirName

       Set appAccess = CreateObject("Access.Application")
       Set DB = appAccess.DBEngine.OpenDatabase(strDB, True, 0, ";PWD=")
    appAccess.OpenCurrentDatabase strDB
          Dim i As Integer
  
     Dim str1 As String
    DB.TableDefs.Refresh
    For i = 0 To DB.TableDefs.count - 1
              str1 = DB.TableDefs(i).Name
       
       
        '此项操作应避开系统表,以免将系统表属性改而造成问题.
      If DB.TableDefs(i).Name = "msysaccessobjects" Or DB.TableDefs(i).Name = "MSYSACCESSXML" _
      Or DB.TableDefs(i).Name = "MSYSACES" Or DB.TableDefs(i).Name = "MSYSOBJECTS" _
      Or DB.TableDefs(i).Name = "MSYSQUERIES" Or DB.TableDefs(i).Name = "MSYSRELATIONSHIPS" Then
     
      Else
       Debug.Print str1
       DB.TableDefs(i).Attributes = 0

     END IF
    Next i
    Set DB = Nothing
End Function



朱军 发表于:2009-03-12 22:13:42

谢谢weizw55的再次帮忙!!!

您的这个函数还是没办法让隐藏的表显示出来....呵呵

不过我用excel把数据导出来了...

 



总记录:6篇  页次:1/1 9 1 :