如何在Access窗体VBA中用Combobox值填充新建记录的客户信息
解决方案
实现逻辑
在用户确认新建客户档案的分支中,通过MandantenSuche的选中值,从Mandantenliste表提取对应客户的编号和名称,自动填充到Abgabe_Unterlagen窗体的空白新建记录中。
修改后的完整代码
Private Sub MandantenSuche_AfterUpdate() ' 查找匹配的记录 Me.Recordset.FindFirst "Mandant_Nummer_F = " & MandantenSuche If Me.Recordset.NoMatch Then MsgBox "Nichts gefunden. Bitte neu eingeben.", vbInformation DoCmd.GoToRecord , , acNewRec DoCmd.GoToControl "Mandant_Name" Else If vbYes = MsgBox("Zusätzl. Akte für Mandant eingeben ?", vbYesNo) Then ' 创建新记录 DoCmd.GoToRecord , , acNewRec ' 从Mandantenliste查询对应客户信息 Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset( _ "SELECT Mandant_Nummer, Mandant_Name FROM Mandantenliste " & _ "WHERE Mandant_Nummer = " & MandantenSuche _ ) ' 填充控件值 If Not rs.EOF Then Me!Mandant_Nummer_F = rs!Mandant_Nummer Me!Mandant_Name = rs!Mandant_Name End If ' 清理资源 rs.Close Set rs = Nothing ' 调整焦点到后续需要编辑的控件 DoCmd.GoToControl "Art_Unterlage" Else ' 打开已有档案,聚焦到类型控件 DoCmd.GoToControl "Art_Unterlage" End If End If End Sub
关键说明
- 字段匹配检查:确认
Mandantenliste表中的Mandant_Nummer(客户编号)、Mandant_Name(客户名称)字段与窗体控件Mandant_Nummer_F、Mandant_Name的名称对应。 - 文本类型适配:如果
Mandant_Nummer是文本字段,需将SQL语句中的条件改为:WHERE Mandant_Nummer = '" & MandantenSuche & "'" - DAO库引用:Access 2007及以上版本默认已引用DAO库,若出现编译错误,需手动添加引用(工具→引用→勾选Microsoft DAO x.x Object Library)。
内容的提问来源于stack exchange,提问作者Banyan
相关产品推荐
相关产品推荐

