Accessで人事データベースを作成する手順と方法

このQ&Aのポイント
  • Accessで人事データベースを作成する方法を教えてください。
  • メインフォームに「社員検索」というボタンを作成し、ボタンをタップすると入力欄が表示されます。ひらがなで社員の苗字を入力すると、該当の苗字の従業員が表示されます。従業員を選択すると、その従業員の基本情報のフォームが表示されます。
  • 従業員Bの基本情報のフォームを開いている状態で、フォーム内にある「詳細」ボタンを選択すると、従業員Bの詳細フォームが開きます。
回答を見る
  • ベストアンサー

Accessで人事データベースを作成したいです!

下記2点について質問です。 (1) 下記を作成するにはどのような手順、方法で作成できますでしょうか。 メインフォームに「社員検索」というボタンを作成→ ボタンをタップすると、入力欄が表示される→ひらがなで、社員の苗字を入力→該当の苗字の従業員を表示→さらに従業員を選択すると、その従業員の基本情報のフォームを表示する (2)従業員Bの基本情報のフォームを開いている状態で、フォーム内にある「詳細」ボタンを選択すると、従業員Bの詳細フォームを開く。 (1)、(2)ともにVBAを使用せず作成したいです。随分と昔に講座で教えていただいたのですが、分からなくなってしまいました。 どなたかお分かりになりましたら、よろしくお願いいたします。

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

  • ベストアンサー
  • chayamati
  • ベストアンサー率41% (254/607)
回答No.4

>従業員の人数は→50名です。 ☆単票じゃなく、帳表形式のフォーム(一人1行)フォームをフリガナ順に表示  数回のスクロールでOK >Accessのヴァージョンは→Access2016です。 ☆幸い昨年夏にAccess2016をインストールしました。  使い勝手がよくなっています。 ---------------------------------------------------------------------------- Accessでは情報はテーブルに保存します。  従ってテーブルの設定からはじめます。  画像をご覧ください  取り敢えず。M_部署マスタ、M_従業員マスタ T_詳細の3つのテーブルをお互いに関係付けします。   この関係付けをリレーションシップと呼びます。   項目の追加は何時でも出来ますので、項目は以下から始めます。   尚、テーブルの最初のIDは各設定の最終で作成されますんで2項目めからです ・M_部署   ID:オートナンバー型   部署名:テキスト型、IME入力モード=ひらがな、インデックス重複無   フリガナ:テキスト型(半角カタカナ)    ふりがなの右端…から自動ふり仮名 ・M_従業員   ID:オートナンバー型   従業員名:テキスト型、IME入力モード=ひらがな、インデックス重複無   部署ID:数値型、長整数型    テーブル設計の下段のルックアッププロパティーでM_部署を参照    部署ID→ルックアップ→表示コントロルの右端のV→コンボボックス    →値集合ソース右端V→M_部署→列数=2→列幅=0 ルックアップ設定   標題=部署名   フリガナ:テキスト型(半角カタカナ) ・T_詳細 日付:日付/時刻型  詳細  従業員ID   テーブル設計の下段のルックアッププロパティーでM_従業員を参照    従業員ID→ルックアップ→表示コントロルの右端のV→コンボボックス    →値集合ソース右端V→M_従業員→列数=2→列幅=0   標題=従業員名 リレーションシップの設定手順は次で、マウス操作だけです  データベースツール→リレーションシップ→ナビゲーション上のテーブルをドラッグ  →部署.ID~部署IDを参照整合性  →従業員ID~従業員IDを参照整合性  

RISA_1251
質問者

お礼

大変ご丁寧に解説頂き、ありがとうございます!!貴重なお時間をありがとうございました。後ほど、ご説明頂いた内容を元に作成してみます。助かります><  ありがとうございます!

その他の回答 (4)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.5

今晩は、 回答No.4の添付図はテーブル間は1:∞の参照整合性で関連付けられています。  ∞の情報を選択すると1側の情報が特定されます。 この図のテーブルをレコードソースとして作成したのが  ご質問の回答の従業員登録フォームです。 上段に数行の従業員リストはフリガナ順に基本情報が表示されています。  基本情報の項目が多ければ登録項目を2つのフォームで対応します。  フォームのプロパティーで追加、削除、修正の出来ない参照専用  参照専用のフォームよりフリガナ、生年月日等を表示除外して  必要最小限にします。 人数が表示高さが超えると右端に上下のスクロールバーが表示されます。 下段の赤枠の2つはサブフォームで詳細情報です。 サブフォームは基本情報の右端のレコードセレクターのある情報  つまり前田氏の詳細情報です ここで、基本情報と詳細情報に触れておきます ・基本情報:一度登録するとある程度の期間変更のないもの       氏名、生年月日、入社年月日、配属部署、役職等 ・詳細情報;日付を伴う情報(人事異動、転勤、昇級)、従業員の家族、日付を伴う覚え書き   日付が伴う情報は期間が抽出条件

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.3

