设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5322|回复: 14
打印 上一主题 下一主题

[ADO/DAO] ADO隐藏表的代码能否改成隐藏查询?

[复制链接]
跳转到指定楼层
1#
发表于 2013-12-7 11:08:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的代码是网上下载的,能否改成彻底隐藏查询的?请高手指教。

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2013-12-7 11:11:21 | 只看该作者
ADOX.Table 改成 ADOX.QueryDef
3#
 楼主| 发表于 2013-12-7 11:37:49 | 只看该作者
按2楼的办法改动不行的,提示cat As New ADOX.Catalog未定义。请问,如何办?
4#
 楼主| 发表于 2013-12-7 11:52:26 | 只看该作者
看过帮助,不明。

点击这里给我发消息

5#
发表于 2013-12-7 14:28:32 | 只看该作者
查询隐藏不了
6#
发表于 2013-12-7 14:41:58 | 只看该作者
查询可以用代码隐藏,但是不能达到隐藏表那样的效果。如果你想达到你预期的效果查询尽量使用代码来实现查询
7#
发表于 2013-12-7 21:05:04 | 只看该作者
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
8#
发表于 2013-12-7 21:28:24 | 只看该作者
版主说的彻底隐藏,你这个好像不是啊
9#
 楼主| 发表于 2013-12-8 08:43:41 | 只看该作者
netguestcn 发表于 2013-12-7 21:05
Public Function XianShiChaXun()
    On Error GoTo Err_XianShiChaXun
    '========================= ...

谢谢!这个不能彻底隐藏查询的。
10#
发表于 2013-12-8 15:24:54 | 只看该作者
本帖最后由 roych 于 2013-12-8 15:26 编辑

一般不是用Attribute属性吗?详见http://www.office-cn.net/portal.php?mod=view&aid=233&page=1&记得之前跟一个老前辈的论战中就提出过这个问题,没法彻底隐藏的,设置Attribute属性为True就可以找到了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-26 23:26 , Processed in 0.094420 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表