こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

フォーム内のテキストボックスに複数レコードを表示

いつも大変お世話なっております。Accessを始めて3週間の初心者です。
今、社員の在籍中の職級推移を残すための社員明細フォームを作成しています。
社員数数百名。

フォーム名:社員明細
テーブル名:TBL_職級期間一覧
テーブルには 以下のようなレコードが並んでいます。
IDはオートナンバー型を振っています。
年度が替わって、職級が変化すればレコードが追加されます。
(ID 586のように001234 さんのレコードが追加)

 ID  社員No    開始     終了    職級名
 1  001234  2004/04/01 2008/03/31   S3
 2  001234  2008/04/01 2012/03/31   S2
 3  001234  2012/04/01 2015/03/31   S1
 4  005678  1998/04/01 2003/03/31   T6
 5  005678  2003/04/01 2005/03/31   T5
 6  005678  2005/04/01 2013/03/31   T4
 7  005678  2013/04/01 2016/03/31   T3
 ・
 ・
 ・
586  001234  2015/04/01 2016/03/31   K5

これらを添付写真のようにフォームに表示させる方法がわかりません。
IDを振ったのは社員Noで絞り込み、昇順・降順で表示させる順番を
推移の新しい順、古い順に可変させられるのでは・・?と思ったので
IDフィールドを付けました。

いろいろ検索し=DLOOKUPを使ったりと試してみましたが、よくわかり
ませんでした。

何卒お力添えをお願い致します。

投稿日時 - 2016-11-26 05:08:14

QNo.9260343

困ってます

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

メインフォームのなかに表形式のサブフォームを埋め込むという設計するするといいでしょう。ウィザードで簡単にできます。

社員マスターテーブルはありますよね。
まず、リレーションシップの設定で、社員マスターテーブルと「TBL_職級期間一覧」を「社員No」同士で結合しておきます。(詳細は下記参照)

リレーションシップの設定 - もう一度学ぶMS-Access
http://www.accessdbstudy.net/entry/20140820/p1

次にフォームウィザードで、社員マスターテーブルから、「社員NO」フィールドを選択、
「TBL_職級期間一覧」からそれ以外のフィールドを選択して、「次へ」をクリックして、
「サブフォームがあるフォーム」のオプションを選択します。
あとは、ウィザードの指示通りに設定して「次へ」ボタンをクリックしていけばご希望のフォームが完成します。(詳細は下記参照)

メイン・サブフォームの作り方
http://sun.ac.jp/prof/hemmi/DataBase/Form_Tsukurikata-MainSub.htm

投稿日時 - 2016-11-26 11:29:00

お礼

hatena1989さん

ご回答頂きありがとうございました。
サブフォームを使った方法の勉強になりました。
サブフォームを使うと、見た目が希望のとおりとはいきませんでしたが
結果は問題なく表示されましたので、ご教示頂いた方法で進めようと
思います。

助かりました。ありがとうございます。

投稿日時 - 2016-11-29 16:37:17

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

まず最初に社員番号を選択させるフォームを作成する。
フォームのソースにTBL_職級期間一覧を元にした社員Noだけのクエリーを指定すればテキストボックスじゃなくドロップダウンリストやリストボックスが使える。

次に職歴一覧のフォームを作成し、フォームのソースには直前のフォームで指定した社員Noからの抽出クエリーを指定。
あとは、明細にクエリーの各項目を指定。
※ウィザードを使えば手間が省けるかもしれません。
表示させるだけなら各項目のプロパティで編集不可など適時指定してください。




ザッとですが、こんな感じです。

TBL_職級期間一覧から社員番号だけのクエリーを作ると、同じ番号が複数出てくることもありますが、その場合は「GROUP BY」を使って纏めさせましょう。
※私は面倒くさい時はSQLで直接記述するもので(笑)

選択クエリーでは、抽出条件にフォームのテキストボックスなどを指定できます。
そうすると、入力したコードとか、ドロップダウンリストで選択された値で抽出させることが可能となります。
フォームから別のフォームを表示させる時はマクロを使用します。
VBAでコードを記述することも出来ますが、初心者には敷居が高いと思うのでマクロが良いでしょう。




私はAccess Version2.0でかなり踏み込んだところまで覚えたので、最新バージョンのことはよくわかりません。
基礎をバッチリ覚えていれば、最新バージョンでも異なるところを感じ取り、使いながら覚えられるので・・・

投稿日時 - 2016-11-26 06:12:49

お礼

bardfishさん

ご回答ありがとうございました。
なかなかわかりづらく、もっと勉強が必要と感じましたが、
社員番号でドロップダウンリストを作り、必要な社員番号分の
職級期間一覧を表示させることができました。

いろんなアイデアをお持ちなので、自分も引き出しをもっと
増やしていきたいと思います。

助かりました。ありがとうございました。

投稿日時 - 2016-11-29 16:41:49