- ベストアンサー
Access初心者が社員明細フォームの作成方法について質問
- Accessを始めて3週間の初心者です。現在、社員の在籍中の職級推移を残すための社員明細フォームを作成しています。具体的には、TBL_職級期間一覧というテーブル内の複数レコードを表示するフォームです。フォームには社員No、開始日、終了日、職級名が表示されます。
- フォーム作成にあたり、IDフィールドを振り、社員Noで絞り込みや昇順・降順で表示させる順番を可変させることを考えています。
- しかし、DLOOKUPなどを試してみましたが、うまくいきません。アクセス初心者のため、ご教示いただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
メインフォームのなかに表形式のサブフォームを埋め込むという設計するするといいでしょう。ウィザードで簡単にできます。 社員マスターテーブルはありますよね。 まず、リレーションシップの設定で、社員マスターテーブルと「TBL_職級期間一覧」を「社員No」同士で結合しておきます。(詳細は下記参照) リレーションシップの設定 - もう一度学ぶMS-Access http://www.accessdbstudy.net/entry/20140820/p1 次にフォームウィザードで、社員マスターテーブルから、「社員NO」フィールドを選択、 「TBL_職級期間一覧」からそれ以外のフィールドを選択して、「次へ」をクリックして、 「サブフォームがあるフォーム」のオプションを選択します。 あとは、ウィザードの指示通りに設定して「次へ」ボタンをクリックしていけばご希望のフォームが完成します。(詳細は下記参照) メイン・サブフォームの作り方 http://sun.ac.jp/prof/hemmi/DataBase/Form_Tsukurikata-MainSub.htm
その他の回答 (1)
- bardfish
- ベストアンサー率28% (5029/17766)
まず最初に社員番号を選択させるフォームを作成する。 フォームのソースにTBL_職級期間一覧を元にした社員Noだけのクエリーを指定すればテキストボックスじゃなくドロップダウンリストやリストボックスが使える。 次に職歴一覧のフォームを作成し、フォームのソースには直前のフォームで指定した社員Noからの抽出クエリーを指定。 あとは、明細にクエリーの各項目を指定。 ※ウィザードを使えば手間が省けるかもしれません。 表示させるだけなら各項目のプロパティで編集不可など適時指定してください。 ザッとですが、こんな感じです。 TBL_職級期間一覧から社員番号だけのクエリーを作ると、同じ番号が複数出てくることもありますが、その場合は「GROUP BY」を使って纏めさせましょう。 ※私は面倒くさい時はSQLで直接記述するもので(笑) 選択クエリーでは、抽出条件にフォームのテキストボックスなどを指定できます。 そうすると、入力したコードとか、ドロップダウンリストで選択された値で抽出させることが可能となります。 フォームから別のフォームを表示させる時はマクロを使用します。 VBAでコードを記述することも出来ますが、初心者には敷居が高いと思うのでマクロが良いでしょう。 私はAccess Version2.0でかなり踏み込んだところまで覚えたので、最新バージョンのことはよくわかりません。 基礎をバッチリ覚えていれば、最新バージョンでも異なるところを感じ取り、使いながら覚えられるので・・・
お礼
bardfishさん ご回答ありがとうございました。 なかなかわかりづらく、もっと勉強が必要と感じましたが、 社員番号でドロップダウンリストを作り、必要な社員番号分の 職級期間一覧を表示させることができました。 いろんなアイデアをお持ちなので、自分も引き出しをもっと 増やしていきたいと思います。 助かりました。ありがとうございました。
お礼
hatena1989さん ご回答頂きありがとうございました。 サブフォームを使った方法の勉強になりました。 サブフォームを使うと、見た目が希望のとおりとはいきませんでしたが 結果は問題なく表示されましたので、ご教示頂いた方法で進めようと 思います。 助かりました。ありがとうございます。