
人事管理ソフトを作成中です。
社員の登録フォームにて、学歴や職歴を登録するフォームがあるのですが、一度に複数の情報をテーブルに保存することは可能でしょうか。
例えば、学歴だと高校から大学院卒業までを1度の登録画面で登録できるようにしたいです。
学歴テーブルと職歴テーブルそして社員テーブルは作成しました。
ちなみに学歴テーブルと職歴テーブルは他のソフトから引っ張ってきているため縦に履歴があります。
例えば、
社員番号 大学名 学部 学科
1004 ○○大学 ○○学部 ○○学科
○○高校 ○○学部 ○○科
・
・
・
1007・・・
のように下にデータを積み上げています。
私が行いたいことは、
学歴や職歴など複数のデータがあるものは登録画面から1度で登録できるようにしたいとうことです。
わかりにくい質問かもしれませんがどなたか回答をお願い致します。
No.3ベストアンサー
- 回答日時:
社員テーブル(社員番号、氏名)、学歴テーブル(学歴コード、社員番号、学校名、学部、学科)、職歴テーブル(職歴コード、社員番号、会社名、入社日、退社日)のように、3つのテーブルを作ります。
()内は、テーブル内のフィールド名です。社員テーブルの社員番号を主キーとします。学歴コード、職歴コードもそれぞれのテーブルの主キーにします。(基本的にテーブルには主キーを作るのが基本です。)社員テーブルの社員番号と学歴テーブルの社員番号、職歴テーブルの社員番号とそれぞれ、1対多のリレーションシップを作成します。リレーションシップは、リボンのデータベースツールメニューのリレーションボタンをクリックして表示される画面で設定します。
次に、夫々のテーブルを元にフォームを作成します。
社員テーブルについては、単票形式、他は、表形式で作成します。
ここで、学歴、職歴テーブルのフォームには社員コードのフィールドを含める必要はありません。
社員テーブル単票形式フォームを開き、空白部分に、他の二つの表形式フォームをドラッグして、フォームーサブフォームの関係を作ります。
これで、社員フォーム上で、社員テーブル、学歴テーブル、職歴テーブルが社員コードで連結されたことになります。
ここで、入力に際し、注意が必要です。
最初に、社員名から登録する場合、学歴、職歴を入力する前に、Shift-Return操作で、一旦社員名データを確定して社員テーブルに格納する必要があります。そうしないと、社員コードの主キーが確定していない状態、関連データが入力されてしまい、それぞれがリレーションシップの取れない状態で、格納されてしまいます。これを回避する為、私の場合、サブフォームにフォーカスされた時点で、強制的に保存処理(DoCmd.RunCommand acCmdSaveRecord)されるようにプログラムしています。この点に注意して入力して貰えれば、目的は達せらる筈です。
但し、既存の別ソフトのデータを取り込みたいのであれば、データの正規化が必要になりそうですので勉強してください。
No.2
- 回答日時:
>>学歴や職歴など複数のデータがあるものは登録画面から1度で登録できるようにしたいとうことです。
さしあたって2つ考えることがありますね。
1.画面レイアウト
2.データ更新方法
1.の社員1人にたいして最終学歴だけなら1行におさまりますが、中学、高校まで表示させたら複数行になります。
また、職歴も複数行になる方も多いでしょう。
2.のデータ更新も、更新対象が複数テーブルになっているようですね。
1.はデザインの問題もありますけど、それをいかに実現するか?というプログラムの問題になります。
また、複数のデータ(テーブル)に書き込まれているなら、それぞれに書き込む処理をするプログラムが必要となります。
一般的には、この手のプログラムは面倒で複雑になることが多いです。
そのため、ソフト会社では、そういう処理を楽にする部品ソフトをグレープシティというソフト会社などから購入して利用するケースが多いようです。(1年間 開発ライセンス 156,800 (税抜) )
ただ、この手のソフトは、一般的にAccessではなく、C#やVBやC#を利用して作ることが多いので、Accessに対応しているかは不明です・・・。
No.1
- 回答日時:
えっと。
。。画面入力のデザインのお話と、画面で入力されたデータをサーバー上のデータベース・テーブルに格納するお話をごちゃごちゃに考えておられるように受け取れます。
処理としては・・・
(1) 社員の学歴を入力する画面を表示する際、一つ前の画面か学歴入力を行う場面で社員番号を入力すると学歴テーブルを参照してそこに該当社員の学歴データがあればその内容を入力欄にセットした入力画面を表示。
(2) 表示された画面に対し操作者は必要に応じて入力操作を行い「登録」ボタンを押すなどしたら画面上にセットされた値を学歴テーブルに格納。その際、既に学歴テーブルに値があるものに関しては画面入力された値に置き換える。(=追加ではなく更新を行う)
・・・というだけのことかと思います。ご質問の文面から想像する限りはです。
参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft 365 Basic サブスク...
-
列が255以上のCSVファイルをAcc...
-
Accessでレポートを印刷する時...
-
Microsoft365にAccessってあり...
-
Accessのクエリで、replace関数...
-
Accessのリンクテーブルのパス...
-
アクセス レポートを開いたとき...
-
Access DAOのExecuteメソッドの...
-
アクセス ステップインのやり方
-
実行時エラー3131 FROM 句の構...
-
「テキストデータで送ってくだ...
-
access2021 強制終了してしまう
-
ACCESS VBA でのエラー解決の根...
-
Accessのフォーム上のテキスト...
-
Access IF文でテーブルに存在し...
-
Accessのスプレッドシートエク...
-
access2021 VBA メソッドまたは...
-
access2019の起動が遅い
-
Accessでフォームに自動入力し...
-
accessの代わりになるもの
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフォームのテキストボ...
-
AccessVBA SetFocusとGoToCon...
-
初心者なのですが・・・access...
-
Accessのフォームで計算した結...
-
access2019 コンボボックスの値...
-
Access フォームの参照先について
-
アクセスのデータをCSVファイル...
-
Access97のフォームで一人につ...
-
Accessでアンケート集計を構築...
-
複数の条件にあてはまるものを...
-
accessについてです。
-
Access2002のリレーションにつ...
-
差込印刷での全角表示について...
-
日付型のフィールドに空白を入...
-
アクセスのエラー「クエリには...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
Accessで、1つの項目に複数の...
-
ACCESS クエリの抽出条件に他の...
-
アクセスで追加した項目に全て...
おすすめ情報