好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

ACCESS中组合框使用详解.doc

7页
  • 卖家[上传人]:飞***
  • 文档编号:28262860
  • 上传时间:2018-01-16
  • 文档格式:DOC
  • 文档大小:94KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1ACCESS 中组合框使用详解在 ACCESS 中,组合框最主要的应用在于减少用户输入数据的操作,直接用鼠标选取数据而不需要手工输入,如右图所示一.组合框的行来源类型分为三种:表/查询;值列表;字段列表表/查询——顾名思义,组合框的列表来源于表或者查询中的记录,用于显示比较多的列有时候也可以是一句合法的SQL 语句(实际就是查询) ,这在动态修改组合框显示的值时很有用值列表——应用于可选项比较少,且内容固定的场合比如输入“男/女” 、 “是/否” 、 “党员/团员/民主党派/群众”等这时需要在行来源中直接输入内容,如下图各个字符串要用“;”(英文分号)隔开字段列表——列出行来源中的表或查询中所有字段的名称比较少用二.组合框控件的常用属性限于列表——在组合框上的文本框部分能否输入不在列表中的其他值如上图所示的文本框,由于限于列表属性为“是” ,你只能选择“党员/团员/民主党派/群众”其中之一如果是“否” ,你可以手工在文本框中输入“外籍人员”等2绑定列——当组合框的数据源不是只有一列数据时需要确定绑定列绑定列在数据库中经常使用,比如常用的人事管理系统中有以下两个表:职称 ID 职称1 助理工程师2 工程师3 高级工程师4 助理经济师5 经济师…… ……员工 ID 姓名 性别 部门 职务 职称 ID ……1101054 胡 男 生产调度室 4 ……1101055 杨 男 副总工 2 ……1201006 温 男 综合办公室 副主任 1 ………… …… …… …… …… …… ……当你要在窗体上输入职称字段时,你需要看见的是具体的职称名,而数据表中实际存放的是职称 ID 的数字,这时就需要使用绑定列为 1(第一列) 。

      如同例子程序中的“组合框 1”窗体所示列数——要显示几列通常行来源中有几列就写几列列标题——是否显示每个列的标题见下图对比: 有列标题 无列标题列宽——当有多列时指定每列的宽度方便显示更多数据,且在有绑定数字的列时更容易让用户看明白列宽输入时直接输入数字,不用输入单位(在 ACCESS 简体中文版中默认单位是厘米) ,各列宽数字间用“; ”(英文分号)隔开把数字列的列宽设为 0,可以使数字列不显示出来,对比效果如下页图:3注:数据表中实际存放的还是职称 ID(长整型数) 列表行数——在鼠标按下箭头时显示几行列表默认是 8,为了多显示几行可以改大一些列表宽度——默认是“自动” ,就是列表部分和上边的文本框一样宽当列比较多时可以改大一些如下图(组合框 2 窗体中员工姓名):限于列表——是或者否若选“是”指文本框部分的内容只能在下面的列表中选择,不能出现列表内容之外的东东如果手工输入了列表内容之外的东东,就会触发“不在列表框”事件并出现提示若选“否”则可以手工在文本框部分输入任意内容注意:当选择多列数据作为组合框来源时,限于列表自动设置为“是” ,且不可更改。

      4三.组合框编程1.为其他文本框赋值如例子程序中组合框窗体 3 中的船名英文组合框在组合框中选择了船名英文之后,自动把船名中文和国际中英文字段填写这是在组合框“船名英文”的“更新后事件”中编写如下代码实现的:Private Sub 船名英文_AfterUpdate()Me.船名中文 = Me.船名英文.Column(1)Me.国籍中英文 = Me.船名英文.Column(2)End Sub其中 Me.船名英文.Column(1)是指组合框被选中的那行数据中第 2 列的值注意:在使用 Column(i)时,第 1 列 i=0这与绑定列中第 1 列绑定列=1不同2.自动伸展在“组合框 1”窗体中输入新记录时,当用 TAB 键将光标移动到“职称”输入字段时,下拉列表自动伸展,不需要用鼠标按下拉箭头,方便输入这是在组合框“职称 ID”的“获得焦点事件”中编写如下代码实现的:Private Sub 职称 ID_GotFocus()If Me.NewRecord Then Me.职称 ID.DropdownEnd Sub5Me.NewRecord 是当窗体输入新记录时为真Dropdown 就是组合框自动伸展的方法。

      3.自动更新组合框列表内容在“组合框 4”窗体的“州省”字段的组合框,会根据所选择的国家不同而出现不同的列表内容这是在“州省”字段组合框的“获得焦点”事件编写如下代码实现的:Private Sub 州省 ID_GotFocus()'根据选择的国家显示州省'RowSource 就是行来源'因为 “Me.国家 ID”的值是数字,所以要用 STR 函数转换为字符串才能运算Me.州省 ID.RowSource = "SELECT 州省 ID, 州省 FROM Tab 州省 WHERE (国家 ID=" + Str(Me.国家 ID) + ")"End Sub初学者经常会问, “为什么不写成"SELECT 州省 ID, 州省 FROM Tab 州省 WHERE (国家 ID= Me.国家 ID)"这样的形式?”其实在这样的 SQL 语句中, “Me.国家 ID”并不会被程序认为是一个代表值的变量,而是作为字符串处理这时的 SQL 语句实际上是错误的你可以在 End Sub 之前加一句 MsgBox Me.州省 ID.RowSource 来显示实际的 SQL语句如果碰到需要的变量是字符串类型,需要在字符串两端用“’” (英文单引号)来说明,例如(在 VBA 中" & Me.Text1 & " = " + Me.Text1 + "):strSQL = "DELETE * FROM 员工 WHERE (员工 ID= '" & Me.Text1 & "')"如果是日期型的变量,需要在在字符串两端用“#” (英文井号)来说明,例如:strSQL = "DELETE * FROM 员工 WHERE (出生日期<= #" & Me.Text1 & "#)"小技巧:怎样编写 SQL 语句?其实都是在数据库中新建查询设计视图,选择需要的表和字段,写好条件之后转到 SQL 视图(如下图) ,把其中的SQL 语句经过处理变成我们需要的形式。

      6在“组合框 4”窗体的“城市”字段的组合框里也有代码,请大家自己查看另外假如你新加入一个广西桂林的人,你会发现当你翻回到广东的联系人时,他们的城市都不显示了这是由于你修改了组合框的数据源后,广东的城市名已经不在列表中,而“限于列表”是“真”所以无法显示你需要在“组合框 4”窗体的“成为当前”事件中加入如下代码来修正:Private Sub Form_Current()'还原州省 ID 和城市 ID 组合框的行来源Me.州省 ID.RowSource = "tab 州省"Me.州省 ID.RequeryMe.城市 ID.RowSource = "Tab 城市"Me.城市 ID.RequeryEnd Sub4.处理不在列表框事件以“组合框 4”窗体为例,如果你想输入“陕西”省(我的出生地) ,会出现提示如下:如果你确实需要让用户选择是否把新输入的值写入数据表中,你可以在“州省 ID”组合框的“不在列表中”事件里加入以下代码:Private Sub 州省 ID_NotInList(NewData As String, Response As Integer)Dim intSelect As Integer, strSQL As String'用户选择是否把新值加入列表intSelect = MsgBox("你是否希望把“" + NewData + "”加入列表中?", vbYesNo + vbQuestion, "提示 ")If intSelect = vbYes ThenDoCmd.SetWarnings FalsestrSQL = "INSERT INTO [Tab 州省](州省,国家 ID) VALUES('" + NewData + "'," + Str(Me.7国家 ID) + ")"DoCmd.RunSQL strSQLResponse = acDataErrAddedDoCmd.SetWarnings TrueElseResponse = acDataErrContinueMe.州省 ID.UndoEnd IfEnd Sub其中:MsgBox 在单独作为语句使用时,不需要括号。

      当作为函数使用时必须要加括号,函数返回你在MsgBox 窗体上按下的键(vbOK/vbCancel/vbYes/vbNo 等) vbYesNo + vbQuestion 意思是在MsgBox 窗体上有“是” “否”两个按键,并有一个问号标志,详细说明请看 VBA 帮助DoCmd.SetWarnings False 是为了关闭系统在运行操作查询前的确认提示DoCmd.SetWarnings True 则是打开运行操作查询前的确认提示INSERT INTO … 是追加查询 SQL 语句,详细说明请看 VBA 帮助NotInList(NewData As String, Response As Integer)的详细说明可以在 VBA 帮助中搜索 NotInList后找到这段程序在询问用户是否要把不在列表内的数据加到数据表里,如果用户选“是” ,就根据当前窗体上的输入字符串和当前国家 ID 的值用追加查询在表“Tab 州省”中加入一条记录因为表“Tab 州省”中的 “州省 ID”字段是自动编号字段,不许手工或用程序修改的,所以追加查询时只加入两个字段, “州省 ID”会自动生成其他“国家 ID”和“城市 ID”组合框的“不在列表中”事件,初学者可自己练习编写。

      完整的代码可以参考“组合框 5”窗体中的代码部分。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.