• ベストアンサー

Access2000でパスワードの入力

Access2000でパスワードを入力するフォームを作りました。 パスワードを入力して、"OK"ボタンを押す画面なのですが、 正しいパスワードを入れて"OK"を押せば、そのフォームは閉じて、 間違ったパスワードを入れた場合には、メッセージボックスを出したい と思っています。 マクロかコードの記述が必要だと思いますが、どのような記述にすれば よろしいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは。 そのフォームのパスワードを入力するテキストボックスを”txtパスワード”、 OKボタンを”cmdOK”として、 ”cmdOK”のクリック時のイベントで次のようにコードを記述するのはどうでしょうか?(ほんとのパスワードはコードの中に入れてある例です。テーブルで持つ方法もありますが、割愛しました。) Private Sub cmdOK_Click() Dim パスワード As String Dim Response パスワード = "password" If Me.txtパスワード <> パスワード Then   Response = MsgBox("パスワードが違います。", vbCritical)   Me.txtパスワード.SetFocus Else   DoCmd.Close End If End Sub ほんとのパスワードは上記passwordを修正してください。 ご参考になれば幸いです。m(__)m

その他の回答 (1)

noname#102878
noname#102878
回答No.2

ユーザーが入力したパスワードを比較するパスワードはどこに入っているのですか? 以下は「tbl01Users」テーブルの「m01UName」フィールドにユーザー名、「m01Passwd」フィールドにパスワードが格納されているケースです。 「frm01Login」フォームの「txtUName」にユーザー名、「txtPasswd」にパスワードを入力して「cmdOK」ボタンを押すと認証チェックします。 もちろんこのフォームは「非連結」です。 認証が成功すれば「frm02Menu」フォームを表示し、ログオン用フォームは非表示にします。(アンロードしてもかまいません) Private Sub cmdOK_Click() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strUName As String ' ユーザー名格納用 Dim strPasswd As String ' パスワード格納用 Dim strSQL As String Dim blnErr As Boolean ' ログオン失敗フラグ ' ユーザー名入力チェック If (IsNull(txtUName.Value)) Or (txtUName = "") Then MsgBox "ユーザー名を入力してください" blnErr = True Else strUName = txtUName.Value blnErr = False End If ' パスワード入力チェック If (IsNull(txtPasswd.Value)) Or (txtPasswd = "") Then MsgBox "パスワードを入力してください" blnErr = True Else strPasswd = txtPasswd.Value blnErr = False End If ' 入力エラーなら抜ける If blnErr = True Then Exit Sub End If ' ユーザー検索 strSQL = "SELECT m01UName, m01Passwd FROM tbl01Users " & _ "WHERE (m01UName = '" & strUName & "') AND (m01Passwd = '" & strPasswd & "');" Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset rs.Open strSQL, cn, adOpenStatic If (rs.BOF = True) Or (rs.EOF = True) Then ' 認証NG MsgBox "ユーザー名またはパスワードが間違っています" blnErr = True Else ' 認証OK blnErr = False End If rs.Close Set rs = Nothing cn.Close Set cn = Nothing ' 認証が成功したらfrm02Menuを表示してログインフォームを非表示にする If blnErr = False Then DoCmd.OpenForm "frm02Menu" Me.Visible = False End If End Sub ここでは省略しちゃってますが、ユーザー名やパスワードにシングルクォーテーション「'」が入力された場合、「'」一つにつき「''」というようにもう一つ増やしてあげないとエラーになってしまいます。 私の場合はtbl01Userテーブルにm01Authフィールドを作り、そこにユーザー権限も記録しておくので、認証成功したらログイン中のユーザー名と権限名をパブリック変数に格納しておき、その後のフォームの端っこなどにユーザー名を表示したり、権限に応じてメニューフォーム上のボタンを有効にしたり無効にしたりしてます。