设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] [求助]:关于子窗体的引用问题!

[复制链接]
跳转到指定楼层
1#
发表于 2006-1-19 17:54:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做了个自用的合同管理软件!

通过合同窗体(frmcontact)进入供应商信息窗口,

在供应商信息资料的窗体(frmcompany)中,有二个子窗体,都在page联系人中。

其中一个联系人子窗体(frmcompany_linkman)是链接子窗体,链接字段是供应商ID

另一个子窗体(frmcompany_contact)是未链接子窗体。我希望通过联系人子窗体选择的联系人显示相应的联系方式。

所以在frmcompany_linkman的current事件中设定me.parent.frmcompany_contact.form.recordsource=……(见附件代码),可是每次运行都出现“您输入的表达式对属性FORM无效”的提示,不知道是什么原因。

希望高手帮忙找找原因!谢谢

(其实我已经通过列表框解决了这个问题,我认为可能是对象的指定出了问题,因为列表框无法增加修改,所以我还是希望用子窗体,现在我很郁闷,希望大家来帮忙)


[此贴子已经被作者于2006-1-19 10:20:17编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-1-19 21:02:00 | 只看该作者
用frmcompany_linkman的current事件不行,我是这样做的(不知道如何上传附件,说说我的方法吧)

设置frmcompany_contact记录源为tblcontactinfo,添加好所有控件,窗体格式设为数据表。frmcompany_linkman窗体删除frmcompany_linkman的current事件,在联系人id或联系人姓名文本框的鼠标单击事件中加以下代码

    Me.Parent.frmcompany_contact.Form.Filter = "[联系人ID]='" & Me.联系人ID & "'"
    Me.Parent.frmcompany_contact.Form.FilterOn = True

查看时单击该文本框筛选frmcompany_contact记录集可以达到要求。同样的代码放在current事件中就出错,不知为何。
3#
发表于 2006-1-19 21:12:00 | 只看该作者
用current事件只是在打开窗体时出错,打开后就可以正常运行代码。不用上面的方法,只是在current中加上错误处理也可以。只是第一次打开是没有筛选,更上面的方法相比好处是点任意字段都会筛选,而不是某一特定字段。

Private Sub Form_Current()
On Error GoTo 100
Me.Parent.frmcompany_contact.Form.Filter = "[联系人ID]='" & Me.联系人ID & "'"
Me.Parent.frmcompany_contact.Form.FilterOn = True
Exit Sub
100 Exit Sub
End Sub
4#
 楼主| 发表于 2006-1-19 21:30:00 | 只看该作者
谢谢zcy老兄!真没想到是CURRENT事件的问题,我还一直以为是对象引用的问题。

我也试验了一下,用RECORDSOURCE在CLICK事件中就一切OK,真是不明白啊。

另外,我总觉得把事件设在某个文本框的鼠标单击事件中有些麻烦,因为不光是姓名被点中,子窗体要刷新,其它所有的比如部门,职务被点中都应该刷新。这是不是有什么事件可以全部包括?

我自己找了一下,什么FORM_CLICK,主体_CLICK等等,都不行。zcy老兄,你有什么高招吗?望不吝赐教!
5#
 楼主| 发表于 2006-1-19 22:00:00 | 只看该作者
出了错,我还真没再去试用,没想到并不影响功能的试用。用ON ERROR GOT 果然就OK了。呵呵,今天收获了一个重要的经验,估计以后还能用上。

另外,zcy老兄,我想和你进一步探讨一下,这样frmcompany_contact可以正常出现对应的记录了,但是如果我想增加一个功能就是可以添加相应的记录,比如给张三再加一种联系方式,可以直接在frmcompany_contact中添加。目前因为我们做的只是筛选,添加的记录建立不了联系,可不可以用JION语句或是什么别的方式实现这个功能呢?
6#
发表于 2006-1-20 03:10:00 | 只看该作者
添加联系方式按键代码:
Private Sub cmdaddcontact_Click()
    DoCmd.OpenForm "frmcompany_contact", , , , , , Me.frmcompany_linkman.Form.联系人ID'用 openargs 记录  联系人id 字段的值
End Sub
在窗体 frmcompany_contact中添加如下代码
Private Sub Form_Load()'这里可以用msgbox函数询问用户是否确定要添加,否则打开窗体就产生了一条新纪录
    If IsNull(Me.OpenArgs) = fasle Then
        DoCmd.GoToRecord , , acNewRec'默认添加新纪录
        Me.联系人ID = Me.OpenArgs'自动输入 联系人id
   End If
End Sub


Private Sub Form_Close()
    If IsNull(Me.OpenArgs) = fasle Then
DoCmd.RunCommand acCmdSave
       Forms![frmcompany]![frmcompany_contact].Requery'重新查询frmcompany中的contact子窗体
    End If
End Sub

最好把表 tblcontactinfo 中的 contacttype 查阅 由列表框改为 组合框 在frmcompany中 把该字段代表的控件删掉在重新添加一次
我发现是列表框式有时该字段添加不上而且用列表框太受限制,如果要添加 家庭电话 就没有办法加上去。
7#
 楼主| 发表于 2006-1-20 04:33:00 | 只看该作者
呵呵。谢谢ZCY老兄。你说的和我目前做的一样。我目前是用列表框显示联系方式,另外用命令按钮通过OPENARGS参数打开新窗体输入新的联系方式。

我一直在研究:怎么只用上面的二个子窗体,就可以实现查看、修改、添加的功能。现在虽然没有达到我的目的,不过,我已经又学到一些了。

谢谢。多交流才能进步啊!

我的QQ:4423370,希望有机会能多联系。
8#
发表于 2006-1-20 05:44:00 | 只看该作者
多交流才能进步啊!我也有同感!我的qq 63181450。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 03:16 , Processed in 0.109149 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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