我创建了一个表格,允许用户更改密码。
我创建了一个记录集,并使用编辑/更新将其保存在查询中,但是新密码并未保存在查询中。
我的代码如下:
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
答案 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用户。