Access表单数据插入PKR表异常:仅第一条SQL生效,后两条无数据
问题排查与解决方案
直接说导致后两条插入失败的核心问题,以及修正方法:
1. 语法错误(直接阻断strSQL2执行)
代码里这行明显写错了:
DoCmd.SetWarnings False8
多了个数字8,必须改成DoCmd.SetWarnings False,否则这行代码会报错,后续的strSQL2插入逻辑根本无法执行。
2. 字段完整性缺失(strSQL1/strSQL2插入失败的核心原因)
第一条INSERT语句包含了[Claim Number]字段,说明这个字段是PKR表的必填字段(主键或非空约束),但strSQL1和strSQL2的插入语句完全没包含这个字段,数据库会因为缺少必填字段拒绝插入。又因为你开启了SetWarnings False,所以看不到任何报错提示。
必须给strSQL1和strSQL2补上[Claim Number]字段,和第一条语句一样引用表单里的对应值。
修正后的完整代码
Dim strSQL As String Dim strSQL1 As String Dim strSQL2 As String Private Sub Command208_Click() strSQL = "INSERT INTO PKR([Claim Number],[WANDFNF],[WANDOUP],[WANDEA]) VALUES ([Forms]![Form Level].[Form]![Claim Number],[Forms]![Form Level].[Form]![Wand_cmb1],[Forms]![Form Level].[Form]![Wand_cmb2],[Forms]![Form Level].[Form]![Wand_txt2])" strSQL1 = "INSERT INTO PKR([Claim Number],[TranFNF],[TranOUP],[TranEA]) VALUES ([Forms]![Form Level].[Form]![Claim Number],[Forms]![Form Level].[Form]![Tran_cmb1],[Forms]![Form Level].[Form]![Tran_cmb2],[Forms]![Form Level].[Form]![Tran_txt2])" strSQL2 = "INSERT INTO PKR([Claim Number],[DRFNF],[DROUP],[DREA]) VALUES ([Forms]![Form Level].[Form]![Claim Number],[Forms]![Form Level].[Form]![DR_cmb1],[Forms]![Form Level].[Form]![DR_cmb2],[Forms]![Form Level].[Form]![DR_txt2])" ' 统一关闭警告,执行完成后再开启,减少冗余代码 DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.RunSQL strSQL1 DoCmd.RunSQL strSQL2 DoCmd.SetWarnings True End Sub
额外调试建议
- 调试阶段可以暂时注释掉
DoCmd.SetWarnings False,这样能直接看到数据库返回的报错信息,更快定位问题。
内容的提问来源于stack exchange,提问作者Shubham rawat
相关产品推荐
相关产品推荐

