Office中国论坛/Access中国论坛

标题: 组合框使用教程(二)----组合框之间的联动 [打印本页]

作者: 一点通    时间: 2007-8-11 10:43
标题: 组合框使用教程(二)----组合框之间的联动
这个是论坛上问得最多的问题, 所以把它放在前面讲, 希望通过本教程能使你学会组合框之间的联动

1. 建立表, 在这不讲术了

2. 创建一个"乡镇村屯窗体", 新建一个就行了,如下图
[attach]25717[/attach]
3. 在窗体中加入三个组合框, 如下图

[attach]25718[/attach]

4. 打开"乡"组合框的属性表, 更改名称, 例如我将它改名为"乡名"
行来源类型设置为:表/查询
点击行来源右边的"..."按钮, 目的设置行来源
[attach]25722[/attach]

5. 加入地址表, 双击乡字段, 这样乡的行来源就设置完毕了
[attach]25719[/attach]

6. 按上面提到的方法设置村组合框的行来源, 在这里要添加二个字段, 一个是村, 另一个是乡, 在准则中写入条件:froms!窗体名!控件名
写入条件的目的是以乡组合框的值进行筛选, 这是关键!!
[attach]25720[/attach]

7. 以上面同样的方法设置屯组合框的行来源, 在这再增加屯字段, 在村字段的准则中再增加准则, 如下图
[attach]25721[/attach]

到止, 三个组合框的设置已经完毕, 但组合框还不可以联动的, 必须在各控件的更新事件写入刷新代码才能联动, 代码在下面讲述

8. 在乡组合框属性中, 点击更新后右边的"..."按钮, 写入事件过程
[attach]25723[/attach]

其更新后事件的代码如下:
Private Sub 乡名_AfterUpdate()  '更新后事件
    Me.村名.Requery  '刷新村组合框的列表数据
    Me.村名 = ""     '清空村组合框,防止数据错乱
    Me.屯名 = ""     '清空屯组合框,防止数据错乱
End Sub

9. 以同样方法打开村组合框更新后事件过程, 写入如下代码
Private Sub 村名_AfterUpdate()
    Me.屯名.Requery  '刷新屯组合框的列表数据
    Me.屯名 = ""     '清空屯组合框,防止数据错乱
End Sub

OK 现在各组合框可以联动了, 回到窗体视图就可以看到效果



以下再说一下组合框中常用的三个技巧

技巧一. 单纯上面的设置, 细心的坛友会发现, 组合框展开的列表中为什么会有很多的重复数据? 如下图
[attach]25726[/attach]

可不可以显示唯一数据呢? 答案是:可以的, 方法如下:
打开行来源设置界面, 如下图, 在空白处右击, 打开一个设置窗体
[attach]25725[/attach]

将唯一值的默认值否改为是, 如下图, 然后关闭
[attach]25727[/attach]

再回到窗体视图, 看看是不是全部的数据变成唯一值了?
[attach]25728[/attach]


技巧二. 可不可以当控件获得焦点时自动打开列表呢? 这样可以实现纯键盘操作, 不用点击箭头, 答案也是可以的

打开控件的属性, 在"获得焦点"的事件过程中写入代码, 代码如下:

Private Sub 乡名_GotFocus()  '获得焦点事件
    Me.乡名.Dropdown  '展开列表数据
End Sub

OK 再回到窗体视图, 是不是获得焦点的控件会自动打开列表? 再按一下键盘的向下键, 是否可以用键盘选择数据?


技巧三.  当组合框输入数据时, 在打开的列表中可否高亮显示对应的数据? 答案同样可以

打开控件的属性, 将"自动展开"设置为:是, 这样在组合框输入数据时, 对应最接近的数据就会高亮显示, 不信的话你自己试下就知了
[attach]25729[/attach]

这一节已讲完, 请学员自己练习一下, 看能不能实现我给你的附件功能, 一定要练习一下噢, 不然不会加深认识的
[attach]25730[/attach]
作者: duomu    时间: 2007-8-11 20:06
我在组合框中绑定了两列,第1列为数据列,也是该组合框的值,第二列为文本列,为显示列,我的目的是通过输入,筛选第二列,来达到最终选取第一列的值到组合框,输入到一个临时表中,但现在的问题,输入后,下拉框内接近的项有时不出现高亮,输入正确的文本值,报错,可能说得不太清楚,具体请看附件,打开‘员工产量输入’窗体

