以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]请问如何取得从窗口Form输入的值?  (http://foxtable.net/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信息写入到指定的位置(比如采用一个专用的数据存取表、或者写入项目信息)。