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

通过表单更新表格:取用表单输入值及另一张表格的关联匹配数据

实现方案

前置校验准备

  • 提前确认Temp_Tbl的Temp字段无重复值,否则匹配逻辑默认返回第一条命中结果,有重复值匹配需求可后续调整逻辑
  • 确认Form1上的输入控件命名和代码对应:示例中序列号输入框命名为txt_Serial、温度输入框命名为txt_Temp、提交按钮命名为btn_Submit,可根据你的实际命名修改代码
  • 确认三个表的字段类型匹配:Serial和表单输入类型一致,Temp字段在Temp_Tbl和Data_Tbl中类型一致,TDS字段在两个表中类型一致

核心VBA代码

代码写入提交按钮的Click事件中,打开表单设计视图,右键点击提交按钮选择「查看代码」即可粘贴:

Private Sub btn_Submit_Click()
    On Error GoTo ErrorHandler
    
    Dim inputSerial As Variant
    Dim inputTemp As Variant
    Dim matchedTDS As Variant
    Dim strSQL As String
    
    ' 校验表单必填项
    inputSerial = Me.txt_Serial.Value
    inputTemp = Me.txt_Temp.Value
    If IsNull(inputSerial) Or IsNull(inputTemp) Then
        MsgBox "序列号和温度为必填项,请填写完整后提交", vbExclamation
        Exit Sub
    End If
    
    ' 匹配预设温度表获取TDS值
    matchedTDS = DLookup("TDS", "Temp_Tbl", "Temp = " & Nz(inputTemp, 0))
    If IsNull(matchedTDS) Then
        MsgBox "输入温度未在预设库中找到匹配记录,请检查输入", vbExclamation
        Exit Sub
    End If
    
    ' 写入目标数据表
    strSQL = "INSERT INTO Data_Tbl (Serial, Temp, TDS) " & _
             "VALUES ('" & Replace(inputSerial, "'", "''") & "', " & inputTemp & ", " & matchedTDS & ")"
    CurrentDb.Execute strSQL, dbFailOnError
    
    ' 提交成功后清空表单
    MsgBox "数据提交成功", vbInformation
    Me.txt_Serial.Value = ""
    Me.txt_Temp.Value = ""
    
ExitSub:
    Exit Sub
ErrorHandler:
    MsgBox "操作出错,错误信息:" & Err.Description, vbCritical
    Resume ExitSub
End Sub

调整说明

  • 如果Serial字段为数值类型,把INSERT语句中Serial对应的单引号删除,修改为VALUES (" & inputSerial & ", " & inputTemp & ", " & matchedTDS & ")"
  • 如果Temp字段为文本类型,修改DLookup的匹配条件为"Temp = '" & Replace(inputTemp, "'", "''") & "'"
  • 代码中的Replace函数用于处理输入内容含单引号的场景,避免SQL语法报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:27:03