设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3168|回复: 7
打印 上一主题 下一主题

如何获得ACCESS的子窗体名称

[复制链接]
跳转到指定楼层
1#
发表于 2016-12-26 17:41:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新增一个窗体“窗体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                                  '显示:分期
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2016-12-26 17:43:48 | 只看该作者
实际上,子窗体此时的名称应该是“分期1”,请教如何获得该值
3#
发表于 2016-12-26 17:54:24 | 只看该作者
me.子窗体.name
4#
 楼主| 发表于 2016-12-26 18:14:31 | 只看该作者
me.子窗体.name

问题在于,如何获得这个子窗体的名称
在主窗体的代码:ME.FORM(?).NAME
5#
发表于 2016-12-26 20:32: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
6#
 楼主| 发表于 2016-12-27 09:07:23 | 只看该作者
这种方法是可以获得子窗体当前的名称“分期1”,正如一楼举的例子
但这种方法只能判断在主窗体中是否存在“分期1”的子窗体,而不能在子窗体的程序中如ME.name一样,直接使用
我的看法是,在窗体的属性窗口中,Name与SourceObject是两个不同的属性,并且已经赋予了不同的值,那么在VB编辑器中,是否有相应的属性或语句,能够直接引用
请注意:主窗体当然可以明确使用“分期1”来直接引用子窗体,但是在子窗体中,如何获得当前的名称“分期1”
再请赐教
7#
发表于 2016-12-27 19:08:16 | 只看该作者
子窗体虽然名称上有窗体2个字,但是它不是窗体对象,是一个控件。

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

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

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

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

me.frmChild.Form.Name


8#
 楼主| 发表于 2016-12-31 14:28:39 | 只看该作者
一楼到7楼都说明了从主窗体直接使用子窗名称,来获得两个属性值的方法
虽然都与提出的问题无关,谢谢大家结予意见,但这个问题放过,就此结贴
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-27 10:39 , Processed in 0.085984 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表