Office中国论坛/Access中国论坛
标题: ADO隐藏表的代码能否改成隐藏查询? [打印本页]
作者: ycxchen 时间: 2013-12-7 11:08
标题: ADO隐藏表的代码能否改成隐藏查询?
下面的代码是网上下载的,能否改成彻底隐藏查询的?请高手指教。
用ADO编程隐藏表
sub hide_table()
Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Set cat.ActiveConnection = CurrentProject.Connection
Dim tbl As ADOX.Table
Dim pro As Property
For Each tbl In cat.Tables
Debug.Print tbl.name
For Each pro In tbl.Properties
Debug.Print pro.name & "=" & pro.Value
Next
If tbl.name = "需要隐藏的表名" Then tbl.Properties.Item("JetOLEDB:Table Hidden In Access") = True
Next
End Sub
同理,你还可以隐藏其他的数据库对象,一样使用 ADO
作者: 盗梦 时间: 2013-12-7 11:11
ADOX.Table 改成 ADOX.QueryDef
作者: ycxchen 时间: 2013-12-7 11:37
按2楼的办法改动不行的,提示cat As New ADOX.Catalog未定义。请问,如何办?
作者: ycxchen 时间: 2013-12-7 11:52
看过帮助,不明。
作者: 好运牛 时间: 2013-12-7 14:28
查询隐藏不了
作者: leonshi 时间: 2013-12-7 14:41
查询可以用代码隐藏,但是不能达到隐藏表那样的效果。如果你想达到你预期的效果查询尽量使用代码来实现查询
作者: netguestcn 时间: 2013-12-7 21:05
Public Function XianShiChaXun()
On Error GoTo Err_XianShiChaXun
'======================================================================================
'显示系统中所有的查询
'DoCmd.SetWarnings 0 '关闭系统提示
Dim db As Database
Dim i As Integer
Set db = DBEngine.Workspaces(0).Databases(0)
db.QueryDefs.Refresh
For i = db.QueryDefs.Count - 1 To 0 Step -1
' MsgBox db.QueryDefs(i).Name
Application.SetHiddenAttribute acQuery, db.QueryDefs(i).Name, False
'MsgBox db.QueryDefs(i).Name
Next i
Set db = Nothing
'MsgBox "当前数据库中的所有查询都已显示!", vbInformation, "系统提示"
Exit_XianShiChaXun:
Exit Function
Err_XianShiChaXun:
'MsgBox Err.Description
Resume Exit_XianShiChaXun
End Function
Public Function YinCangChaXun()
On Error GoTo Err_YinCangChaXun
'======================================================================================
'隐藏系统中所有的查询,以确保不会被非法链接,
'DoCmd.SetWarnings 0 '关闭系统提示
Dim db As Database
Dim i As Integer
Set db = DBEngine.Workspaces(0).Databases(0)
db.QueryDefs.Refresh
For i = db.QueryDefs.Count - 1 To 0 Step -1
' MsgBox db.QueryDefs(i).Name
Application.SetHiddenAttribute acQuery, db.QueryDefs(i).Name, True
'MsgBox db.QueryDefs(i).Name
Next i
Set db = Nothing
Exit_YinCangChaXun:
Exit Function
Err_YinCangChaXun:
'MsgBox Err.Description
Resume Exit_YinCangChaXun
End Function
作者: leonshi 时间: 2013-12-7 21:28
版主说的彻底隐藏,你这个好像不是啊
作者: ycxchen 时间: 2013-12-8 08:43
谢谢!这个不能彻底隐藏查询的。
作者: roych 时间: 2013-12-8 15:24
本帖最后由 roych 于 2013-12-8 15:26 编辑
一般不是用Attribute属性吗?详见http://www.office-cn.net/portal.php?mod=view&aid=233&page=1&记得之前跟一个老前辈的论战中就提出过这个问题,没法彻底隐藏的,设置Attribute属性为True就可以找到了。
作者: ycxchen 时间: 2013-12-9 09:57
谢版主,目前,确无必要讨论此问题了。
作者: aslxt 时间: 2013-12-10 23:00
查询不是很复杂的情况,就用代码处理,然后编译。
作者: ycxchen 时间: 2013-12-11 16:46
哦,我说的是能不能彻底隐藏查询。
作者: aslxt 时间: 2013-12-12 22:24
就是把查询的语法存放在代码中,数据库对象中就看不到该查询对象
作者: ycxchen 时间: 2013-12-14 10:17
谢谢!生成SQL语句,明白。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |