以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]请问如何取得从窗口Form输入的值? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=9374) |
-- 作者:成都老王 -- 发布时间:2011/4/2 22:20:00 -- [求助]请问如何取得从窗口Form输入的值? 问题场景:
有一个产品信息表"产品信息表",包含:产品编码,产品名称/规格型号等信息,数据量非常多. 在其它表中使用产品信息时,为避免数据冗余,都只引用了"产品编码"这一个信息. (在多个表中都有这个需求,为此设计一个公用的窗体.)为方便操作者录入"产品编码",打算设计一个窗体Form(包含"产品信息表"Table"),以便让其选择某个产品. 这样的话,就需要首先定义一个"自定义函数"SelectProduct,在该函数中打开窗体,并让操作者选择产品信息.
问题是:窗体一旦关闭,就无法从Forms("选择产品").Controls("TableProduct")中获取Current信息,也就无法得到"产品编码"列的值.
请帮忙指点一下,谢谢. |
-- 作者:成都老王 -- 发布时间:2011/4/2 22:23:00 -- 补充:在帮助文件中的窗体使用范例里面,是在窗体关闭Close之前,在窗体的事件中,直接操作数据表格修改了其中的信息. 达不到我的需求(按范例的方式,我得为每个使用选择产品操作的表格设计功能完全相同的多个窗体). 也不符合编程的模式.相当于在一个额外的子程序中,操作了宿主的数据.这样的程序内部关联太多,不便于调试. |
-- 作者:狐狸爸爸 -- 发布时间:2011/4/2 22:24:00 -- 你可以在窗口的BeforeClose事件中取得值,保存在一个全局变量中,关于全局变量,请您参考: http://help.foxtable.com/topics/1841.htm
|
-- 作者:成都老王 -- 发布时间:2011/4/2 22:27:00 -- 版主: 能不能不采用全局变量的方式传递信息? 全局变量有好处,但按这样的方式做的话,估计我这个项目中使用的全局变量数目不可容忍. (而且以前的编程经历也使得我很久不习惯全局变量的方式了,抱歉) 希望能有更好的方式. |
-- 作者:成都老王 -- 发布时间:2011/4/2 22:31:00 -- 我正尝试用狐表设计一个生产管理系统. 涉及: 层次式的机构设置 角色配置 自定义的权限控制 物料编码 产品物料清单管理BOM 生产计划的下达,分解,过程监控 等等.
考虑分布式应用.(因试用版,暂时还未测试狐表在网络部署时的性能,这方面也希望版主能提供一些指导).
谢谢 |
-- 作者:狐狸爸爸 -- 发布时间:2011/4/2 22:32:00 -- 呵呵,窗口关闭了是肯定不能取值了,这是显然的 如果不用全局变量,就只能就在BeforeClose事件中将值写入到应该写入的行。 |
-- 作者:狐狸爸爸 -- 发布时间:2011/4/2 22:34:00 -- 应该不需要设计多个相同的窗体的,你做个简单的例子传,具体说明你卡在哪里,我帮你看看有没有简洁的办法。 |
-- 作者:成都老王 -- 发布时间:2011/4/3 1:18:00 -- 已测试过. 虽然窗体Form属于某个表格,但在自定义函数中 或者在其它表格中,还是可以通过Forms("窗口名")来引用某个其它表格内的窗体的.
但是,没有合适的办法从Form中回传数据. |
-- 作者:狐狸爸爸 -- 发布时间:2011/4/3 8:38:00 -- 一般说来,都是在窗口的按钮事件,关闭前事件使用数据,很少需要关闭后使用的。 你要在窗口关闭后不使用中间途径传递数据是无解的,窗口既然关闭,就不复存在,从哪里取数据呢? 所以必须保存在一个变量中,这不存在变量过多的问题,设计程序使用部分全局变量也正常啊。
|
-- 作者:程兴刚 -- 发布时间:2011/4/3 8:40:00 -- 关闭窗口前,通过代码将这些值Current信息写入到指定的位置(比如采用一个专用的数据存取表、或者写入项目信息)。 |