

版本升级/其它等
真正隐藏表和删除隐藏表的几种技巧
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
其它相关链接