Office中国论坛/Access中国论坛

标题: 请教循环中打开子窗体问题 [打印本页]

作者: zhuangxiaosong    时间: 2007-8-16 13:44
标题: 请教循环中打开子窗体问题
请教一下达人,
我的程序中有一个主窗体P_Form,P_Form中有一个按钮,当单击这个按钮时,将执行一个循环,在循环中打开子窗体Sub_Form,如:

for i=1 to 5
  DoCmd.OpenForm Sub_Form,, , , , , , i
next


Sub_Form中具有一个列表框控件,它将根据传递的参数i进行从数据库中查询并将结果显示,用户通过选择列表框中的item来对主窗体P_Form中的一个文本框负值

但现在遇到了一个问题,在循环中打开窗体的同时,循环并没有停止,而是一直执行到结束,而我预期的效果是每次循环都可以打开一个可供用户进行交互的窗体。

请问该如何解决这个问题呢?

Bow.

[ 本帖最后由 zhuangxiaosong 于 2007-8-16 15:56 编辑 ]
作者: andymark    时间: 2007-8-16 14:06
上传例子
作者: zhuangxiaosong    时间: 2007-8-16 14:31
麻烦斑竹帮我看一下
作者: zhuangxiaosong    时间: 2007-8-16 15:57
原帖由 andymark 于 2007-8-16 14:06 发表
上传例子


麻烦您帮我看一下
作者: andymark    时间: 2007-8-16 16:08
不是很明白
作者: zhuangxiaosong    时间: 2007-8-16 16:28
原帖由 andymark 于 2007-8-16 16:08 发表
不是很明白

我的这个例子是随便写的,没有什么特殊含义
我想达到的效果就是对于P_Form中的3个textbox,单击“编辑”按钮可以通过一个循环打开Sub_Form,用户通过选择Sub_form中列表框的值来依次对它们进行赋值。也就是每次循环都重新打开Sub_Form(例子中我设定了列表框中的值,实际应用中它的值从数据库中取得,每次打开Sub_Form都是不一样的)
但实际上当i=1的时候,Sub_Form被打开,用户进行操作的同时,程序的循环并没有挂起在此处(我原以为循环会停止在这里,等到关闭Sub_Form后才继续下一次循环)的样子,而是一直在执行,直到循环结束。

不知道我这么说,您是否能明白点。
多谢。

[ 本帖最后由 zhuangxiaosong 于 2007-8-16 16:31 编辑 ]
作者: zhuangxiaosong    时间: 2007-8-16 16:37
也就是只有i=1的时候Sub_Form被打开,之后的循环实际上没有打开Sub_Form的操作(也许是因为窗体还在打开的过程中,所以再次打开窗体的操作没有执行),但我希望的是Sub_Form被打开。

可以在循环中加入sleep、wakeup之类的操作吗?

[ 本帖最后由 zhuangxiaosong 于 2007-8-16 17:27 编辑 ]
作者: zhuangxiaosong    时间: 2007-8-16 17:42
For i = 1 To 3
         DoCmd.OpenForm "Sub_Form"
        MsgBox i
    Next


比如说这个循环,代码中是先打开窗体,再message box,但实际上是所有的3个对话框提示之后,窗体才打开的。
作者: andymark    时间: 2007-8-16 18:20
原帖由 zhuangxiaosong 于 2007-8-16 17:42 发表
For i = 1 To 3
         DoCmd.OpenForm "Sub_Form"
        MsgBox i
    Next


比如说这个循环,代码中是先打开窗体,再message box,但实际上是所有的3个对话框提示之后,窗体才打开的。

没发现你说的情况,一切按先后顺序执行
作者: andymark    时间: 2007-8-16 19:06
同时打开多个同一窗体,需要用到集合
作者: jay_0218    时间: 2007-8-16 21:04
顶一下
窗体打开后,要关闭后在执行

作者: t小宝    时间: 2007-8-16 21:41
把要打开的窗体设为 弹出 模式
作者: zhuangxiaosong    时间: 2007-8-17 09:18
原帖由 andymark 于 2007-8-16 19:06 发表
同时打开多个同一窗体,需要用到集合


就是每次循环打开一遍该子窗体,然后操作完后用Docmd.close关闭子窗体的啊
作者: zhuangxiaosong    时间: 2007-8-17 09:19
原帖由 t小宝 于 2007-8-16 21:41 发表
把要打开的窗体设为 弹出 模式


我的就是设置成了弹出模式的对话框的,可就是不行
作者: zhuangxiaosong    时间: 2007-8-17 09:21
原帖由 jay_0218 于 2007-8-16 21:04 发表
顶一下
窗体打开后,要关闭后在执行


,就是在每次循环中都通过用户单击按钮事件来关闭啊
作者: zhuangxiaosong    时间: 2007-8-17 09:28
原帖由 t小宝 于 2007-8-16 21:41 发表
把要打开的窗体设为 弹出 模式

hi,多谢你!

根据你的提示,我在主窗体打开子窗体的代码参数中,加入了窗体模式就可以了。


DoCmd.OpenForm "Sub_Form", , , , , acDialog
作者: zhuangxiaosong    时间: 2007-8-17 09:41
问题解决了,谢谢各位朋友拉。
作者: jmxilixili    时间: 2007-8-17 11:49
学习,能不能讲明白一点
作者: zhuangxiaosong    时间: 2007-8-17 15:18
原帖由 jmxilixili 于 2007-8-17 11:49 发表
学习,能不能讲明白一点



请看我的这个例子附件




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