如何在新增记录时保持表单页眉中的ComboBox值恒定
解决Access连续表单页眉ComboBox值切换记录时重置的问题
方法1:通过表单级变量持久化选中值
- 按
Alt+F11打开表单的VBA编辑器,在表单的通用声明区域定义变量(根据课程字段类型选择对应类型):Dim strSelectedCourse As String '文本类型课程用这个 'Dim intSelectedCourse As Integer '数值类型课程用这个 - 给页眉的ComboBox添加
AfterUpdate事件,把选中值存入变量:Private Sub cboCourse_AfterUpdate() strSelectedCourse = Me.cboCourse.Value End Sub - 给表单添加
Current事件,切换记录时把变量值赋值回ComboBox:Private Sub Form_Current() If Not IsNull(strSelectedCourse) Then Me.cboCourse.Value = strSelectedCourse End If End Sub
方法2:使用未绑定控件避免值重置
- 确保页眉的ComboBox是未绑定状态:清空控件的
ControlSource属性。 - 在明细区域添加员工时,直接从页眉ComboBox取值写入明细的课程字段,示例代码(假设明细课程字段为
CourseID,员工字段为EmployeeID):
未绑定控件不关联数据源字段,切换记录时不会自动重置值。Private Sub cboEmployee_AfterUpdate() Me.CourseID = Me.cboCourse.Value Me.EmployeeID = Me.cboEmployee.Value '需要自动新增下一条记录的话加下面这句 DoCmd.GoToRecord , , acNewRec End Sub
方法3:用隐藏控件存储选中值
- 在表单页眉添加一个隐藏文本框(设置
Visible属性为No),命名为txtCourseStorage。 - 给页眉ComboBox的
AfterUpdate事件赋值:Private Sub cboCourse_AfterUpdate() Me.txtCourseStorage.Value = Me.cboCourse.Value End Sub - 在表单的
Current事件里恢复ComboBox的值:Private Sub Form_Current() If Not IsNull(Me.txtCourseStorage.Value) Then Me.cboCourse.Value = Me.txtCourseStorage.Value End If End Sub
内容的提问来源于stack exchange,提问作者Ahsan Uz Zaman
相关产品推荐
相关产品推荐

