Access:如何将搜索窗体列表框值填充到另一窗体的ComboBox
Access窗体组合框赋值问题解决办法
错误原因
你原代码的问题出在窗体引用方式错误:Me.Form!formAcademyRegister!EmployeeCode这种写法是错误的,Me代表当前的formsEmployeeSearch窗体,无法通过当前窗体的Form属性去引用另一个独立打开的窗体。正确的引用方式是使用Access全局的Forms集合来定位目标窗体。
正确代码实现
基础版代码
直接修正窗体引用,确保formAcademyRegister处于打开状态,然后给组合框赋值:
Private Sub butUpdateEmployeeID_Click() ' 将列表框选中的EmployeeID赋值给目标窗体的组合框 Forms!formAcademyRegister!EmployeeCode = Me!lstEmpSearchResult.Value ' 关闭当前搜索窗体 DoCmd.Close acForm, Me.Name End Sub
更稳妥的写法(指定列索引)
如果担心列表框的绑定列设置变化,可以直接指定EmployeeID所在的列(列表框列索引从0开始,假设EmployeeID是列表框的第一列,对应索引0):
Private Sub butUpdateEmployeeID_Click() Forms!formAcademyRegister!EmployeeCode = Me!lstEmpSearchResult.Column(0) DoCmd.Close acForm, Me.Name End Sub
带错误检查的版本
如果需要避免因目标窗体未打开导致的报错,可以增加窗体加载状态检查:
Private Sub butUpdateEmployeeID_Click() ' 检查目标窗体是否已打开 If SysCmd(acSysCmdGetObjectState, acForm, "formAcademyRegister") <> 0 Then Forms!formAcademyRegister!EmployeeCode = Me!lstEmpSearchResult.Column(0) End If DoCmd.Close acForm, Me.Name End Sub
关键注意事项
- 确保
formAcademyRegister在点击按钮时处于打开状态,否则代码会报错。 - 组合框
EmployeeCode的绑定列必须对应EmployeeID(即组合框的"绑定列"属性设置为对应EmployeeID的列索引),否则赋值后可能显示异常。
内容的提问来源于stack exchange,提问作者gdekoker
相关产品推荐
相关产品推荐

