プロが教えるわが家の防犯対策術!

ご教示のほどお願いします。
Accessで文書を管理するアプリケーションを作っておりますが、起動時の設定でデータベースウィンドウを非表示にしております。
管理フォームをつくり、データベースウィンドウを表示させるボタンを設置して、「F11」キー送信によってデータベースウィンドウを表示させるようにしておりますが、データベースウィンドウを表示させる際に、パスワード入力するように設定し、OKならデータベースウィンドウを開き、パスワードが間違っていたら、アプリケーションを終了させるようにしたいのですが、どのようにしたら良いかわかりません。

できれば具体的なやり方、コードなども教えていただけたら幸いです。

よろしくお願いします。

A 回答 (3件)

恐らく、データベースの管理者以外のユーザーにはデータベースウィンドウを


表示できないようにした、ということだと思いますが、だとしたらF11キーなどの
ショートカットキーは、むしろ無効化させておいた方がよいかと思います。
(別のショートカットキーを経由するなどして、データベースウィンドウを表示
 させることができてしまうためです)
※データベースウィンドウの表示は、VBAなら「DoCmd.SelectObject」で、
 マクロなら「オブジェクトの選択」で、それぞれ対応できます。
 (それぞれ、3番目の引数に「True/はい」を指定することで可能)


パスワードの入力要求はInputBoxでも可能ですが、パスワード入力らしく
「***」といった表示にさせたい場合は、フォームで自作することになります。

1)新規フォームをデザインビューで開く(テーブルやクエリは指定しません)
2)テキストボックスを追加し、プロパティシートの『その他』タブで、『名前』に
 「パスワード」と指定
3)上記テキストボックスのプロパティシートで、今度は『データ』タブを選択し、
 『定型入力』の欄に「パスワード」と入力
 (パスワード入力時に「***」と表示させるため)
4)コマンドボタンを2つ追加し、一方の名前を「認証」、もう一方を「取消」と
 指定
5)「認証」ボタンのプロパティシートで『イベント』タブを選択し、『クリック時』に
 カーソルを移動したときに右端に表示される『...』(ビルダ)ボタンをクリック
6)『ビルダの選択』ダイアログが表示されたら、「コード ビルダ」をダブルクリック
 (Accessの設定によっては、直接以下のVBE画面が表示されます)
7)VBE(=Visual Basic Editor)の画面が表示され、「Private Sub ~~」と
 いう文字が自動入力されるので、そこを以下のように編集(下記のコピー
 &ペーストでOk):

Private Sub 認証_Click()
'エラー発生時には「エラー処理:」の行に飛ばすための宣言
On Error Goto エラー処理

  '変数を宣言
  Dim strPWD As String, Rslt As Boolean

  '正規パスワードを定数として記録
  Const strReg As String = "abcDEF"

  '入力したパスワードを変数に記録
  '(空白(Null)は、空文字("")に変換)
  strPWD = Nz(パスワード, "")

  '正規パスワードと比較
  '(StrComp関数を使用し、大文字・小文字を区別させます)
  Rslt = (StrComp(strPWD, strReg, vbBinaryCompare) = 0)

  '合致した場合はデータベースウィンドウを表示、しなければ終了
  If Rslt Then   '合致
    'メッセージを表示して、データベースウィンドウを表示
    '(「acTable」は『テーブル』タブの指定。フォームなら「acForm」)
    MsgBox "正規のパスワードを確認しました。", , "確認"
    DoCmd.SelectObject acTable, , True
  Else        '不一致
    'メッセージを表示して、Accessを終了
    MsgBox "パスワードの認証に失敗したため、終了します。", , "確認"
    DoCmd.Quit acQuitPrompt
  End If

終了処理:
  '処理を終了(→「エラー処理」部分が無限ループになるのを回避)
  Exit Sub

エラー処理:
  'エラー発生時はエラー内容をメッセージボックスで表示
  MsgBox Err.Number & ":" & Err.Description, , Me.Name & " 認証"
  Resume 終了処理

End Sub

8)「取消」ボタンのクリック時には、このフォーム自体を閉じるためのコードを
 指定(VBAなら「DoCmd.Close」、マクロなら「閉じる」アクション)
9)フォームのプロパティシートで、『書式』タブの各項目を以下のように設定:
 『レコードセレクタ』=「いいえ」
 『移動ボタン』=「いいえ」
 『サイズ自動修正』=「はい」(既定で「はい」のはず)
 『自動中央寄せ』=「はい」
 『境界線スタイル』=「ダイアログ」
10)今度は『その他』タブに移動し、以下のように設定します:
 『ポップアップ』=「はい」
 『作業ウィンドウ固定』=「はい」
 ※ここの設定は、フォームを開くときにダイアログモードを指定する場合は
  省略できます。
  (VBAなら「DoCmd.OpenForm "フォーム名", , , , , acDialog」、マクロなら
  『フォームを開く』アクションで『ウィンドウ モード』に「ダイアログ」を指定)
11)このフォームに適当な名前をつけて保存して閉じる

以上で作成したパスワード確認用のフォームを、現在、F11のキー送信を
行っているボタンから呼び出すようにしてやれば、目的を達せられるかと
思います。


・・・以上、長くなりましたが(汗)、参考まで。
「Accessでのパスワード設定について」の回答画像3
    • good
    • 0
この回答へのお礼

完璧です・・・。
本当にありがとうございました。
またよろしくお願いいたします!

お礼日時:2010/04/06 12:06

まず、ファイルを『排他モード』で開きます。



【排他モードの開き方】
スタートメニューの『Access』を開き
ファイルを選択して、右下の『開く』から『排他モードで開く』を選択。

そして、『ツール』⇒『セキュリティ』⇒『データベース パスワードの設定』

パスワードを設定後、ファイルを再起動すればOKですが
質問の答えになっていますでしょうか?

この回答への補足

早速ありがとうございます。
質問の趣旨ですが、要するに、設置したボタンを押すと・・・パスワードを求めるウィンドウが開いて、パスワードを入れるとそのパスワードが合っていればデータベースウィンドウが表示されて、間違っていたらアプリケーションを終了するようにできればOKです。

教えていただいた方法では、データベースを開くことにパスワードを要求するということではないでしょうか?

補足日時:2010/04/05 13:19
    • good
    • 0

標準のインプットボックスか、パスワード入力画面を新たに用意して、



パスワードの認証ロジックを作成すればよいでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す