[attach]25737[/attach]

[attach]25738[/attach]
作者: duomu    时间: 2007-8-11 20:08
不好意思,老传不上,却多上传,请站长,删除第一个。
作者: 青苹    时间: 2007-8-13 19:19
谢谢一点通老师,这节教程学习啦。
作者: tmtony    时间: 2007-8-13 21:02
很不错,对网友很有帮助
作者: wang1950317    时间: 2007-8-15 16:28
一点通老师,因您讲义上是列表框,示列中是组合框,我这儿好像使用列表框无法使用获得焦点的代码:“Dropdown ”,是不是列表框为组合框之误?
作者: 一点通    时间: 2007-8-15 16:50
是的, 是笔误, 已改正
作者: qsdys    时间: 2007-8-15 21:17
已经学习过,受益匪浅。谢谢!
作者: fannky    时间: 2007-8-17 16:09
不错不错,润金了
1、之前联动都是写代码,DataSourse赋值,其实可以这样简单的
2、显示唯一值还可以在查询设计视图里使用“汇总——分组”,效果一样
作者: laiguiyou    时间: 2007-8-22 17:12
象一点通老师致敬。讲得很细心。
作者: 归尘    时间: 2007-8-23 10:21
谢谢一点通老师,这是我最需要的,辛苦了.

作者: 归尘    时间: 2007-8-25 08:24
标题: 谢谢一点通!
[attach]25949[/attach]
原帖由 qsdys 于 2007-8-15 21:17 发表
已经学习过,受益匪浅。谢谢!

