• ベストアンサー

ACCESSの作り方

現在ACCESS2003で社員名簿を作ろうと思ってます。 やりたいことは ○ 社員1人ずつ住所、生年月日などを入力する ○ 社員本人だけではなく家族の分も同じく住所、生年月日などを入力する ○ 入力する順番はいろんな世帯があるのでバラバラになる(続けて同じ世帯の人を入力するとは限らない) ○ 最終的にその世帯の個人情報をまとめてレポートで表示させたい と、いうことで住所と苗字が同じなら一つの世帯とみなすように考えているのですが、これをどのように設定したらよいのかわかりません。 どなたか教えていただけませんでしょうか? どうかよろしくお願いいたします。

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

  • ベストアンサー
noname#60992
noname#60992
回答No.5

どうしてもひとつのテーブルで作りたいなら(私だったら) 社員ID 開始日 終了日 氏名 住所 電話 本人家族区分 続柄 親ID 扶養区分 扶養開始日 扶養終了日 ........ のような形で作ると思います。 レポートに一家族分表示させるためには、 以下のようなクエリで対応します。 SELECT 社員テーブル.社員ID, 社員テーブル.社員ID, 社員テーブル_1.氏名 FROM 社員テーブル LEFT JOIN 社員テーブル AS 社員テーブル_1 ON 社員テーブル.社員ID = 社員テーブル_1.親ID WHERE 社員テーブル.社員ID="1" AND 社員テーブル.社員ID="本人"; 一家族に二人の社員がいる際の扱い方や、一度退職して就職した際の運用方法を考えておく必要があります。 社員IDというものがないなら、適当に一意の番号を振ればよいと思います。

kazuya80
質問者

お礼

ありがとうございます。 参考にさせていただきます。 またわからないことがあれば教えてください。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • nfushi
  • ベストアンサー率31% (39/122)
回答No.7

No.3です。 [入力フォーム] ・名前[テキストボックス] ・住所[テキストボックス]] ・電話番号[テキストボックス] [管理フォーム] *社員選択* ・名前[コンボボックス] *家族選択* ・名前[コンボボックス] フォームは上記の2つ用意します。 通常は入力フォームを表示させ、作業者に入力を行わせます。 人テーブルへ入力情報を挿入します。 管理者フォームは限定された人しか見れないようにします。 ここで行うのは社員テーブルと戸籍テーブルへの登録。 管理フォームには社員選択と家族選択を別々に行います。 社員選択のコンボボックスのデータソースは入力テーブルです。 入力フォームで入力したデータがここに表示されます。 社員を選択して決定ボタンを押すと、社員テーブルに入力テーブルの人IDを挿入します。 家族選択欄では、社員選択欄で選択した社員に対しての家族を選択します。 例えば、「太郎さん」、「次郎さん」、「花子さん」が入力テーブルに登録されているとします。 彼らの人IDを仮に、0001、0002、0003とします。 まず社員選択欄のコンボボックスから「太郎さん」を選択します。 内部的な処理では0001を取得しておきます。 次に、家族選択欄のコンボボックスから「花子さん」を選択します。 決定ボタンを押すと、社員テーブルには[0001]が挿入され、戸籍テーブルには、人IDに[0003]、社員IDに[0001]を挿入します。

kazuya80
質問者

お礼

ありがとうございます。 今の私にとってはちょっと難しそうですが参考にさせていただきたいと思います。 またわからなければ教えてください。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
noname#60992
noname#60992
回答No.6

ANo5の WHERE 社員テーブル.社員ID="1" AND 社員テーブル.社員ID="本人"; ↓ WHERE 社員テーブル.社員ID="1" AND 社員テーブル.本人家族区分="本人"; でした。 申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.4

>○ 入力する順番はいろんな世帯があるのでバラバラになる(続けて同じ世帯の人を入力するとは限らない) >ちなみにテーブルの件ですが、できれば入力の段階では社員と家族の区別はつけず、一つのテーブルで全て入力していきたいと思っております。 この2つの発言から気になったのですが、 入力はフォームを作ってそこで、という風に考えていますか? それともテーブルに直接入力させようとしているのでしょうか? ※通常は前者で考えるのですが、もしや後者で考えているのでは、と邪推したもので。 それと、電話番号をキーにする話がありますが、 電話番号も以外に入力がブレやすいので注意が必要です。 ハイフンが入ったり、市外局番を省略して入力されたり… すると本来は同じ番号が簡単に別の番号になってしまうので注意が必要です。 「0123456789」と「01-2345-6789」は別番号と認識されます。 あと、引越した場合は電話番号が変わるので、その対応も必要です。 さらに言うと、社員はみんな自宅電話番号を持っていますよね? 携帯しか持っていない家庭の場合、家族でもそれぞれ番号が違いますから、 最悪、「社員名簿ができないから固定電話を引け」というムチャクチャな話になってしまう… 個人的には社員番号があればそれを使うのが良いと思います。 ※もし社員番号がない場合でも、許されるなら社員番号で管理するように変更していくことをお勧めします。 そうすれば、社員テーブルは社員番号を、家族テーブルは社員番号と続柄(妻、夫、長男など)を それぞれキーにする、といったことができます。(でも続柄を使うのも問題ありますね…) いずれにしても、やり方はいろいろありますので、実際に使った時に不具合の起きないようにすることが必要です。 余談ですが、 >住所と苗字が同じなら一つの世帯とみなす これは絶対NGです。 二世帯同居の場合、同じ住所でも苗字が異なる可能性があり、 家族と識別できないからです。

