Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]请教:能否 在 Subform.SourceObject 绑定引用文件的窗体?

litao  发表于:2021-01-27 10:55:30  
复制

请教:能否 在 Subform.SourceObject 绑定引用文件的窗体?

现在有两个窗体,【主窗体】上有一个Subform控件,它的SourceObject 用来绑定子【窗体】。

现在我准备将【子窗体】分离到另一个文件中,这样两个窗体就在不同的MDB文件中了。

主文件已经引用了子文件。打开主文件的主【窗体】,却无法引用子文件中的子【窗体】。

错误提示:找不到子窗体,需要正确的写出名称和路径。

求解决办法? 如何描述其他文件中的窗体?

 

Top
vious 发表于:2021-01-28 08:51:17
猜测不好实现,至少VBE下难。

西出阳关无故人 发表于:2021-01-28 20:01:18
一般来说,可以引用另一个数据库文件的模块里的过程或函数,也可以OpenCurrentDatabase方法打开另一个数据库,并打开其中的窗体,并执行该窗体的某个按钮过程.引用窗体作为子窗体没见过.不知道楼主出于什么样的原因要这样处理?

litao 发表于:2021-02-02 06:43:41

我写得程序感觉太大了(现在已经有50多个功能模块了),每次更新后重新编译保存都需要较长时间,而且VBA经常莫名其妙整个文件被损坏,无法打开。 

希望将不同的功能模块(每个功能模块包括:几个类模块、模块、窗体,用以解决专门的需求),拆分到不同的文件中。

我的程序上一个版本就是利用OpenCurrentDatabase,实现跨程序调用,最后用API将不同的程序中的窗体拼接起来。【http://www.accessoft.com/blog/article-show.asp?userid=37995&Id=16738】

但,实际使用并不好:跨程序调用慢、一些类(ADODB)禁止跨程序调用、自编的类模块拷贝在不同的文件中被视为不同的类。



西出阳关无故人 发表于:2021-02-02 16:07:29

伟哉!

我的不成熟的想法是,做一个类似目录的主数据库,一个公共模块(包含公共模块和类模块)数据库,用户进入主数据库后,根据功能(需求)不同,打开具体的某个功能模块数据库,某个功能模块的数据库引用公共模块数据库.

公共数据库和功能模块都是要从服务器临时copy到用户侧.这样方便升级和减小文件大小.

要不然就用SaveAsText和LoadFromText方法也许可行(http://www.accessoft.com/article-show.asp?id=7414).



litao 发表于:2021-02-02 20:54:46

嗯!

你的想法我尝试过,实际是不可行的。

 一旦程序进行运行,就不允许你对它的代码进行更改,你要添加一个类模块或窗体,会导致这个程序停止运行。

而,在程序运行前就预测出用户要使用那些功能,将相应的代码部件组装好,准备着;这有点搞笑!


我的程序现在就分为:开发状态和工作状态。

有专门的一个小程序负责进行相互转换(人工拷贝模块、窗体太费时间了);

还有一个启动程序,用来检查工作主程序的更新、引用、结构问题,发现问题 对它进行恢复;没问题才启动主程序。



litao 发表于:2021-02-02 21:00:12

ACCESS VBA的运行机制,就不允许一个程序一边运行,一边自己修改自己。


不过,在网页的JavaScript上可以实现,我也尝试过将程序移植到网页上,不过网页版的程序运行效率太低了,处理大数据非常困难,开发难度也比VBA大多了。



总记录:6篇  页次:1/1 9 1 :