【Access源码示例】用组合框来进行限制选择\四级组合框联动-风水师
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 源码示例


【Access源码示例】用组合框来进行限制选择\四级组合框联动

发表时间:2009/6/10 21:07:41 评论(10) 浏览(19510)  评论 | 加入收藏 | 复制
   
摘 要:用组合框来进行限制选择。
正 文:

      组合框的限制选择心得

示   例:

点击下载此附件


演   示:


1程序的功能:
选择上一级之后呢,才能进行下一级的选择。你只有首先选择大洲之后,国家被激活,才能选择国家,选择国家之后,省被激活,才能选择省;选择省之后,市组合框被激活,才能选择市;选择市之后,县组合框被激活,你才能选择县。它们是依次被激活的。不能越级选择。
重新选择之后呢,隔代组合框全部失灵,变成灰色。比如说,你选择大洲之后,焦点自动在国家这一组合框上,其余的全部变为灰色。全部失灵。
窗体名称:用组合框来限制选择.

2先说一下表的制作及各表之间的关系。
这里要建立五张表.分别是大洲,国家,省,市,县.这五个表的关系犹如祖父-父-己-儿-孙,它们之间的关系是隶属关系.
大洲的字段如下:
大洲ID,自动编号;
大洲名称,文本.
这是第一个表,也是最上一层的表,不妨把它称为祖父表.祖父表只有两项内容。
除了祖父一级以外的,其它的表都要三个字段。详细说明如下:
国家表的字段如下:
国家ID,自动编号
国家名称,文本
大洲ID,数字
省表的字段如下:
省ID,自动编号
省,文本
国家ID,数字
市表的字段如下:
市ID,自动编号
市,文本
省ID,数字
县表的字段如下:
县ID,自动编号
县,文本
市ID,数字
几个表之间的特点如下:
除了祖父表以外,具体来说,也就是大洲这个表,其余的表,每个表的字段都是:
本地ID,本地名称,父地ID(父地ID的意思是上一级的ID),它们都通过父地ID来连接的。来表示隶属的。

3.窗体的组合框
五个组合框,
第一个名称大洲,控件名:CmbZhou
第二个名称国家,控件名:CmbCountry
第三个名称省,控件名:CmbProvince
第四个名称市,控件名:CmbCity
第五个名称县,控件名:CmbCounty

程序代码如下:

Option Compare Database

Private Sub CmdClear_Click()
Me.CmbZhou = Null
Me.CmbCountry = Null
Me.CmbProvince = Null
Me.CmbCity = Null
Me.CmbCounty = Null
Me.CmbZhou.SetFocus
Me.CmbCity.Enabled = False
Me.CmbCountry.Enabled = False
Me.CmbCounty.Enabled = False
Me.CmbProvince.Enabled = False

End Sub

Private Sub Form_Current()
Me.CmbZhou = Null
Me.CmbCountry = Null
Me.CmbProvince = Null
Me.CmbCity = Null
Me.CmbCounty = Null
Me.CmbZhou.SetFocus
End Sub

Private Sub CmbZhou_AfterUpdate()
Me.CmbCountry.RowSource = "select 国家.国家ID,国家.国家名称" _
& " from 国家 " _
& " where 国家.大洲ID=" & Me.CmbZhou
Me.CmbCountry.Enabled = True
Me.CmbCountry.SetFocus

Me.CmbCountry = Null
Me.CmbProvince = Null
Me.CmbCity = Null
Me.CmbCounty = Null

Me.CmbProvince.Enabled = False
Me.CmbCity.Enabled = False
Me.CmbCounty.Enabled = False
End Sub

Private Sub CmbCountry_AfterUpdate()
Me.CmbProvince.Enabled = True
Me.CmbProvince.SetFocus
Me.CmbProvince.RowSource = "select 省.省ID,省.省" _
& " from 省" _
& " where 省.国家ID=" & Me.CmbCountry

Me.CmbProvince = Null
Me.CmbCity = Null
Me.CmbCounty = Null
Me.CmbProvince.SetFocus

Me.CmbCity.Enabled = False
Me.CmbCounty.Enabled = False
End Sub

Private Sub CmbProvince_AfterUpdate()
Me.CmbCity.Enabled = True
Me.CmbCity.SetFocus
Me.CmbCity.RowSource = "select 市.市ID,市.市" _
& " from 市 " _
& " where 市.省ID=" & Me.CmbProvince
Me.CmbCity = Null
Me.CmbCounty = Null

Me.CmbCounty.Enabled = False
End Sub

Private Sub CmbCity_AfterUpdate()
Me.CmbCounty.Enabled = True
Me.CmbCounty.SetFocus
Me.CmbCounty.RowSource = "select 县.县ID,县.县" _
& " from 县" _
& " where 县.市ID=" & Me.CmbCity
Me.CmbCounty = Null
End Sub


Private Sub Form_Load()
Me.CmbCity.Enabled = False
Me.CmbCountry.Enabled = False
Me.CmbCounty.Enabled = False
Me.CmbProvince.Enabled = False
End Sub

4.行来源的设置
以国家这一组合框为例:
Me.CmbCountry.RowSource = "select 国家.国家ID,国家.国家名称" _
& " from 国家 " _
& " where 国家.大洲ID=" & Me.CmbZhou
特别要注意的是:" from 国家 ",from 与前面的引号中间有空格,如果没有空格的话,就会出错。
" where 国家.大洲ID=" & Me.CmbZhou,where与引号之间也有空格。不这样处理,程序铁定会出错。
两种处理办法,第一种是" from 国家 "这一句呢,from与前一引号有空格,国家与后面的引号也有空格,下面的条件语句where中间空不空,就无所谓。
第二种是" from 国家",from与前一引号有空格,国家后面不要有空格。下面的条件语句呢,where与前面的引号有空格,这样就不会引起麻烦。
“where 国家.大洲ID=" & Me.CmbZhou,这一句其实就是把某表中的某一字段与窗体的组合框对应起来。
你选大洲ID,窗体就要选择CmbZhou(大洲组合框)
你选国家ID,窗体就要选择CmbCountry(国家组合框)
你选省ID,窗体就要选择CmbProvince(国家组合框)
你选市ID,窗体就要选择CmbCity(市组合框)
你选县ID,窗体就要选择CmbCounty(县组合框)
刚学的,中间也走了许多弯路,得到麦子和其他人的指点,才写出来的,这里一并表示感激。


Access软件网交流QQ群(群号:198465573)
 
 相关文章
如何选择省份即可选择相对应的城市示例\城市对应省份示例\二级联动\...  【竹笛  2007/5/21】
[示例]分三级显示组合框联动  【trynew  2008/9/22】
Access中组合框使用详解及教程(含列表框示例)\Access组...  【UMVsoft整理  2009/3/3】
【Access源码示例】根据组合框自动填写与之相关联的数据|Acc...  【麥田  2009/7/24】
【access入门】文本框自动获取列表框里面指定列的数据,自动填充...  【麥田  2011/8/23】
【access入门】文本框自动获取组合框里面指定列的数据,自动填充...  【麥田  2011/9/14】
组合框\列表框五级联动示例,省市县区街道联动示例  【心蓝  2012/5/8】
常见问答
技术分类
相关资源
文章搜索
关于作者

风水师

文章分类

文章存档

友情链接