kazuya80
質問者

お礼

ありがとうございます。 現在フォームを一つだけ作っておりまして、そこで全ての入力をしたいと考えておりました。 今回は会社の諸事情で社員番号を使うことができない状態にあります。 ただ、続柄を使うのは問題ないのですが^^; 入力する者もデータを見る者もその世帯の誰が社員で誰が家族かはわからないようにしなければならないのです。 もしよろしければまた教えてください。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • nfushi
  • ベストアンサー率31% (39/122)
回答No.3

解答の1つとして見てください [人テーブル] 人ID 名前 住所 生年月日 [社員テーブル] 人ID [戸籍テーブル] 人ID 社員ID 人テーブルには社員、家族関係なく人の情報を入れる。 名前、住所、生年月日を入力するフォームを作成し、人IDは連番でふらせます。(削除、修正はとりあえず考慮しない) 社員テーブルには社員の人IDのみを登録。 これは人テーブルにある名前をコンボボックスかなんかで選択させるだけのフォームを作成します。 このテーブルの代わりに人テーブルに社員フラグをつけるだけでも良いです。将来的に社員の情報をいれることを考えて別のテーブルにしました。 この2つのテーブルを利用して戸籍テーブルに登録するフォームを作ります。社員テーブルの一覧から一人を選び、人テーブルの一覧から複数人を選択させる(一人ずつでもいい)方法が考えられます。 (人IDは人テーブルから、社員IDは社員テーブルから) リレーションに使うのは人IDです。 電話番号や住所などは変わる可能性があります。 名前だって婚姻すれば変わります。 リレーションに使うのは一意に決まる普遍なものです。覚えておいてください。

kazuya80
質問者

お礼

ありがとうございます。 非常にわかりやすかったです。 今回、会社の諸事情により入力された人が社員なのか家族なのかわかるのはごく一部の者で、入力する者やデータを見る者はその世帯の誰が社員で誰が家族なのかはわからないようになっております。 ということは社員テーブルを作るのは難しいと思うのですがいかがでしょうか? リレーションに人IDというのは普遍的でよさそうですね。 もしよろしければまた教えてください。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.2

「ちなみにテーブルの件ですが、できれば入力の段階では社員と家族の区別はつけず、一つのテーブルで全て入力していきたいと思っております。」  一緒にしてしまうと家族データも住所を入力する必要が出てきてしまうので、意味がないのです。社員テーブルに氏名、住所、生年月日、自宅電話番号を入れます。それと別に家族テーブルを作り、そこには氏名、生年月日、自宅電話番号だけを入れます。  自宅電話番号は、世帯を識別するキーになるので、クエリーで両者を紐付け、社員に紐付いた家族を一緒にレポートとして出力できるようにするのです。(複数のテーブルを共通項目で結びつけて、重複データを極力減らし、情報を管理するのがリレーショナルデータベースの役割=存在意義ですから。)  で、この説明や専門用語がちんぷんかんぷんの状態でしたら、Accessの入門本を読むことを強く推奨します。実現するにはテーブル、クエリー、入力用フォーム、レポートなどを作る必要があると思いますが、それをこのWeb上で文字だけで分かりやすく説明するのは、現実的ではないので、図解された解説書を参考にして欲しいと思います。

kazuya80
質問者

お礼

ありがとうございます。 実は諸事情がございまして、社員かどうかわかるのはごく一部の人間で、入力する者や実際にデータを見る者は誰が社員で誰が家族かはわかりません。 ですので入力は一つのフォームで行い、多少重複しますが住所、電話番号なども全て入力する形をとりたいと思っております。 その上でバラバラに入力された情報の中から世帯ごとにまとめていきたいと思っております。 最低限のテーブル、クエリー、入力用フォーム、レポートなどを作ることはできるのですが、複雑になってくるとどのように設定したらよいのかわからなくて質問してしまいました。 もしよろしければまた教えてください。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.1

 基本的には、社員だけのテーブルと家族だけのテーブルに分け、クエリーで両者間を結びつければよいと思いますが、そのリレーションには、自宅の電話番号を使うのが良いと思います。住所では表現が異なったり、名字でも旧字体があったりしますので、電話番号で紐付けるのが良いと思います。ですの、家族データは氏名と生年月日と自宅電話番号だけを入力すれば良いと思います。  この段階で、「クエリーって何?」「リレーションって何?」ということであれば、自分のレベルに合った参考書の購入をお勧めします。

