设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 4776|回复: 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
15#
 楼主| 发表于 2013-12-14 10:17:34 | 只看该作者
aslxt 发表于 2013-12-12 22:24
就是把查询的语法存放在代码中,数据库对象中就看不到该查询对象

谢谢!生成SQL语句,明白。
14#
发表于 2013-12-12 22:24:32 | 只看该作者
ycxchen 发表于 2013-12-11 16:46
哦,我说的是能不能彻底隐藏查询。

就是把查询的语法存放在代码中,数据库对象中就看不到该查询对象
13#
 楼主| 发表于 2013-12-11 16:46:18 | 只看该作者
aslxt 发表于 2013-12-10 23:00
查询不是很复杂的情况,就用代码处理,然后编译。

哦,我说的是能不能彻底隐藏查询。
12#
发表于 2013-12-10 23:00:43 | 只看该作者
查询不是很复杂的情况,就用代码处理,然后编译。
11#
 楼主| 发表于 2013-12-9 09:57:31 | 只看该作者
roych 发表于 2013-12-8 15:24
一般不是用Attribute属性吗?详见http://www.office-cn.net/portal.php?mod=view&aid=233&page=1&记得之前 ...

谢版主,目前,确无必要讨论此问题了。
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就可以找到了。
9#
 楼主| 发表于 2013-12-8 08:43:41 | 只看该作者
netguestcn 发表于 2013-12-7 21:05
Public Function XianShiChaXun()
    On Error GoTo Err_XianShiChaXun
    '========================= ...

谢谢!这个不能彻底隐藏查询的。
8#
发表于 2013-12-7 21:28:24 | 只看该作者
版主说的彻底隐藏,你这个好像不是啊
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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-12 21:42 , Processed in 0.098569 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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