<Access ユーザーマスターのチェックとメニュー切り替え>
こんにちは、三流プログラマーKen3です。 今回から少し、 Access で ユーザーのローカル管理 ・ユーザー選択画面 ・データ入力 ・データ印刷 を書いてみたと思います。 サンプルファイルは、 http://www.ken3.org/vba/lzh/vba066.lzh にdb066-97.mdbが保存されています。 (Access97形式、2000の人は変換してね) マスターテーブルにデータを追加して、遊んでみてください。/* * 1.今回のキッカケ */
In message "有難うございました", 前* **さん wrote... >すみませんが、現在アクセス VBA関係で直面している問題がありますのでまた質問 >させていただきたいのですが > >私の希望は、アクセスの画面を開いたときに、フォームが出てオペレーターは入力の >み、パスワードを持つ担当者が、検索、修正ができるようにしたいと思っています > >その場合、オペレーターに自分が入力したデータだけを打ち出させて、目検してもら >いたいのですがその日、自分が入力したデータだけを打ち出すことができるでしょう >か ---- 質問来てからの日数が経っているので、もう解決してしまったと思うが、 ネタ的に使えそうなので、使ってみたいと思います。/* * 2.客先で要望を聞く */
まぁ、普通のシステム作成だと要望を聞いて、仕様書を作成します。 とある入力センターに打ち合わせに向かいました。 ※作り話だよ 客先担当者のお話 >私の希望は、アクセスの画面を開いたときに、フォームが出てオペレーターは入力の >み、パスワードを持つ担当者が、検索、修正ができるようにしたいと思っています > >その場合、オペレーターに自分が入力したデータだけを打ち出させて、目検してもら >いたいのですがその日、自分が入力したデータだけを打ち出すことができるでしょう >か --- 三流プログラマーKen3 まずは、管理者とオペレーターで使える機能に制限を持たせたいんですね。 管理者の機能は ・ユーザーマスターのメンテナンス ・検索と修正機能 ・納品用の印刷や納品用CSV作成などの出力機能 オペレーターの機能は ・データの入力機能 ・入力データの目検用の印刷機能 共通機能は、 ・ログイン画面 ラフですが、こんな感じでいいですか? あの〜、何を言っているのか?サッパリなんですが?イメージが沸かなくて。 そうですよね(苦笑しながら)、 では、次回の打ち合わせの時、案を作って持ってきます、 あっ、その時までに入力するデータの項目とサイズを教えてもらえませんか? あと、差し障りが無ければ実際に入力する伝票を次回お借りしたいです。 それと、 えっ、まだあるの? できたら集計印刷のイメージを教えてもらえると助かります。 次回の打ち合わせに 私が用意するもの ・システム化の案 ・概算見積もり お客様に用意してもらうもの ・入力データの項目とサイズ、実際に使用している伝票 ・集計印刷のイメージとレイアウトはラフな手書き/* * 3.要望を仕様書に落す */
画面の遷移図を作成する ~~~~~~~~~~~~~~~~~~~~~~ まぁ、1機能1画面だから機能一覧と似ちゃうけど Windoes起動 ↓ xxxx.mdb をダブルクリックして起動する ログイン画面の表示 | +----- 終了ボタン Accessの終了 | +----- ログインボタン データチェック後、 管理者メニュー オペレータメニュー どちらかのメニューを表示する 管理者メニュー | +----- マスターメンテナンス マスターメンテ画面を起動 | +----- 管理帳票印刷 管理帳票印刷画面へ | +----- CSV納品ファイルの作成 納品ファイル作成画面へ | +----- 作業終了 管理者メニューを閉じてログイン画面へ オペレータメニュー | +----- データ入力 データ入力画面の表示 | +----- 目検 入力データを印刷する | +----- 作業終了 オペレータメニューを閉じてログイン画面へ テーブル(ファイル)フォーマット ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MST_USER ユーザーマスターテーブル F_USER_ID Text(10) 10文字まで、GusetやA001などのコード 重複不可 F_NAME Text(20) ユーザーの名前 小林君や遠藤君 F_PASS Text(20) パスワード F_KUBUN True/False True管理者、False一般オペレータ T_DATA 入力データ管理テーブル F_NO オートナンバー ・ ・ 客先から後で聞く ・ F_INPUT text(文字型) 入力したユーザーのID 画面レイアウト ~~~~~~~~~~~~~~ ログイン画面 F_LOGIN USER [ ________ ] ▼ コンボボックスで選択 PassWord [ ********** ] ┌────┐ │ログイン│ └────┘ ┌──────┐ │システム終了│ └──────┘ ユーザーを選択、パスワード入力後、ログインボタンを押してください。 管理者メニュー画面 F_MENU_KANRI ┌────────┐ │ マスターメンテ │ └────────┘ ┌────────┐ │ 管理帳票印刷 │ └────────┘ ┌────────┐ │納品ファイル作成│ └────────┘ ┌────────┐ │ 終 了 │ └────────┘ オペレータメニュー画面 F_MENU_OP ┌─────┐ │ 入 力 │ └─────┘ ┌─────┐ │目検用印刷│ └─────┘ ┌─────┐ │ 終 了 │ └─────┘ 印刷(帳票)レイアウト ~~~~~~~~~~~~~~~~~~~~~~ イメージを貰っていないのでまだ。 まぁ、ラフに書いて、打ち合わせ後に修正するか。/* * 4.ログイン画面の作成 */
時間あるし、ログイン画面でも作成して持って行くか。 ログイン画面 F_LOGIN USER [ Ken3______ ] ▼ コンボボックスで選択 PassWord [ ********** ] ┌────┐ │ログイン│ └────┘ ┌──────┐ │システム終了│ └──────┘ イベント動作仕様(操作に対応する処理) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初期処理 ・・・ 画面が開いたら項目を初期値に(空白にする) ログインボタンが押されたら MST_USER ユーザーマスターテーブルを検索して、 入力されたパスワードとテーブルのF_PASSが一致するかチェック。 ア.エラーの時、エラーメッセージ表示 イ.一致(正常の時) F_KUBUNを判断し、フォームを開く F_KUBUN = True 管理者メニュー画面 F_MENU_KANRIを開く F_KUBUN = False オペレータメニュー画面 F_MENU_OPを開く システム終了ボタンが押されたら Accessを終了させる まずは、テーブルを作ってと、 次はフォームを作成します。 ポイントはUSERIDを入れるコンボボックスです。 クエリーを1つ作り(Q_USER)値集合ソースに指定、 列幅を4cm;0cm;0cm;0cmとして、 ^^^^^^^^^^^^^^^^^^^^^ 頭のF_USER_IDのみ表示させてます。 *F_NAME, F_PASS, F_KUBUN は見せないけど値は取りたかったので。 次は、ログインボタンを押された時の処理を記述します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Private Sub btnLOGIN_Click() 'パスワードが合っているかチェックする If Me![PASS] <> Me![USER_ID].Column(2) Then 'コンボボックスの3列目 MsgBox "パスワードが違います、確認して下さい" Me![PASS] = "" '元の文字を消す Me![PASS].SetFocus 'フォーカスを移動する Exit Sub '途中で処理を抜ける End If '管理者とオペレータを判断してフォームを開く Dim stLinkCriteria As String If Me![USER_ID].Column(3) = True Then 'コンボボックスの4列目 DoCmd.OpenForm "F_MENU_K" '管理者用 Else DoCmd.OpenForm "F_MENU_OP" 'オペレータ用 End If End Sub |
Private Sub btnCLOSE_Click() '終了の確認 If MsgBox("終了しますか?", vbYesNo) = vbYes Then DoCmd.Quit End If End Sub |
Private Sub コマンド9_Click() On Error GoTo Err_コマンド9_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "F_MEMU_K" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド9_Click: Exit Sub Err_コマンド9_Click: MsgBox Err.Description Resume Exit_コマンド9_Click End Sub |
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]