Office中国论坛/Access中国论坛

标题: 如何获得ACCESS的子窗体名称 [打印本页]

作者: 望储公    时间: 2016-12-26 17:41
标题: 如何获得ACCESS的子窗体名称
新增一个窗体“窗体1”,添加一个名称为“分期”的窗本作为子窗体,其属性SourceObject与Name均为"分期"。
更改子窗体”分期“的Name="分期1",在VB编辑器中,窗体”分期“的模块中输入以下代码:
WITH FORMS("窗体1")
    MSGBOX .FORM("分期1”).NAME                      '显示:分期1
    MSGBOX .FORM("分期1").FORM.NAME             '显示:分期
END WITH

我的目的是要获得此共用子窗体的名称来区分,但是输入以下代码
MSGBOX ME.NAME                                           '显示:分期
MSGBOX ME.FORM.NAME                                  '显示:分期
作者: 望储公    时间: 2016-12-26 17:43
实际上,子窗体此时的名称应该是“分期1”,请教如何获得该值
作者: roych    时间: 2016-12-26 17:54
me.子窗体.name
作者: 望储公    时间: 2016-12-26 18:14
me.子窗体.name

问题在于,如何获得这个子窗体的名称
在主窗体的代码:ME.FORM(?).NAME
作者: Henry D. Sy    时间: 2016-12-26 20:32
望储公 发表于 2016-12-26 18:14
me.子窗体.name

问题在于,如何获得这个子窗体的名称

子窗体与子窗体源对象是两个概念
你可以试试
Dim ctl As Control
    For Each ctl In Me.Controls
        If TypeOf ctl Is SubForm Then
          MsgBox ctl.Name & "  " & ctl.SourceObject
        End If
    Next
作者: 望储公    时间: 2016-12-27 09:07
这种方法是可以获得子窗体当前的名称“分期1”,正如一楼举的例子
但这种方法只能判断在主窗体中是否存在“分期1”的子窗体,而不能在子窗体的程序中如ME.name一样,直接使用
我的看法是,在窗体的属性窗口中,Name与SourceObject是两个不同的属性,并且已经赋予了不同的值,那么在VB编辑器中,是否有相应的属性或语句,能够直接引用
请注意:主窗体当然可以明确使用“分期1”来直接引用子窗体,但是在子窗体中,如何获得当前的名称“分期1”
再请赐教
作者: ly    时间: 2016-12-27 19:08
子窗体虽然名称上有窗体2个字,但是它不是窗体对象,是一个控件。

在这个控件中嵌入了一个窗体,注意,是控件中嵌入的窗体。

但是,我们习惯上把这个嵌入的窗体称为子窗体

所以,要从主窗体中获知这个子窗体的名称,必须要引用子窗体这个控件。

太绕口了.....直接代码,为了说明问题我们把子窗体控件命名为frmChild

me.frmChild.Form.Name



作者: 望储公    时间: 2016-12-31 14:28
一楼到7楼都说明了从主窗体直接使用子窗名称,来获得两个属性值的方法
虽然都与提出的问题无关,谢谢大家结予意见,但这个问题放过,就此结贴




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