kazuya80
質問者

お礼

アドバイスありがとうございます。 住所ではなく電話番号で結びつけるのですね! そのほうが一つで済むので簡単ですね。 ありがとうございます。 ちなみにテーブルの件ですが、できれば入力の段階では社員と家族の区別はつけず、一つのテーブルで全て入力していきたいと思っております。 ですので、この場合ではひたすら入力をして、電話番号が一致するものを一つの世帯とみなしてまとめて表示させるということなるのでしょうか? だとすると、それには一体どのようにするとよいのでしょうか???

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アクセスでレポートに和暦を表示させるには

    アクセスで社員名簿を作成しています テーブルを 社員名  ○○○○ 生年月日 1953/09/18 生年月日 空欄 フォームは 社員名  ○○○○ 生年月日 1953/09/18 和暦   昭和28年09月18日      ↑生年月日を入力すると自動で表示されるようにしました レポートは 社員名  ○○○○ 生年月日 1953/09/18 和歴   空欄 上記で理解して頂けるか大変不安ですがフォームで和暦を手入力していないのでテーブルに反映しません それに伴ってレポートも表示されません どうしたらレポートへ和暦を表示することが出来るのでしょうか

  • アクセス2007について

    アクセス2007について 名簿作成に使用しておりますが、おかしなことになってしまいました。 テーブルに「個人名」「会社住所」があり、フォームには「所属会社」(コードで分かれている)があります。 「個人名」テーブルに異動情報等を入力していき、 最終的に「名簿」レポートにてプリントアウトしています。 (レポートは、「個人名」や「所属会社」「会社住所」のデータがそれぞれ表示されるようになっています) 「個人名」テーブルをいじっていた時に、 同テーブル内の「所属会社コード」欄(数字入力)に「¥」を入力してしまい、 「数字を入れてください」のようなアラートが出たのですが、 あわててしまい、そのままエンターか何かを押してしまいました。 すぐさまCtrl Zで戻そうとしたのですが、 なぜか「個人名」テーブルのフィルタが解除されました。 「名簿」レポートを開こうとしても「式で形が一致しません」とアラートが出てしまい、開けません。 フォーム「所属会社」も同様に開けません。 「式が正しく入力されていないか、複雑すぎるために評価できません。 たとえば、数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にしてください。」 というアラートが表示されます。 変数ってどこを見ればいいのでしょうか? 数式もどこに表示されているのかわからなくて、もうお手上げです。 情報不足で申し訳ありませんが、何らかの解決策をどなたか、お願いします。

  • リレーションで?

    ACCESS 2003を使って作成中なのですが、どうしてもわからないところがありましたので教えてください。 現在テーブルで、 「世帯テーブル」 ○ 世帯ID ○ 郵便番号 ○ 住所 ○ 電話番号 「個人テーブル」 ○ 世帯ID ○ 個人ID ○ 氏名 ○ 生年月日 ○ 性別 「詳細テーブル」 ○ 世帯ID ○ 個人ID ○ その他 とし、フォームで 「世帯フォーム」 ○ 世帯ID ○ 郵便番号 ○ 住所 ○ 電話番号 「個人フォーム」 ○ 世帯ID ○ 個人ID ○ 郵便番号 ○ 住所 ○ 電話番号 ○ 氏名 ○ 生年月日 ○ 性別 「詳細フォーム」 ○ 世帯ID ○ 個人ID ○ 郵便番号 ○ 住所 ○ 電話番号 ○ 氏名 ○ 生年月日 ○ 性別 ○ その他 というようにして、世帯IDでリレーションしてます。 入力の順番は、まず「世帯」に入力し、それから「個人」に入力し、最後に「詳細」に入力したいと思ってます。 そこで、個人フォームを入力するときに世帯IDを入力すると自動的に郵便番号、住所、電話番号が入力され、詳細フォームで入力するときに世帯IDと個人IDを入力すると該当項目が全て自動的に入力されるようにしたいと思ってます。 その場合、テーブルとフォームは作って世帯IDでリレーションするところまでいったのですが、ここから先どのようにしたらよいのかがわかりません。 どなたかお力を貸していただければと思います。 どうぞよろしくお願いいたします。

  • アクセスのクエリ

    教えてください。 アクセスのクエリの作成ですが、生年月日が入っている名簿があるとします。ここである期間の生年月日の名簿だけ抽出するようなクエリはどうすれば組めるのでしょうか? ある期間は、その都度、たずねてくる様にしたいのです。 例えば、期間初めは? 1963/1/1  期間終わりは? 1678/1/1 と入力すれば該当する名簿が出てくるようにしたいのです。 よろしくお願いします。

  • Access97での日付表示について

     今、Excelで作っていた名簿をAccess97を使って管理ができるようにしています。 Excelでは"3061222”とデータが”昭和6年12月22日”とMID関数を使って表示されるようになっていました。  Accessのフォームやレポートでも同じ様なことは出来ないでしょうか?いったん生年月日だけ入力し直すとか考えたんですがデータの量が半端でないので何とかしたいのです。  すみませんが分かる方ご教授お願いします。

  • アクセスのレポートで…(´`)

    アクセス初心者です。 履歴を含む、顧客のデータの登録原簿を作っています。 最終的に、この登録原簿をレポートで印刷できるようにしたいと考えています。 レポートはA4の用紙を縦に使用し、上下半分ずつに分け、上部に顧客に関するデータを、下部には顧客の注文年月日と注文番号を表示したいと考えています。 この注文年月日と注文番号は、随時増えていくものなのですが、このデータが縦に、順番に増えつづけると、レポートがすぐにいっぱいになり、顧客1人に対して、レポートが、2枚、3枚と増えていく事になります。 そこで、注文年月日と注文番号のデータだけ、2列、もしくは3列に表示できるようにし、ある一定の数までデータがたまったら、横の列に移動し、続きのデータが蓄積されるようにしたいのですが、そういった事は可能でしょうか? もし、方法をご存知でしたら、ぜひぜひ教えてくださいm(_ _)m切実です。よろしくお願いします。

  • accessで条件ごとにレポート印刷をしたい

    accessは初心者です。 顧客名簿テーブルを基に会社別にレポート印刷をしたいと思っています。 会社別にレポート作成、若しくは会社名を入力ごとに検索抽出しレポート作成をしたいと思っています。 どのようにすれば出来るのでしょうか? どなたか教えていただけますでしょうか。宜しくお願いいたします。 テーブル:顧客名簿 フィールド:会社名,氏名,住所,TEL,備考 レポート名:リスト

  • Accessの抽出条件がうまく作れず困っています

    Access2003で、町内会のデータベースを作っています。 各世帯を1レコードとし、家族名と生年月日をそれぞれフィールドにしています。 (例:家族1,家族1の生年月日、家族2、家族2の生年月日・・・) 子ども会の対象者を生年月日をもとにクエリで抽出しようとしています。 家族構成によって、家族1、家族2などの各フィールドに対象者が混ざっているため、クエリの「または」欄を使い、各生年月日フィールドの抽出条件に「>#2002/04/01#」と入力したところ、家族1は非対象者でも、家族2が対象者の場合、家族1の名前が抽出データに入ってしまい困っています。 (世帯によっては家族1に対象者がいるため表示になっているからで当然すよね…) 家族1、家族2の各フィールドの純粋に対象者のみ抽出するには、どのような条件式を入力すればいいでしょうか? 夏休みのイベント案内のため、早急にやらねばならず本当に困っています。 お知恵を拝借いたしたく、どうかお願いいたします。

  • access2000で名簿を作っているのですが・・・

    アクセス自体の初心者です。よろしくお願いします。 テーブル:団体名      個人名簿      地区名      住所一覧  を作ってあります。 (1)団体名のサブデータシートに個人名簿をつける。 (2)地区名のサブデータシートに住所一覧をつける。 (1)、(2)まではできました。 ここからが質問です。 a)個人名簿の地区名フィールドで地区名を選択すると、住所フィールドで地区名のサブデータシートを見られるようにしたい。  今現在の設定では、住所フィールドに住所一覧のすべてのデータが表示される状態です。 b)さらに、住所を選択すると郵便番号が自動的に入力されるようにしたい。  住所を手打ち入力すれば郵便番号は入力されるし、郵便番号を入力すれば住所も出るのだけど、今のまま住所を選択しても郵便番号は自動入力されない。 c)団体名のサブデータシートを一枚ずつ表示して、印刷できるようにしたい。(団体名ごとに個人名簿を表示印刷したい。)  以上、質問自体をわかっていただけるかどうか不安ながらも、ご指導よろしくお願いします。

  • アクセスレポートで空白行の削除

    会社で社員名簿を作りたいのですが、社員とその家族も併せて掲載することになりました。問題なのが家族の人数がバラバラなため、余分な空白ができてしまいます。アクセスのレポートで家族が少なければその分のスペースは詰めた形で表示させることは可能でしょうか? 家族の人数は最少で0人で最大9名です。よろしくお願いします。