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

使用CurrentDb.Execute strSQL无法将新用户输入更新到数据表

问题解决步骤

1. 修复SQL语句的语法错误

你的UPDATE语句存在两个致命语法问题:

  • UPDATE中多个字段更新只需要写一次SET,字段之间用逗号分隔即可,你重复写了两次SET,直接导致SQL执行失败。
  • 字符串拼接的引号逻辑混乱:布尔型字段pupreq不需要加引号,密码字段的引号嵌套也出现了多余层级。

修正后的SQL拼接代码:

strSQL = "UPDATE users " & _
    "SET password = '" & PWord1 & "', " & _
    "pupreq = False " & _
    "WHERE Username = '" & TempVars("UserNameTemp") & "'"

注:strRST=0可以直接换成False,Access中布尔型字段存储值为-1(True)和0(False),写False更直观易懂。

2. 调整验证逻辑的顺序

你当前是先拼接SQL再做密码验证,属于无效操作。正确逻辑应该是先完成所有验证步骤,确认无误后再拼接SQL并执行:

Private Sub UpDate_Click()
    Dim strSQL As String
    
    '设置焦点
    PWord2.SetFocus
    
    '若PWord1为空的处理
    If IsNull(PWord1) Then 
        MsgBox "PassWord 1 Missing"
        Exit Sub
    End If
    
    '若PWord2为空的处理
    If IsNull(PWord2) Then 
        MsgBox "PassWord 2 Missing"
        Exit Sub
    End If
    
    '若PWord1与PWord2不匹配的处理
    If PWord1 <> PWord2 Then 
        MsgBox "PassWords do not Match"
        Exit Sub
    End If
    
    '验证通过后拼接SQL
    strSQL = "UPDATE users " & _
        "SET password = '" & PWord1 & "', " & _
        "pupreq = False " & _
        "WHERE Username = '" & TempVars("UserNameTemp") & "'"
    
    '执行更新时建议加上dbFailOnError参数,方便捕获执行错误
    CurrentDb.Execute strSQL, dbFailOnError

    '跳转到登录界面
    DoCmd.OpenForm "LogOnScreen"
            
    '关闭当前更新密码窗口
    Me.Visible = False
End Sub

3. 额外优化建议(避免SQL注入)

直接拼接用户输入的字符串到SQL中存在SQL注入风险,新手可以逐步学习使用参数化查询,既安全又不用纠结引号嵌套问题:

Private Sub UpDate_Click()
    Dim qd As QueryDef
    Dim strSQL As String
    
    '验证步骤同上,省略...
    
    '参数化SQL模板
    strSQL = "UPDATE users SET password = [@NewPwd], pupreq = False WHERE Username = [@UserName]"
    
    Set qd = CurrentDb.CreateQueryDef("", strSQL)
    '给参数赋值
    qd.Parameters("@NewPwd") = PWord1
    qd.Parameters("@UserName") = TempVars("UserNameTemp")
    '执行更新
    qd.Execute dbFailOnError
    
    Set qd = Nothing
    
    '后续界面跳转代码同上
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:14:52