记录集未更新

时间:2018-11-14 10:16:45

标签: ms-access-2013

我创建了一个表格,允许用户更改密码。

我创建了一个记录集,并使用编辑/更新将其保存在查询中,但是新密码并未保存在查询中。

我的代码如下:

Private Sub txtNewPass2_AfterUpdate()

Dim db As DAO.Database
Dim rst As DAO.Recordset

Set db = CurrentDb
Set rst = db.OpenRecordset("qryUsers", dbOpenDynaset)

    If Me.txtNewPass1 = Me.txtNewPass2 Then

        rst.MoveFirst
        Do Until rst.EOF
        If rst!NName = CboUserName.Column(0) Then
        rst.Edit
        rst!Password = txtNewPass2.Value
        rst.Update
        End If
        rst.MoveNext
        Loop

    DoCmd.Openform("frmLogin")

    Else: MsgBox "Passwords not Matching"

    End If
End Sub

1 个答案:

答案 0 :(得分:0)

表达式:

DoCmd.Openform("frmLogin")

将导致语法错误,因为当不使用函数返回的值时,不需要在参数周围加上括号。


但是,您可能会发现,只需执行一条SQL语句来执行更新,而不是遍历记录集,即:

Private Sub txtNewPass2_AfterUpdate()
    If txtNewPass1 = txtNewPass2 Then
        With CurrentDb.CreateQueryDef("", "UPDATE qryUsers SET qryUsers.Password = ?pwd WHERE qryUsers.NName = ?usr")
            .Parameters(0) = txtNewPass2
            .Parameters(1) = CboUserName.Column(0)
            .Execute
        End With
        DoCmd.Openform "frmLogin"
    Else
        MsgBox "Passwords not Matching"
    End If
End Sub

当然使用参数来说明更广为人知的Bobby Tables用户。