Office中国论坛/Access中国论坛

标题: [求助]能否在窗体上连续执行一系列动作 [打印本页]

作者: gdfsslec    时间: 2007-3-16 19:02
标题: [求助]能否在窗体上连续执行一系列动作
我想在窗体A上的a控件更新数据后,自动打开窗体B,让窗体B的b控件的值等于窗体A上的a控件的值,(到此容易实现),接着,执行窗体B的b控件更新数据事件;然后执行窗体B的c控件的点击事件;然后关闭窗体B。

以上动作全部是窗体A上的a控件更新数据事件后的连发动作,能实现吗?

请高手指教!
作者: sybai    时间: 2007-3-16 20:42
使用 CALL语句
作者: gdfsslec    时间: 2007-3-16 20:59
不行的。

因为下一个动作取决于上一个动作的结果,所以必须要结束一个程序,再进行下一个。所以不能放在一个程序之内。
作者: 一点通    时间: 2007-3-16 21:47
这些方法可以在A窗体内完成,为何要用到B窗体呢?
作者: andymark    时间: 2007-3-16 21:52
用TIMER事件辅助,实现分步执行
作者: gdfsslec    时间: 2007-3-16 23:29
谢谢两位大师!

我有一个判断客户超期超额的窗体,现在想在出货窗体上判断客户是否超期超额并提示。由于两个窗体的数据源不同,很难合起来。所以想引用判断客户超期超额的窗体,自动完成判断并提示。

看来没有可以偷懒的办法。先用ANDYMARK大师的方法做做看,不行只能用一点通大师的办法。
作者: fan0217    时间: 2007-3-17 00:37
如果你确实要用到两个窗体,那么在打开B窗体时请使用模式方式打开。
作者: 一点通    时间: 2007-3-17 00:43
只要能找出数据的关键字,不同的数据源也可作出判断的,如果利用另一个窗体来判断,理论上这个窗体叫做冗余窗体
作者: fan0217    时间: 2007-3-17 00:56
为什么我们要设置记录ID呢,在这里就可以得到体现,获取了记录的ID就获得整条记录,很多操作是可以脱离窗体进行的。
作者: gdfsslec    时间: 2007-3-17 01:29
谢谢大师指点!

我的判断客户超期超额的窗体本来是单独使用的,用于查询客户的超期超额情况和明细的,同时也会有提示。

现在我想在打印出库单的时候,当输入了客户名称后,如果客户超期超额,就提示,所以才想直接引用那个窗体,最好在后台运行,这样就不用另外写代码了。

用TIMER的方法我弄了一下,没成。我在判断客户超期超额的窗体里加入

Private Sub Form_Timer()

Me.TimerInterval = 1
Call 客户名称_AfterUpdate
Me.TimerInterval = 1
Call 查询_Click
Me.TimerInterval = 1
Call 退出_Click
Me.TimerInterval = 1
Me.TimerInterval = 0

End Sub

知道不对,但不知道怎么改,请高手指点!




作者: andymark    时间: 2007-3-17 04:19
不能像上面的,这样的代码还不如不用TIMER

   TimerInterval 的开与关须写在各执行事件后,而不是全放在Timer事件中
作者: nxjswt    时间: 2007-3-17 19:03
你可以在这样,在设置一个窗体t和b一样的数据源,然后设置窗体为不显示,再在a中操作t窗体实现对b窗体的数据源的更新和使用!
作者: gdfsslec    时间: 2007-3-17 19:24
可惜程序较大,无法上传。

我尝试如下办法,不行!因为TIMER是在FORM-LOAD里面执行的,但我的窗体要全部加载完才能数据完整,所以后面的动作无效。

Option Compare Database
Dim ce, cq, n

Private Sub Form_Timer()
    If n = 1 Then
        Call 客户名称_AfterUpdate
    End If
    If n = 2 Then
        Call 查询_Click
    End If
    If n = 3 Then
        Call 退出_Click
    End If
End Sub
作者: andymark    时间: 2007-3-17 19:29
在LOAD事件中先关闭time事件 me.TimerInterval=0,在执行某些动作后才打开me.TimerInterval=1

  你可以把例子简化传上来
作者: gdfsslec    时间: 2007-3-19 02:32
在LOAD里面关闭TIMER,FORM_TIMER就不工作了,也就没办法进行下去了。

只能走第二条路,加了一个汇总查询,然后用DLOOKUP解决问题。但是速度略慢,停顿一下而已,还可以接受。

论坛上有提到DLOOKUP会出错[em03]千万不要!否则人家超期200万,我还放货出去,我死定了




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