Office中国论坛/Access中国论坛

标题: 能否把当前数据库的窗体作为另一个数据库窗体的子窗体 [打印本页]

作者: andymark    时间: 2008-1-5 19:43
标题: 能否把当前数据库的窗体作为另一个数据库窗体的子窗体
有A、B两个数据库,A数据库中有C窗体,B数据库里有D窗体(窗体中有子窗体)。B已作为A的引用库。有没有办法实现把A的C窗体作为B的D窗体的子窗体
作者: tmtony    时间: 2008-1-5 20:39
不行, 我也试过很多次,但没有成功, 这也是我一直想解决的问题.
使用MDE可以实现两层或多层引用,是开发大型管理系统比较好的结构方式, 几年前一直用这种方式开发企业家ERP系统. 引用可达到四层, 也可交叉引用, 不仅可解决单个MDE不能超过2G的问题,也便于程序结构化.  但几年的使用过程中,也有不少缺陷. 看到andymark对此也有研究, 也抛砖引玉谈些心得.
1.引用哪个MDB实际上是codeproject 和currentproject的区别, 但在codeproject必须先建立相应的函数 作为中介
2.底层MDE的函数 窗体 报表 模块均可为上层MDE引用,但引用平级必须通过父亲作为中介
3.这种方式一般要求安装目录因定(三级MDE则更是这样),如果需要不定目录的话,则需要修改注册表,让MDE自动找到需要的下级MDE (像早期autoexec.bat中的path参数一样)
4.如果下级MDE一经修改, 必须从下到上全部重新编绎,研究过看是否可跳过这个重新编绎步骤, 使用一些手段来欺骗父级MDE, 但在xp版本以后有时行有时失效.  如果引用层数多,可自己写个程序自动从下到上编绎,否则, 每天编绎都比较烦人(以前要发布一套程序给客户, 全部编绎时间要达到十多分钟左右)
5.底级MDE的窗体绑定的数据源无法来源于 父级MDE(currentproject),除非使用代码更改recordset ,但又对docmd.openform 的where参数有影响.
6.父级可以引用子级,但子级不能再引用父级的同级
7.引用子级的函数,最好不要加上Project的名称,以免绑定死了,但要求子级的函数最好用特殊的命名的方式保证不与父级同名
作者: andymark    时间: 2008-1-5 21:21
谢谢站长的分享, 使我们少走许多弯路
作者: Victor_Duane    时间: 2008-1-5 22:24
谢谢站长的这段经验之谈,收藏之
作者: t小宝    时间: 2008-1-5 23:38
学习......




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