设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 9277|回复: 5
打印 上一主题 下一主题

[原创]ADP新手入门交流(6)

[复制链接]
跳转到指定楼层
1#
发表于 2005-11-16 01:21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何获得系统中所有的表,数据库图表,视图,窗体,报表,页,宏,模块的名称?

一、掌握三个基本概念

1.表,数据库图表,视图,窗体,报表,页,宏,模块都是ADP的对象

2.使用CurrentData对象可以获得以下ADP的对象

AllTables           所有表

AllFunctions        所有函数

AllQueries          所有查询

AllViews            所有视图

AllStoredProcedures 所有存储过程

AllDatabaseDiagrams 所有数据库图表

3.使用CurrentProject对象可以获得以下ADP的对象

AllForms            所有窗体

AllReports          所有报表

AllMacros           所有宏

AllModules          所有模块

AllDataAccessPages  所有数据访问页

二、实战

目的:我们要在一个窗体上列出系统中我们自己设计的所有表的名称

步骤:

1、新建一个窗体,在窗体上放一个“列表框”控件,取名为“list1",在列表框的属性--数据--行来源类型中设置为“值列表”

2、在窗体的打开事件中写下如下代码:

Private Sub Form_Load()

For i = 0 To CurrentData.AllTables.Count - 1

TabName = TabName & ";" & CurrentData.AllTables(i).Name

Next

If TabName <> "" Then

Me![list1].RowSource = TabName

End If

End Sub

3.运行窗体看看,所有系统中的表名都列出来了。

我们甚至可以打开这些表。

4.在刚才的窗体上放一个“按钮”控件,取名为“OPEN”

在OPEN的双击事件中写入如下代码:

Private Sub OPEN_Click()

If Me![list1] <> "" Then

DoCmd.OpenTable Me![list1], acViewNormal

Else

MsgBox "没有选取任何对象"

End If

End Sub

在此例中,打开参数acViewNornal表示正常打开浏览,如果换成acEdit,则会在设计视图中打开这个表

5.同样道理,想要获得其他对象的名称只要在窗体打开事件的代码中略作修改就行了

三.实际应用

1.我自己是在做一个权限的时候想用这个的,如果在一个权限设定的窗体中预先列出所有的窗体,但如果后来设计中有增加了窗体,意味着这个权限窗体又要重新设计,很烦,用这个方法,则一劳永逸。

2.如果系统封装了,用这种方法可以为自己留一个后门。

3.还有什么应用?......
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-11-22 16:10:00 | 只看该作者
楼主先生,你的大作真是适合我们新手学习啊。难得你这样的热心人!致敬!
3#
发表于 2005-11-24 15:53:00 | 只看该作者
致敬!
4#
发表于 2005-12-1 21:22:00 | 只看该作者
我在權限窗體中一直沒有好的辦法來調用窗體名稱,我用原來mdb中的調用系統表的方法又不行,現在一看,原來如此,這么簡單,我真是笨啊.

但是,有個問題,如果窗體名稱是英文,在窗體的屬性中(在窗體上單擊右鍵)可以對它進行說明一下.

怎樣把這個說明也調出來呢.因為在allforms(i)的屬性中只有name,fullname屬性,沒有敘述或說明等屬性.這應該是個隱藏屬性,不知道樓主知道不.

5#
发表于 2006-1-26 06:38:00 | 只看该作者
太感激了!
6#
发表于 2013-9-21 19:01:01 | 只看该作者
test
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-1 19:36 , Processed in 0.188870 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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