Office中国论坛/Access中国论坛

标题: [原创]ADP新手入门交流(6) [打印本页]

作者: eddieliu    时间: 2005-11-16 01:21
标题: [原创]ADP新手入门交流(6)
如何获得系统中所有的表,数据库图表,视图,窗体,报表,页,宏,模块的名称?

一、掌握三个基本概念

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.还有什么应用?......
作者: julycy    时间: 2005-11-22 16:10
楼主先生,你的大作真是适合我们新手学习啊。难得你这样的热心人!致敬!
作者: hyxwd    时间: 2005-11-24 15:53
致敬!
作者: ADAM    时间: 2005-12-1 21:22
我在權限窗體中一直沒有好的辦法來調用窗體名稱,我用原來mdb中的調用系統表的方法又不行,現在一看,原來如此,這么簡單,我真是笨啊.

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

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


作者: qlm    时间: 2006-1-26 06:38
太感激了!
作者: cnwang    时间: 2013-9-21 19:01
test




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3