データベースへのユーザーアクセスを制御するために使用する予定のログインフォームがあります。私はユーザーのパスワード= "パスワード"で初期化し、最初のログイン時にパスワードを変更するようにユーザーに求めます。 ユーザーの資格情報を格納するユーザーテーブルを更新するのが難しいです。アクセスログインフォームパスワードの変更と更新:SQL/VBA
普通のログインVBAがfrm_Loginに関連付けられています。パスワードは、「パスワード」(だけでなく、ユーザの要求の変化を含めるには、この時に拡大する計画)である場合
Option Compare Database
Option Explicit
Private Sub btnLogin_Click()
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("X_tblUsers", dbOpenSnapshot, dbReadOnly)
rs.FindFirst "UserName='" & Me.txtUserName & "'"
If rs.NoMatch Then
Me.lblWrongUser.Visible = True
Me.txtUserName.SetFocus
Exit Sub
End If
Me.lblWrongUser.Visible = False
If rs!Password <> Nz(Me.txtPassword, "") Then
Me.lblWrongPass.Visible = True
Me.txtPassword.SetFocus
Exit Sub
End If
Me.lblWrongPass.Visible = False
TempVars("UserName").Value = Me.txtUserName.Value
If Me.txtPassword = "password" Then
DoCmd.OpenForm "frm_PassChange"
End If
If rs!UserType = 3 Then
Dim prop As Property
On Error GoTo SetProperty
Set prop = CurrentDb.CreateProperty("AllowBypassKey", dbBoolean, False)
CurrentDb.Properties.Append prop
SetProperty:
If MsgBox("Turn on Bypass key?", vbYesNo, "Allow Bypass") = vbYes Then
CurrentDb.Properties("AllowByPassKey") = True
Else
CurrentDb.Properties("AllowByPassKey") = False
End If
End If
Me.Visible = False
Globals.Logging "Logon"
DoCmd.OpenForm "frm_Main"
End Sub
フォームfrm_PassChangeが起動します。この形式では、私は、ユーザーが確認のために新しいパスワードの2倍を入力し、新しいパスワードを使用してUSERTABLEを更新する必要がありますが、これは動作していない:
Private Sub btnChangePass_Click()
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("X_tblUsers")
If Me.txtNewPass <> Me.txtNPConfirm Then
Me.lblPassMismatch.Visible = True
Me.txtNewPass.SetFocus
Exit Sub
End If
Me.lblPassMismatch.Visible = False
TempVars("Password").Value = Me.txtNewPass.Value
CurrentDb.Execute "Update X_tblUsers SET X_tblUsers.Password = Value(" & Me.txtNewPass.Value & ")"
Me.Visible = False
Globals.Logging "PWChange"
End Sub
私はきちんとUSERTABLE更新を実行するにはどうすればよいですか?それにはいくつかの問題があります
に関係なく、それらのどれもシフトキーをバイパスできないようにする必要があります:) :)それらに制御されたアクセス権をフルアクセスで与えないでください! –