Office中国论坛/Access中国论坛

标题: 如何在主窗体操控子窗体(数据修改和保存) [打印本页]

作者: tz-chf    时间: 2009-2-20 22:35
标题: 如何在主窗体操控子窗体(数据修改和保存)
现用:
Me.配方子窗体.Form.[药品ID] = Me.药品ID
Me.Recalc

窗体会闪,改成如下,一样会闪
Me.配方子窗体.Form.[药品ID] = Me.药品ID
Me.配方子窗体.SetFocus
DoCmd.RunCommand acCmdSaveRecord
Me.剂量.SetFocus

想用子窗体记录集,但无法控制指针,不是溢出就是eof,并不是子窗体记录选择器指向的记录。
作者: Grant    时间: 2009-2-20 23:12
Me.Recalc
替换为
Me.配方子窗体.Requery

但无法控制指针,不是溢出就是eof
这里不太明白,因为没看见实例
作者: tz-chf    时间: 2009-2-20 23:33
本帖最后由 tz-chf 于 2009-2-20 23:35 编辑

requery肯定也会闪(我在其它的软件里用过),我是直接改控件的值,不是改数据源,还没试requery这样能不能行。

指针的事情是:记录选择器指向的一条记录,但引用的子窗体记录集(Dao)的指针好象并不指向这条,eof或溢出,这个我倒有点怀疑,自己再试试。

我无法解决的是:子窗体不必得到焦点,就能保存修改后的数据,使窗体不闪。

顺便问一下,如何用Ado引用子窗体的记录集?
作者: t小宝    时间: 2009-2-21 05:51

Me.配方子窗体.Form.[药品ID] = Me.药品ID
Me.配方子窗体.Requery
是不会闪的,


Me.配方子窗体.Form.[药品ID] = Me.药品ID
Me.配方子窗体.SetFocus
也不应该闪,
闪可能是因为移动焦点的控件开启了输入法.
作者: tz-chf    时间: 2009-2-21 10:48
我说的闪是指子窗体会抖动,有时看不出,有时很明显。试过requery、refresh、recalc、用子窗体记录、移动焦点用docmd保存,都一样会闪。

也和输入法无关。

而且用子窗体记录操作时,addnew完成之后,当前记录的指针就没有了,无法再做其它的操作(如剂量)。
作者: tz-chf    时间: 2009-2-21 12:25
我写了几种方法,测一下子窗体闪的问题。
作者: t小宝    时间: 2009-2-21 14:01
是偶尔有一点点闪,不像老兄说得那么厉害
可能避免不了的吧...
作者: Grant    时间: 2009-2-21 14:22
可以接受了,一点都不闪就不太可能了,重新指定数据源可能会好点
作者: tz-chf    时间: 2009-2-21 16:09
再加两种:重新指定子窗体记录源,调用子窗体过程




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