Office中国论坛/Access中国论坛

标题: 读写整合后窗体的内容 [打印本页]

作者: 小小白菜    时间: 2018-11-1 09:33
标题: 读写整合后窗体的内容
    最近在用做一个小东东。即把所有窗体都在主界面的窗体控件中显示出来,不再像传统的独立显示,给人感觉窗体很乱。昨天在测试新功能时突遇一bug,即主窗体上不通读写其窗体控件所显示窗体的控件,怎么样,很绕吧。
    一般显示其他窗体指定控件内容时用“forms!窗体名!控件名”即可,而在此案中该方法无效,然后就电话骚扰王站了,通过他的指导此bug修复到了正常状态。
    最后再描述一下前后写法对比:
                                                   原写法: forms!窗体名!窗体控件名!要显示的窗体名!控件名----->报错
                                                   新写法: forms!窗体名!窗体控件名.form.控件名----->正确
    因为通过窗体的SourceObject控制显示其他窗体时是以子窗体形式完成的,所以要显示的窗体此时充当了子窗体的角色,而在类似这种用法时子窗体名是不会出现的,所以用"forms!窗体名!窗体控件名!要显示的窗体名!控件名"会报错。

[groupid=322]ACC应用开发心得交流[/groupid]
作者: admin    时间: 2018-11-1 10:35
附:在Access主窗体上读写Access子窗体对象
http://www.office-cn.net/book/childform/168.html
作者: tmtony    时间: 2018-11-1 10:42
好示例,赞一下!
作者: roych    时间: 2018-11-1 14:32
白菜的理解有所偏颇。非要用叹号表达式也不是不可以的。由于内置的是child控件,因此是不可以直接这样写(如果不是child控件,而是普通窗体,倒是没问题的):
forms!窗体名!窗体控件名!要显示的窗体名!控件名
child控件不能视为窗体,而是视为控件。因此一旦需要读取child控件绑定的某个控件的值,就需要使用form(即返回到父级),再进行引用。即:
forms!窗体名!窗体控件名!form!要显示的窗体名!控件名
附上相应代码和附件
  1. Private Sub Command0_Click()
  2. Me.Form!Main_fm.SourceObject = "frm_f1"
  3. 'Me.Main_fm.SourceObject = "frm_f1"
  4. End Sub

  5. Private Sub Command1_Click()
  6. Me.Form!Main_fm.SourceObject = "frm_f2"
  7. 'Me.Main_fm.SourceObject = "frm_f2"
  8. End Sub

  9. Private Sub Command11_Click()

  10. MsgBox Forms!frm_Main!Main_fm.Form!Text7
  11. 'MsgBox Me.Main_fm.Form.Text7
  12. End Sub
复制代码

[attach]62920[/attach]
作者: GOODWIN    时间: 2021-10-13 16:05
学习




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