这是我的作业,
作者: ranor    时间: 2008-8-1 12:22
学习下
作者: hayhay    时间: 2008-8-1 12:52
已经学习过,谢谢!
作者: wjw8216    时间: 2008-8-1 19:56
谢谢!学习了.
作者: gaofei186    时间: 2008-8-1 20:11
向你学习
作者: gaofei186    时间: 2008-8-1 20:14
看一看好了
作者: liyifeikafu    时间: 2008-8-12 11:10
谢谢,学到了很多东西
作者: wqing    时间: 2008-8-22 23:04
不错不错
作者: tytill    时间: 2008-9-2 15:47
收藏,学习了
作者: 0377    时间: 2008-10-30 21:02
good
作者: 0377    时间: 2008-10-30 21:05
老师,解压码是什么啊?下了打不开啊
作者: bctiao    时间: 2008-11-20 23:02
新手报到,学习了。谢谢。
作者: dai1216    时间: 2009-2-24 15:10
不错的教程,这样学起来比较快一点!
作者: ghfmac    时间: 2009-2-24 22:35
!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: mo_on214    时间: 2009-3-5 14:21
老师讲的很好,谢谢!
我自己做出现了一点问题,请老师指点.
两列数据:大类、小类,通过大类筛选小类,这个功能可以实现,但是在出现的小类供选择项中,用鼠标点击,不管选择哪一项,都是第一项的结果。但是键盘输入却可以得到自己想要的选项。请问哪里出错了。
作者: edms    时间: 2009-3-7 10:07
版主的组合框只能输入一次。
比如:窗体中,ID1我输入某某乡某某村某屯后,添加新数据,ID2的时候再输入另一个乡的时候,上面输入的某某乡也会变成后面输入的乡。也就是说如果添加十条数据,则都会变成重复一个乡,重复一个村,重复一个屯。
作者: shangrilar    时间: 2009-3-13 12:52
谢谢分享,学习ing.........................
作者: 阿六爱狗    时间: 2009-3-24 14:02
太有帮助了
作者: 阿六爱狗    时间: 2009-3-24 14:09
感谢共享
作者: 鱼求雨    时间: 2009-3-31 22:45
很牛的东东,谢谢,
作者: 52wish    时间: 2009-4-8 20:41
真的很不错!谢谢拉!
作者: jingyun9999    时间: 2009-4-15 23:14
大家分享谢谢
作者: 鱼求雨    时间: 2009-5-1 22:05
真棒的讲课!!这可需要耐心的,十分感谢老师
作者: lyliyu    时间: 2009-5-9 13:39
我要成为ACCESS高手
作者: huangdexun    时间: 2009-6-4 14:37
老师讲得很简练。只需用SQL查询语句即能实现。
作者: cookyliang    时间: 2009-6-24 14:19
学习了,谢谢!
作者: cookyliang    时间: 2009-6-24 14:35
学到好东西了,谢谢老师
作者: 阿尔法    时间: 2009-7-7 11:23
谢谢,正困惑这个呢。
作者: mztao1993    时间: 2009-7-12 17:20
众人众人
作者: amocvv    时间: 2009-7-14 12:38
学习学习,收藏了
作者: 风啸啸    时间: 2009-7-14 18:18
学习,谢谢。
作者: sailing_han    时间: 2009-7-15 13:25
路漫漫长修远兮,吾将上下而求索
作者: zhangboboz    时间: 2009-7-16 15:51
太感谢啦!!!
作者: allthing    时间: 2009-8-8 06:32
谢谢!!
作者: marcovin    时间: 2009-8-9 13:39
向一点通老师致敬!!!
作者: marcovin    时间: 2009-8-9 13:48
向老师您学习,支持到底!
作者: yzwyp    时间: 2009-8-19 09:32
太好了,最近刚开始学ACCESS ,正卡在列表框上,谢谢谢谢
作者: yzwyp    时间: 2009-8-19 09:35
一点通老师还有其他讲座吗?在哪里能看到?谁能告诉我?谢谢
作者: KYLELWFW    时间: 2009-8-25 23:06
谢谢
作者: tcltyy    时间: 2009-10-14 10:04
好东西啊,感动ing
作者: loginwjd303    时间: 2009-11-25 22:09
感谢各位老师写的教程.
作者: lovelaceliu    时间: 2010-2-2 13:54
持续学习中,谢谢老师
作者: z12509258    时间: 2010-4-1 15:45
受益了 谢谢
作者: z12509258    时间: 2010-4-1 15:46
受益了 谢谢
作者: 小何    时间: 2010-6-17 10:21
已经学习过,受益匪浅。谢谢!
作者: liu.jw    时间: 2011-7-10 04:53
一点通老师讲的非常细致,我这么愚钝的童鞋竟然明白了。哈哈

有一点想再请教下老师,在“屯”组合框“失去焦点”事件命令中怎样写一条命令将“焦点”给窗体,这样在本程序中“焦点”不会在三个组合框中循环了。

交第二讲作业
[attach]46049[/attach]


作者: bzyyt    时间: 2011-9-19 21:31
好东西啊~ 一定好好学
作者: @#Good_boy    时间: 2011-12-20 16:26
完全按照上面做出来的失败,第一级组合框(即乡组合框)内显示的是空白,而村组合框内显示的是乡组合框的内容,求帮助,谢谢!
作者: yzyzyzyzyzyz    时间: 2012-1-28 13:02
新手报道,这个联动和省市县联动一些样吗
作者: 速凯科技    时间: 2012-7-3 14:05
密码
作者: sheep204    时间: 2013-3-31 13:13
实用的技巧,谢谢老师分享.
作者: st1988330    时间: 2013-4-16 14:36
555555  老师我咋就没做出来呢 新手,刚注册此论坛,做的表也发布到上面。大侠帮忙啊!
作者: st1988330    时间: 2013-4-16 14:39
我做的 感觉不对啊,不能更新怎么回事,大侠解救啊
作者: st1988330    时间: 2013-4-16 14:40
还有 老师 这下载需要解压密码,请问是多少啊?
作者: zhaihe001    时间: 2013-8-27 10:16
谢谢,好好学习一下.
作者: 522650696    时间: 2016-4-26 20:02
谢谢一点通老师,这节教程学习啦。
作者: mzmmzg    时间: 2016-8-25 22:37
谢谢一点通老师教程!




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