You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access VBA需求:为Abgabe_Unterlagen表单添加记录新建/覆盖选项及客户名填充

Access表单VBA代码修改:实现客户名自动填充与记录选择功能

以下是修改后的完整VBA代码,可同时实现你要求的两项功能:

Private Sub MandantenSuche_AfterUpdate()
    ' 查找匹配的客户记录
    Me.Recordset.FindFirst "Mandant_Nummer_F = " & Me.MandantenSuche
    
    If Me.Recordset.NoMatch Then
        MsgBox "未找到对应客户,请重新输入。", vbInformation
        DoCmd.GoToRecord , , acNewRec
        ' 自动填充客户名(假设组合框第1列为客户名称,列索引从0开始)
        Me.Mandant_Name = Me.MandantenSuche.Column(1)
        DoCmd.GoToControl "Mandant_Name"
    Else
        ' 弹出Yes/No选择对话框
        Dim userChoice As Integer
        userChoice = MsgBox("已找到该客户记录。是否查看并编辑现有记录?" & vbCrLf & "选择[是]编辑现有记录,[否]创建新记录。", vbYesNo + vbQuestion, "客户记录已存在")
        
        If userChoice = vbYes Then
            ' 停留在找到的现有记录,允许编辑覆盖
            DoCmd.GoToControl "Mandant_Name"
        Else
            ' 创建新记录并自动填充客户名
            DoCmd.GoToRecord , , acNewRec
            Me.Mandant_Name = Me.MandantenSuche.Column(1)
            DoCmd.GoToControl "Mandant_Name"
        End If
    End If
End Sub

Private Sub MandantenSuche_Enter()
    Me.MandantenSuche = Me.Mandant_Nummer
End Sub

功能实现说明

  • 功能a:自动填充客户名
    假设你的组合框MandantenSuche数据源包含两列:第0列是Mandant_Nummer_F(客户编号),第1列是Mandant_Name(客户名称)。代码通过Me.MandantenSuche.Column(1)直接获取选中项对应的客户名称,赋值给表单的Mandant_Name字段完成自动填充。若组合框列顺序不同,调整Column()中的索引值即可。

  • 功能b:记录选择对话框
    找到客户现有记录时,弹出带Yes/No选项的对话框:

    • 选是(Yes):表单定位到现有记录,可直接编辑覆盖内容;
    • 选否(No):自动创建新记录并填充客户名,方便录入新的借出记录。

注意事项

确保组合框MandantenSuche的列计数设置正确(至少包含客户编号和名称两列),且Column Heads属性设为No,否则列索引会偏移。

内容的提问来源于stack exchange,提问作者Banyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 02:56:23