MS Access:在VBA/SQL的INSERT/SELECT语句中用变量赋值
解决方法
直接修改SQL语句的SELECT部分,将原本从源表获取的tbl_BOM_Requirments.ID替换为变量JbNum,同时修正字符串拼接的引号问题,去掉无效的赋值语句。修改后的完整代码如下:
Dim db As DAO.Database Dim strSQL As String Dim PrtNbrGt As String Dim JbNum As String JbNum = Me.[tblManufactured.Job Number] PrtNbrGt = Me.SCSPartNumb Set db = CurrentDb strSQL = "INSERT INTO tblMaterialRequiremnt ( [Customer Part Number], [Job Number] ) " & vbCrLf & _ "SELECT tbl_BOM_Requirments.RequiredMaterialPrtNum, '" & Replace(JbNum, "'", "''") & "' " & vbCrLf & _ "FROM tbl_BOM_Requirments " & vbCrLf & _ "WHERE tbl_BOM_Requirments.PrtNmber_LinkField = '" & Replace(PrtNbrGt, "'", "''") & "'" db.Execute strSQL, dbFailOnError
关键修改说明
- 替换Job Number的取值来源:将
SELECT语句中的tbl_BOM_Requirments.ID替换为'" & Replace(JbNum, "'", "''") & "',把窗体中获取的JbNum值作为固定值插入目标表的[Job Number]字段。Replace函数用于处理变量中包含单引号的情况,避免SQL语法错误。 - 修正WHERE子句的引号:原代码WHERE部分引号拼接错误,改为用单引号包裹字符串变量,同样通过
Replace处理特殊字符。 - 移除无效代码:删除
[Job Number] = JbNum这行无效赋值语句,它无法影响SQL执行结果。 - 添加错误处理:
db.Execute后加上dbFailOnError参数,便于捕获执行过程中的SQL错误,方便调试。
内容的提问来源于stack exchange,提问作者sambob_628
相关产品推荐
相关产品推荐

