通过表单更新表格:取用表单输入值及另一张表格的关联匹配数据
实现方案
前置校验准备
- 提前确认
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
相关产品推荐
相关产品推荐

