模块/类模块
Access多层架构入门一- CurrentProject与CodeProject的区别
2016-12-06 22:00:29

Access多层架构入门一- CurrentProject与CodeProject的区别

当使用Access开发中大型应用系统时,就必须要将一个数据库文件(mdb或accdb)拆开成2层或多层的结构,特别是类似MRP,ERP这种大型的项目,一个数据库文件里的对象和窗体 模块等就可能超1000个,有时会达到几千个甚至 上万,这时,多层架构势在必行。

但要实现多层架构,就必须先了解CurrentProject与CodeProject的区别, 像我们的Access通用开发平台,就是使用2层架构,而我们开发的Access MRP ,Access ERP,就是使用多层架构。

今天我们就来先讲一下多层架构的入门篇

'===============================================================----Access中国-------'-技巧名称:         CurrentProject与CodeProject的区别'-技巧描述:         CurrentProject与CodeProject的区别'-相关引用:         '-使用注意:         '-兼 容 性:         97,2000,XP 2003 compatible'-参考资料:'-作    者:         王宇虹(tmtony)  修改:王宇虹(tmtony)  tmtony@21cn.com'-创建日期:         2004-06-21  更新日期: '-技巧来源:     Access中国/Office中国 bbs.office-cn.net '===================================================================================='Access中国/Office中国版权所有 http://www.office-cn.net 摘录请保留上面版权申明'====================================================================================问题简述:好像CurrentProject与CodeProject的功能很类似, 没有什么区别,那为什么要设置两个对像呢?解决办法:“CurrentProject 对象引用了当前 Microsoft Access 项目(.adp)或 Access 数据库(.mdb)的项目。CurrentProject 对象具有几个集合,其中包含了当前数据库中的特定 AccessObject 对象。”“CodeProject 对象引用一个 Microsoft Access 项目(.adp)或 Access 数据库(.mdb)的代码数据库的项目。CodeProject 对象具有几个集合,其中包含了代码数据库中的特定 AccessObject 对象。”CurrentProject是指当前的数据库或项目,CodeProject则是指当前的代码数据库或项目,是指代码所在的数据库或项目。举个例子:例如两个MDB,tmtony.mdb引用了tmtony1.mdb, 如果tmtony1.mdb有个公共函数FuncTest那么运行tmtony.mdb时, FuncTest的CurrentProject就是tmtony.mdb 而CodeProject就是tmtony1.mdb做了个实例:如果没有引用到,请手工引用运行tmtony.mdb 点击测试即可看到效果专家点评:这种方法能够实现多层MDE引用,大大加强大的应用系统分模块组合开发的情况,可将各个功能分散到各个MDE,然后各个MDE再组合一个更强大的系统,由主程序统一调用.我们现在的ERP系统就是使用这种方法来搭建起来的. v6ot4JLJ.rar (36.59 KB, 下载次数: 8) 

官方的解释

“CurrentProject 对象引用了当前 Microsoft Access 项目(.adp)或 Access 数据库(.mdb)的项目。CurrentProject 对象具有几个集合,其中包含了当前数据库中的特定 AccessObject 对象。”“CodeProject 对象引用一个 Microsoft Access 项目(.adp)或 Access 数据库(.mdb)的代码数据库的项目。CodeProject 对象具有几个集合,其中包含了代码数据库中的特定 AccessObject 对象。”从这两句比较:CurrentProject是指当前数据库或项目,而CodeProject则是指代码数据库代码数据库应是指对数据库进行拆分后包含代码的那一部份。

我们的示例文件解释:

从字面上理解:CurrentProject 应该是指当前工程(最上面一层的工程)CodeProject 应该是指代码工程(即引用的MDE它代码所在的工程)

示例里面包含两个MDB

    

tmtony.mdb引用了tmtony1.mdb, 如果没有引用到,请手工引用运行tmtony.mdb 点击测试即可看到效果

如果1.mdb这个窗体与2.mdb中的窗体不重名的话,可直接使用

docmd.openform "此窗体名"

如果重名的话,需要先在1.mdb建立一个公共函数叫 myOpenform(rstrFormName as string)

内容为  docmd.openform rstrFormName 

然后在2.mdb要打开此窗体,就使用

myOpenform "此窗体名"

这是我研究很久才无意想到的办法,非常管用.

1.mdb中的对象与2.mdb中对象的关系非常有意思,我已经研究了近三年,但发现还有不少功能待发掘,实现出来的效果很有模块化 或类似vfp中的类继承之类的味道.

更专业系统的Access多层架构培训可参看我们Access顶级培训中的内容:

http://www.office-cn.net/t/pro/index.html?accesstop.htm