VBAなしで実現できると思いますが 補足願います (1)で開いた従業員と従業員Bは別人ですか 一人の基本情報に複数の詳細情報があるのですか 従業員の人数はどの程度ですか Accessのヴァージョンは

RISA_1251
質問者

補足

お時間いただきありがとうございます!とても困っているので大変助かります.. (1)で開いた従業員と従業員Bは別人ですか →同じ人(従業員B)の想定です。 一人の基本情報に複数の詳細情報があるのですか →はい。イメージとしては従業員Bの「基本情報」フォーム内に「給与」、「評価」、「個人情報」等の 複数の詳細ボタンを作成し、そのボタンを選択すると従業員Bの各情報を表示させたいです。 (現状、従業員Bの基本情報から仮に「給与」というボタンを選択すると従業員A(1番目に登録した従業員)の内容が表示され、 従業員Bと連動していないです) 従業員の人数はどの程度ですか →50名です。 Accessのヴァージョンは →Access2016です。

  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.2

イベントプロシージャじゃなくてイベントでした。

  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.1

フォームと選択クエリをもとにしたフォームを作成し、イベントプロシージャでマクロからクエリを基にしたフォームを開いたり、フィルター機能を使うなどしてお望みのものを作成してください。

関連するQ&A

  • Access2003でフォームにあるコマンドボタンで更にフォームを開く

    Access2003でフォームにあるコマンドボタンで更にフォームを開くときのVBA記述で困っています。 Access2003で社員情報管理のデータベースを作成中です。 社員の情報を入力するにあたり、【基本情報】と【詳細情報】とでフォームを分けてあり、【詳細情報】を入力したい場合は、"基本情報フォーム"にあるコマンドボタンをクリックして"詳細情報フォーム"を開くようになっています。 この際、"基本情報フォーム"で開いている社員の【社員番号】を"詳細情報フォーム"の【社員番号】欄にも自動的に表示させるため、以下のようなVBAを記述しました。 Private Sub コマンドボタン_Click() DoCmd.OpenForm "詳細情報フォーム" Forms![詳細情報フォーム![社員番号].DefaultValue = Me![社員番号] End Sub 【社員番号】は7ケタの半角英数で、社員によって、数字だけの場合と、英数混じっている場合とがあります(データ型はテキスト型にしてあります)。 困っているのは、 1.上記を実行した際に、数字だけの社員番号は問題ないのですが、英数混じりの場合だと"社員番号"テキストボックスが「#Name?」という表示になってしまう 2."基本情報フォーム"のコマンドボタンをクリックして新規の"詳細情報フォーム"を開き(社員番号のみが反映され、他の項目は空欄の状態)、詳細情報を入力→保存したあと、別の社員番号で"基本情報フォーム"を開き、コマンドボタンで"詳細情報フォーム"を開くと、前に入力した社員の情報が出てきてしまう。 (つまり、"詳細情報フォーム"のもととなるテーブルに、1行でもレコードがあると、それが出てきてしまう。) 【詳細情報】は、 1.データを入力する社員としない社員とがいる 2.新規でレコードを作成する場合と、既存のレコードを上書きする場合とがある ので、もととなる"詳細情報テーブル"にその【社員番号の】レコードがなければ新規入力画面を、レコードがあればそのレコードを呼び出す形にしたいのですが、英数混じりの表示の件も含め、どうすれば、正しく表示されるか教えていただきたいです。 ぜひぜひよろしくお願いします。

  • ACCESSでのデータベース作成

    AフォームからBフォームをひらいた時に、新規レコード入力画面を表示させるイベントプロシージャのコードをどう書けばいいか教えて下さい。

  • データベース入力システムについて(VB & ACCESS)

    業者にACCESSとVisual Basicを使った簡単なデータベース入力/修正/出力システムを作成してもらいましたが、現在、いくつかの改善要求をしているのですが、改造が大変と言われて困っています。 どの程度、大変なものなのか、手段等があれば教えて下さい。 なお、当方は、ACCESS、VBとも作成経験は多少あります。 メインフォームは、VBで作られており、いくつかのボタンとACCESSでいうデータシートフォームがついており、全データの表示を行っています。このデータシートのうちの1項目を選択して、あるボタンを押すと、単票入力フォームのようなものが表示され、1データの入力、修正ができます。 改善要求は下記です。 (1)メインフォームで修正できないか? ACCESSであれば、通常、修正することは、出来ると思うのですが、VBでは、簡単に行かないと言われていますが、そうなのでしょうか?設定を変えるだけで済まないのでしょうか? (2)メインフォームで、アイテム毎にソートしたい。 これも、ACCESSであれば、通常、できると思うのですが。 (3)メインフォームで、複数項目を選択する時、CTRLキーを押しながら、複数項目選択は可能ですが、SHIFTキーによる連続する項目の選択が出来ない。20項目あると、一つずつ、20個選択するのは大変。 (4)メインフォームで、項目を選択、ドラッグして、並びを変えたい。 現在は、各項目の左隣に、項目数分、ボタンを追加して、ボタンを押した順番に並ぶように考えています。 アイテムを一つ追加して、ボタンを押した順番に1,2,3、・・・と追加したアイテムに数値が入るようにして、 次に立ち上げた時、この数値の順に並ぶようにします。 何か良いアイデアはないですかね? 一つずつでも結構ですから、ご回答頂くとありがたいです。

  • Access2002 レコード入力時に更新/追加を判別できないでしょう

    Access2002 レコード入力時に更新/追加を判別できないでしょうか? わかりにくくてすみません。 現在、簡単な従業員データベースを作っています。 テーブルは2つだけです。 T_基本データ ・従業員番号=主キー ・氏名 ・カナ T_付属データ ・従業員番号=主キー ・職位 だけです。 本来ならば、1つのテーブルでいいのですが、T_基本データのみ、他部署からMDBで送られてくるため、そのMDBの内容、構成は変更できない(頻繁に送られてくるため、いちいち弊部署にマッチした構造に変換する暇が無い)ため、リンクテーブルにしており、弊部署で必要な付属データを別テーブルにし、従業員番号でリンクしている状態です。 フォームは2つ作っており、1つはT_基本データと、T_付属データを一まとめにして表示できるようになっています。付属データが存在しない場合は、該当項目のテキストボックスは空白です。また、従業員番号や氏名で検索(フィルタ)できるようにしています。単票形式です。 そのフォームに「付属情報入力フォーム」を呼び出すコマンドボタンを用意し、そのフォームを呼び出すようにしています。こちらも単票形式です。ちなみに、プロパティで「入力用=はい」にしています。こうしないと、T_付属データの1レコード目が変更されるだけで、追加してくれないためです。 1つ目のフォームで付属情報入力用フォームの呼び出しボタンをクリックすると、フォームが現れ、従業員番号と氏名のテキストボックス(表示済み)と付属情報を選択するコンボボックスが表示されます。 ここで、コンボボックスから適当な項目を選択し、保存を押すと、そのフォームが消え、1つ目のフォームがリクエリーされて、選択した付属情報がテキストボックスに表示されます。 ここまではすんなり作成できたのですが、問題は、一度入力した付属データを更新できないのです。(消すことはできますので、ユーザがめんどくさがっても、一度消去→再入力、は可能です。が。。。美しくない気がします) 一度付属データを入力した社員を1つ目のフォームで表示させ、付属データ入力用のフォームを表示させると、すでに入力してある付属データが表示されますが、これを変更して終了ボタンを押すと、主キーが重複・・・というメッセージが出て保存できません。 当たり前といえば当たり前なのですが。。。 私の頭の中では、2つ目のフォームで、 1.コンボボックスで職位を選択 2.終了をクリック 3.T_付属情報で従業員番号を検索し、あればそのレコードを更新、なければ新規レコードを追加 というシナリオがあるのですが、どう実現していいのかがわからない状態です。 お詳しい方、ご教授くださいませ。 また、「この程度なら1つのフォーム(とサブフォーム)でできるじゃん」という気もするのですが・・・そういう解決策もあればお教え願えれば幸いです。 長文になりましたが、何卒よろしくお願いします。

  • 社員DBを作る

    お願いします。 Accessで社員DBを作ろうと検討しておりますが、基本的な考え方についてアドバイスください。 1)社員の氏名、所属、住所などの基本情報を入れるマスタテーブルを作る(社員番号を主キー)。 2)付加的な情報を入れるテーブルを作る。たとえば、 (1)家族情報(2)資格情報(3)人事考課情報(4)勤怠情報など・・。 3)上記、基本情報を入れるテーブルと付加的情報テーブルを社員番号をキーとしたリレーションで結ぶ。 4)各社員について、付加的情報テーブルに情報を入力していき、必要に応じてクエリで取り出す。 情報の入力の仕方として考えているのが、 1)基本情報入力フォーム上に、付加的情報の入力用のフォームを開くボタンを配置する。 2)基本情報入力フォームを開いた後、必要に応じ、該当するボタンを押して入力フォームを開き、付加的情報を入力していく。 具体的に言えば・・ 1)Aという社員の基本情報を開いて、付加的情報たとえば家族情報を「家族テーブル」に入力する。 2)その後、Bという社員の同じ家族情報を入力するためにBの基本情報を開いて、Bの家族情報を入力する。 3)家族テーブルには、Aの家族とBの家族のレコードが混在して蓄積されるが、区別するために、各レコードに「社員番号+行番号(連番)」を自動的につけていく。 4)基本情報フォームで社員を選択し、家族情報フォームを開くと、社員番号をキーに抽出されたレコードが表示される。 長々と書きましたが、この社員台帳データベース作成上の基本的な設計方法に問題はないでしょうか? もしおかしければ、どこをどうすれば使えるDBになるのでしょうか? アドバイスをお願いします。

  • アクセスでデータベースを使用しています。

    アクセスでデータベースを使用しています。 10種類ほどの情報を入力するテーブルがあり、フォームを作成してフォームから情報を入力しています。 画面下の矢印で別のシートに移動することができます。 データが1000個のうち900番目であれば900/1000という風に表示され全てのデータをシート移動で見ることが出来ます。 ここまでは通常のデータベースとして問題ないと思います。 その後、決まりきったいくつかの情報しか入力することの無いある1セルの情報を、ドロップダウンリストから選択するようにしました。 分かりやすくたとえて言うと、専用の担当者がついている場合にはその担当者の名前を入れるセルで、専用の担当が居ない場合はブランクにするセルだとします。 ドロップダウンの内容は、別途社員名簿のテーブルがあるので、その名前から選択するようにしています。 ドロップダウン選択自体はうまくいったのですが、その後から何故かフォームからシートの移動がうまくいかなくなってしまいました。 具体的には、そのセルに担当名が入力されているシートが1000のうち10だけだとすると、10/10と表示されてしまい、のこりの990のシートには移動ができなくなってしまいました。 データベース自体は問題ないので変にフィルタでもかかったのかとおもいましたが特にフィルタはかかっていませんでした。 明らかにドロップダウンリストを導入したことが原因でおかしくなっているのですが、解決方法がわかりません。 担当名がブランクのシートも表示できる用に元通り1000/1000にしたいです。 この説明で理解してもらえて且つ俺にわかるように説明することの出来る神の降臨を期待してます・・!

  • Access2002 フォームからのレコード入力の成功/不成功

    いつもお世話になっております。 早速ですが、従業員マスタテーブルがあり、それを元に従業員の情報を入力するフォームを作成しました。 従業員マスタテーブルは、「社員番号」だけをキーにしています。 例えば、新入社員のデータを、完全に新規に入力する場合、うまく行きます。 また、すでにいる社員の、「社員番号以外」のフィールドを更新することもできます。 しかし、社員番号が既存のものとかぶるような新規登録、あるいは情報変更に関しては、入力用フォーム上では正常終了したように見えますが、実際の従業員マスタテーブルをチェックしてみると、変更はされていません。 ですので、フォームしか触れないユーザは、自分の変更、新規追加がうまく行ったのかどうか、テーブルが見られないのでわからない、という状況になっています。 仕様要求としては、新規であれ、情報変更であれ、既存の社員番号に重なる場合はメッセージボックスで「更新失敗」を表示したいのです。 If Exist・・・のような分岐を情報を入力するフォームの「閉じる」ボタンの裏に設けたいのですが、やり方がイマイチわかっておりません。 ご存知の方がいらっしゃれば、ご教授、よろしくお願いします。 --------------------------------------------------------------- <従業員マスタ> ・社員番号・・・テキスト ・氏名・・・テキスト <仕様要求> 社員番号「0001」と「0002」の社員が存在する場合・・・ ・情報入力画面で、「0001」の社員の社員番号を「0002」に変更しようとすると、エラーメッセージ表示 ・新規情報入力(新入社員など)の際、社員番号が「0001」や「0002」の社員として登録しようとすると、エラーメッセージ表示 以上、お時間のあるときによろしくお願いします。

  • Accessでデータベースを作っています。

    Accessでデータベースを作っています。 先日、こちらで質問をさせていただいて、クエリで複数のフィールドを対象にデータを検索する ことはクリアできました。 ありがとうございました。 ご指導に基づき、4つのフィールド(仮にA,B,C,D)について、クエリの抽出条件に  Like "*" & [Aを入力] & "*"  Like "*" & [Bを入力] & "*" ・・・ とそれぞれ設定してパラメータ入力を求め、4つの条件すべて、または一部のみ設定して検索し、 正しい検索結果が得られました。 今度は、検索用のフォームを作成し、フォームで入力した条件をクエリに送って、同じ結果を 得たいと思うのですが、以下の方法では正しい検索結果が出てきません。 ・フォームに検索用のボックスをA~Dまで4つ作成(ひとつはコンボボックス、あとはテキスト) ・クエリの抽出条件に、それぞれ以下を入力     Like "*" & [Forms]![Q_form(作成したフォームの名前)]!                       [A(それぞれの検索ボックスの名前)] & "*" ・フォームに「クエリの実行」のコマンドボタンを配置 パラメータで入力する代わりにフォームを使いたい、というものなのですが(パラメータ入力 よりも、コンボボックスを使って値を選ぶ方が検索する人には使いやすいかと思って)、どうしたら うまいこといきますでしょうか。。 教えてください。

  • Access、選択して印刷したい場合

     こんにちは、長い質問ですみません。どなたかご教授お願いします。  今、作成したいのはテーブルAに1000件以上の顧客データ(重複ないです)があり、その中から1件だけ選択し、フォームB上に作成したコマンドボタンのクリックで、その顧客データの情報だけをA4サイズ全てを使用して印刷出力したいのです。  レポートの詳細にテーブルAのフィールド項目を反映させると、1件だけではなく、A4サイズに許す限り次のデータが反映されてしまいます。  作業の順番を下記のように私なりに考えて進めていますが、どこがおかしいでしょうか? (1)テーブルAと連結する検索クエリCを作成し、抽出条件にLike[顧客コード]&"*" (2)フォームBのコントロールソースをクエリCに設定 →初期画面をフォームBにし、フォームBを立ち上げると同時にパラメータの入力画面が出て、そこに顧客コードを入力すると顧客情報がフォームB上に表示されます。 (3)テーブルAをコントロールソースにしたレポートを作成する。詳細にテーブルAのフィールド項目を入力。 (4)印刷マクロを作成し、マクロのアクションを「レポートを開く」にし、ビューを印刷にする。 (5)フォームBに印刷コマンドを作成し、イベントを印刷マクロにする。 (6)フォームBより印刷コマンドをクリックして、印刷開始する。

  • access2007 情報入力フォームの作成につい

    メインメニューのレイアウトで、情報入力ボタンと印刷ボタンを設定してあります。 情報入力ボタンをクリックすると「担当・顧客選択メニュー」に移ります。 「担当・顧客選択メニュー」の構成は 担当営業の選択 → コンボボックス 顧客情報(概要) → サブフォーム(担当営業コードで連結) となっており、担当営業を選択すると担当顧客がサブフォームに表示される 様になっています。 サブフォーム上の顧客番号をダブルクリックすると 「顧客情報入力フォーム」の同一顧客番号の情報へと移動し、顧客情報の 追加や編集がでいる様になっています。 今まで、直接「顧客情報入力フォーム」をあけると、画面下のレコード移動ボタンが 1/XXXXとなり、全顧客数と表示されている顧客が何番目の顧客であるかが 表示されていました。 今回、「担当・顧客選択メニュー」から上記の方法で「顧客情報入力フォーム」を 開けるとレコード移動ボタンの表示が1/1となり、その右にフィルタ適用と表示 されます。これの理屈は理解できるのですが、レコード移動ボタンを押すと 2/2となり、真白なブランクフォームが表示されてしまいます。 また、「担当・顧客選択メニュー」からダブルクリックで「顧客情報入力フォーム」へ 移動すると、同一顧客番号で移動しているはずが顧客番号がブランクの画面が 表示されてしまいます。「戻る」ボタンで再度同じ事をやると、今度はちゃんと 表示されます。 これがなぜそうなってしまうのか全くわかりません。 フィルタがかかっている状態で2/2となるのはなぜなのか、 ダブルクリックで同一顧客番号へ移動するはずが顧客番号なしのブランクフォームが 表示されるのはなぜなのか? お心当たりのある方、改善策のヒントを頂ければと思っております。 宜しくお願い致します。

専門家に質問してみよう