版本升级/其它等
真正隐藏表和删除隐藏表的几种技巧
2015-01-17 21:27:48
隐藏表的几种方法

 
1、直接在数据表名称上右键单击--》调出属性对话框--》勾选“隐藏”,成为隐藏对象。但可以用查看隐藏对象查看到
2、在指定表的名称前面加USYS,这样就成为系统对象。用查看系统对象可以查到;
3、在表的名称前面加~TMPCLP,用查看系统或隐藏对象也无法看到,但可以在系统表MSysObjects这个表中查到。
4.或用代码彻底隐藏表
 
Function HiddenTable(TableName As String, Hidden As Boolean) As Boolean
    Dim blnShowTable  As Boolean
    Dim blnHiddenTable As Boolean
    
    blnShowTable = IsObjectInDb(acTable, TableName)
    blnHiddenTable = IsObjectInDb(acTable, "~TMPCLP" & TableName)
    
    If blnShowTable = False And blnHiddenTable = False Then
        HiddenTable = False
        MsgBox "表'" & TableName & "'不存在"
        Exit Function
    End If
    
    If Hidden = True Then
        If blnShowTable = True Then
            If blnHiddenTable = True Then DoCmd.DeleteObject acTable, "~TMPCLP" & TableName
            DoCmd.Rename "~TMPCLP" & TableName, acTable, TableName
        End If
    
    Else
        If blnShowTable = False Then
            If blnHiddenTable = True Then
                DoCmd.Rename TableName, acTable, "~TMPCLP" & TableName
            End If
        Else
            If blnHiddenTable = True Then DoCmd.DeleteObject acTable, "~TMPCLP" & TableName
        End If
    End If
    HiddenTable = True
End Function
 
 
真正删除这些表的方法

 

1.创建一个空白数据库mdb,然后导入所有除tmpclp开头的所有对象,然后再压缩和修复
 
2.删除临时对像的代码
 
Sub DeleteTmpObjects()
Dim rs As DAO.Recordset
Dim sql As String
 
sql = "SELECT MSysObjects.Name, MSysObjects.Type"
sql = sql & " FROM MSysObjects "
sql = sql & " WHERE MSysObjects.Name Like ""~sq_*"""
sql = sql & " ORDER BY MSysObjects.Name"
 
strSQL=Replace(strSQL,"'",chr(34))  '增加这句替换
 
Set rs = CurrentDb.OpenRecordset(sql)
 
    Do Until rs.EOF
        Select Case rs("Type")
        Case 5
        DoCmd.DeleteObject acQuery, rs("Name")  '临时临时的查询
        Case Else
        Debug.Print rs("Type"), rs("Name")   ' 显示结果
    End Select
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End Sub
 
其它相关链接
1.http://www.office-cn.net/thread-95999-1-1.html
2.http://www.office-cn.net/thread-62849-1-1.html