Office中国论坛/Access中国论坛

标题: 每周一题(5)---窗体与窗体之间传递参数的方法 [打印本页]

作者: tmtony    时间: 2002-4-12 02:20
标题: 每周一题(5)---窗体与窗体之间传递参数的方法
窗体与窗体之间传递参数的方法
在ACCESS编程中,经常会需要将一个参数传递给新打开的窗体,然后又结果返回给原来的窗体,诸如此类,都属于参数的传递。
请大家讨论参数传递的各种方法及最佳方法



[此贴子已经被tmtony于2002-4-11 18:19:35编辑过]


作者: martin    时间: 2002-4-12 02:44
可以在新建模块中的声明段内定义一个全局变量,如PUBLIC 变量名 AS 变量类型,这还是版主教我的,我是现炒现卖,新鲜热辣
作者: huanghai    时间: 2002-4-12 02:45
传统方法:目标窗体LOAD事件:目标控件=[forms]![源窗体名].[源控件]
          目标窗体UNLOAD事件:源控件=[forms]![目标窗体名].[目标控件]
作者: tmtony    时间: 2002-4-12 03:27
我有時使用窗體的tag
但有時不太管用
作者: yqq    时间: 2002-4-12 06:11
结果返回给原来的窗体是何意思,是不是把新打开的窗体在关闭掉,在打开原窗体,请说明。
作者: tmtony    时间: 2002-4-12 06:36
是這樣
打個比方, 你打開一個窗體a 來輸入員工資料,需要輸入日期,  這時你可以需要打開一個窗體b 來選擇日期(窗體a 未關閉,還保留打開) , 當你選擇好日期 確定后需返回選擇的日期給窗體a


作者: yang7512    时间: 2002-4-12 16:27
这个是不同窗体之间焦点转换问题,问一下,在窗体a输入员工资料和日期,是否要把参数加入到相应表中或打开相应窗体等.
作者: tmtony    时间: 2002-4-12 16:35
我一般是把参数放到全局变量,再打开相应窗体,然后把结果返回给全局变量
作者: cnwang    时间: 2002-4-12 17:21
我一般是用HUANGHAI兄的"传统"办法,避免变量设定太多搞乱了。
作者: tmtony    时间: 2002-4-12 17:32
说得对
不过,我现在只定义两个全局变量
一个文本型
一个数字型
各窗体通用

作者: jacky    时间: 2002-4-12 21:02
赞成tmtony的方法!
作者: 大熊    时间: 2002-4-14 06:46
HUANGHAI版主和TONY站长的办法都很好,只是TAG我觉得一般不用的好。
作者: binbow_z    时间: 2002-4-14 19:58
TAG太难,一看头晕
作者: tmtony    时间: 2002-4-14 20:05
不太难
docmd.openform "弹出窗体",,,,,me.tag
然后在弹出窗体中可获得参数
me.openargs

作者: andy    时间: 2002-5-23 02:22
用docmd.openform ,,,openargs.
openargs传递参数
作者: yuanhai    时间: 2002-5-29 16:32
用传统方法基本可以搞定,不过如果要传递的参数太多的话容易出现问题。
作者: HG    时间: 2002-6-7 01:51
此貼的各位讀者,可否
看過論壇上有一篇標題為:
如何打開子窗體,定位記當,傳遞參數的問題。
哪是一篇有關傳遞參數的高級高題實戰。
作者:HG
-------------------------------------
作者: binbow_z    时间: 2002-6-15 03:17
标题: 我的几个问题
以下是引用tmtony在2002-4-11 22:36:00的发言:
是這樣
打個比方, 你打開一個窗體a 來輸入員工資料,需要輸入日期,  這時你可以需要打開一個窗體b 來選擇日期(窗體a 未關閉,還保留打開) , 當你選擇好日期 確定后需返回選擇的日期給窗體a 


第一,在窗体A中自定义一全局变量DATE,一个文本框TXT,TXT的值=DATE,在窗体B中选择的日期(将日期赋给DATE,选择之后B自动关闭)不能传给窗体A中的TXT,
第二,用将要传的值赋给注册表,但总是出现的是上一次选择的值
第三,设置一个模块定义公用变量DATE,打开窗体A,再打开窗体B,同样也是出现的上一次选择的值
作者: ganrong    时间: 2002-6-15 03:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: binbow_z    时间: 2002-6-15 03:25
全局变量放在模块sub returnvalue()中的上面的声明语句中,但奇怪的是返回的是上一次调用的值
作者: ganrong    时间: 2002-6-15 03:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: binbow_z    时间: 2002-6-15 03:33
golbal和public 是一样的
作者: ganrong    时间: 2002-6-15 04:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: binbow_z    时间: 2002-6-15 07:29
在定义时生效
作者: 月下狼    时间: 2003-8-29 01:03
有没有tag的相关资料.
作者: eio    时间: 2003-8-29 02:14
我觉得无需TAg,因为从来没有用过,关于版主所言,吾以为可以实现。
   
   实例:双击A窗的供应商组合框,弹出一个列表窗B,双击B的列表之记录:“EIO爱欧电子”,此时B窗关闭,A窗体的供应商组合框显示“EIO爱欧电子”?
   思路:双击文本框,先传递该窗体的名称到B窗的控件上,然后双击列表事件写入:A=B
作者: goodidea    时间: 2003-8-29 20:37
我曾经是这样解决传回参数的。
http://www.officefans.net/cdb/viewthread.php?tid=7546&highlight=%2B%2Bgoodidea
作者: 月下狼    时间: 2003-9-12 19:30
高手!谢谢你提供例子

作者: ietey    时间: 2003-10-21 22:25
可是高手,你让我们下载看才好吗?因为他说我的级别不够。真是欲闷。
公开来吧!
作者: yrg    时间: 2003-11-19 04:11
我也遇到过此问题,我的方法是:
   设一全局变量intB=B.选择的值
  然后用Sendkeys或当前获得焦点的控件A.TXT=INTB
作者: 大頭    时间: 2003-11-19 09:17
終於
有人討論這個問題了
http://www.erpbus.net/access/topic.asp?topic_id=10019&forum_id=84&CurPage=2

作者: 李啸林    时间: 2004-3-18 05:41
我没有固定的方法。
不过通常是以下三种
  1、使用全局变量。
     实现方法:使用一个autoexec宏打开一窗体并隐藏起来,所有的全局变量都放在此窗体中。
  2、直接向打开窗体的文本框控件写数据。
  3、使用OpenArgs。这里我编写一个函数来,对参数进行编码与解码,使得OpenArgs可以传递多个参数。

   我最常用的还是第2种方法,虽然不怎么正规,但很方便。
作者: caibbs    时间: 2004-4-8 01:02
真是这样




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