Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 源码示例

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

时 间:2009-06-10 21:07:41
作 者:华尔街风水师   ID:4073  城市:温州
摘 要:用组合框来进行限制选择。
正 文:

      组合框的限制选择心得

示   例:

点击下载此附件


演   示:


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交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助