- ベストアンサー
Accessフォームでのパスワード設定
お世話になります。 Accessで、あるフォームから管理者専用フォームへのリンクするボタンを作ろうと思っています。 イメージは、ボタンを押した時にパスワードを入力するInputBoxを出し、予め設定された 正しいパスワードが入力されたら管理画面フォームを表示。間違っていたら、パスワードが 違う旨を伝えるメッセージを表示するといった感じにしたいのですが、この様なフォームを 作成するにはどのようなVBAを記述したら宜しいでしょうか。 どなた様か良い方法をご存知の方がいらっしゃいましたらご指導をお願い致します。 (初心者のため出来るだけ詳しく教えて頂けたら幸いです)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
パスワードを記述するテキストボックスの定型入力にパスワードを設定します。このようにすることで入力データが****で表示されます。IMEモードをオフにします。 パスワードを入力するテキストボックスの更新後処理イベントにプロシージャを記述します。 記述の順序は・・ 定数でパスワードを設定します。 Setステートメントで変数にオブジェクトを代入します。 Ifステートメントでパスワードのチェックを行います。 パスワードを入力するフォーム名をpass_フォーム パスワードを入力するフィールド名をtextPassとすると Private Sub txtPass_AfterUpdate() Dim TextBoxA As TextBox Const CountPass = "1234" '定数でパスワードを設定。仮に1234とした場合 Set TextBoxA = Me.textPass 'Setステートメントで変数にオブジェクトを代入。 'Ifステートメントでパスワードのチェックをして合致する場合は管理画面フォームを開きpass_フォームを閉じる。合致しなければメッセージを出しpass_フォームを閉じる。 If TextBoxA = CountPass Then DoCmd.OpenForm "管理画面フォーム" DoCmd.Close , "pass_フォーム" Else MsgBox "パスワードが異なります。", vbOKOnly + vbCritical DoCmd.Close , "pass_フォーム" End If End Sub こんな感じです。
その他の回答 (1)
- mshr1962
- ベストアンサー率39% (7417/18945)
パスワードが****で表示でなくて良いならですが... PASSの所を実際のパスワードにしてください。 Private Sub コマンド0_Click() On Error GoTo Err_コマンド0_Click Dim stDocName As String Dim stLinkCriteria As String Dim PWord As String Input_コマンド0_Click: PWord = InputBox("パスワードを入力してください。", "管理者専用フォーム", "", 1, 1) If PWord = "PASS" Then stDocName = "管理者専用フォーム" DoCmd.OpenForm stDocName, , , stLinkCriteria Else If MsgBox("パスワードが違います。", vbOKCancel, "管理者専用フォーム") = vbOK Then GoTo Input_コマンド0_Click End If Exit_コマンド0_Click: Exit Sub Err_コマンド0_Click: MsgBox Err.Description Resume Exit_コマンド0_Click End Sub
お礼
ありがとうございます。 早速作成してみたのですが、やはりパスワード入力時に 入力文字が見えてしまうと情報漏洩の恐れがあるため アスタリスクで表示される方法を選びたいと思います。 しかし、この様な方法もあるのだと勉強になりました。 ありがとうございました。
お礼
ありがとうございます。 教えて頂きましたソースを早速入力しフォームを作成してみました。 結果、希望通りの動作を作成できて満足しております。 しかし、正しいパスワードを入力後、エンターを押すと 「管理画面フォーム」が開くのですが、自動で「pass_フォーム」が閉じてくれません。 パスワード不一致時も同じく自動では閉じませんでした。 ソース中の注釈文から自動で閉じてくれるのかなと 思ったのですが、これで正常な動作なのでしょうか?
補足
お世話になります。 先ほどのpass_フォームが自動で閉じない質問の件ですが パスワード一致時: DoCmd.Close DoCmd.OpenForm "管理画面フォーム" パスワード不一致時: MsgBox "パスワードが違います", vbOKOnly + vbCritical DoCmd.Close とすることで解決出来ました。 お騒がせして申し訳ございません。 この度はお忙しい中ご対応頂き誠にありがとうございました。