スマートなアクセス構築方法

このQ&Aのポイント
  • 初心者でもわかりやすいアクセスの構築方法を教えてください。社員番号や所属コードを入力すると、関連する情報が呼び出される仕組みを作りたいです。
  • 現在のアクセス構築において、部署名の変更や異動がある場合にデータの修正が必要です。これを解決するために、スマートなアクセス構築方法を教えてください。
  • アクセス構築における1と2のテーブルの結合や3のテーブルのフォーム作成に関して、問題が発生しています。過去のデータを修正せずに、バリエーションのあるアクセス構築方法を教えてください。
回答を見る
  • ベストアンサー

アクセスの構築、スマートなやり方教えてください。

初心者でうまく説明できないかもしれませんが、 添付アクセスでNo1,2,3とテーブルをクエリでフォームを作りました。 1の社員番号を入力すると名前が呼び出され、 2の所属コードを入力すると部署。。。が呼び出されます、 3は資格コードをいれると資格名。。。が呼び出されるようにしました。 1にも所属コードを入力してあり1と2のリレーションを所属コードで結んでます、 これで困ったのが社員番号は変わらないのですが、所属コードは部署名が 変わったり変わったり人も部署の異動で変わります、 このままだと、部署の異動があった場合、入力してあるデータの修正が必要に なります、 次にやったのは1と2を一つのテーブルにしました、しかし、これも部署名が変わった時 社員数分変更をしなければなりません、本当なら変わった部署を修正し1と2をあとで 一緒にできるといいのですが、 1と2のテーブルをクエリで一緒にして3のテーブルと合わせてフォームを作ったところ 入力ができなくなりました、 添付の1と2を別なテーブルで出来て、部署名など変更になったり、部署の異動の時 過去のデータを修正せずにすむ構築教えてください。

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • 84338433
  • ベストアンサー率100% (1/1)
回答No.2

1つの部署に対していくつかに枝分けれするならば、すべてをばらばらにしてデーターの一元性をたもたさなければなりません。最終的に報告書としてまとめるにはそれぞれのコードに対して名前付けが必要になりますから、名前付けの手段としてそれぞれに関連づけてクエリーを幾重にもつくり、その最後のものを実行するだけで目的がはたせるようにしなければなりません。とにかく私の危惧しているのはデーターベースを作成する際の方法です。何件の社員、部署、資格があるのかわかりませんがそれぞれを間違いなくコードだけで入力していくことができるのかという点です。もし件数が多いのならその方法を構築していく必要があります。

その他の回答 (1)

  • 84338433
  • ベストアンサー率100% (1/1)
回答No.1

テーブルは次の4つにする 社員: 社員番号、社員名 資格:資格コード、資格名 所属:所属コード、所属名 社員履歴:社員番号、資格コード、所属コード、日付 クエリーを次の3段階を作り、実行は常に第3段階のものを実行する。(第1、第2のクエリーは自動的に行われますので不要) 第1段階社員名名付けのクエリ作成・・・テーブル社員履歴とテーブル社員でクエリーを作成。社員番号でリレーション 第2段階資格名名付け・のクエリー作成・・・第1段階社員名名付けのクエリーとテーブル資格名でクエリ作成。資格コードを結合プロパテイーで結ぶ。社員名名付けの全レコードと資格名の同じ結合フイールドのレコードだけを含めるを選択してクエリーの作成 第3段階所属名名付けのクエリー作成・・・第2段階資格名名付けのクエリーとテーブル所属でクエリ作成。所属コードを結合プロパテイーで結ぶ。第2段階資格名名付けの全レコードと所属の同じ結合不イールドのレコードだけを含めるを選択してクエリーの作成。 これで質問の問題点は解決です。 テーブルの社員履歴は社員が入社してから退社するまでの記録ですから資格修得や転属の日付別に履歴を記録していくことが必要です。 しかしこのテーブルの日々の記入はすべてこのテーブルの項目にじかに直接入力ができるのか心配です。なぜなら社員の数、資格の数、所属名の数が不明ですので、少数であれば何にも問題がないですが、多い場合は入力時の方法を再考しなければなりません。とういのはそれぞれ番号と名前の一致性に自信をもってデーター入力がおこなわなければならないからです。

lotsqq
質問者

お礼

いろいろありがとうございました。 試してみましたがちょっとできませんでした

lotsqq
質問者

補足

84338433さん ありがとうございます、 やり直してみます、その際ですが所属は部署、課、チーム、班とfieldを分けていましたが 合体した方がいいでしょうか?分けたのは、見やすいかなと思ったためです、部署で知りたい場合、課で知りたい場合など、レポートにする時分かりやすいのかなと思ったやめです、 よろしくお願いします

関連するQ&A

  • Access2002 2つのテーブルのマージ方法

    いつもお世話になっております。 クエリについてお聞きします。 現在、2つのAccessDBが稼動しており、それを1つにまとめる作業をしています。 2つのDBには似通ったテーブルが存在し、それをマージする方法で悩んでいます。 テーブルA ・社員番号 ・社員氏名 ・フリガナ ・会社コード ・部署コード テーブルB ・従業員コード ・従業員名カナ ・従業員名 ・所属コード フィールドの定義としましては、 社員番号=従業員コード 社員氏名=従業員名 フリガナ=従業員名カナ 部署コード=所属コード となります。 全てテキストのレコードです。 これを、テーブルAを正にして、テーブルBのデータをAにマージしたいのです。 要件としましては、 1.テーブルAに存在する社員コードにマッチするレコードはそのまま残す(Bのデータは無視) 2.テーブルAに存在せず、Bに存在するものをAに追加する ということです。 クエリを使って色々試しましたが、どうしてもテーブルAに存在するものもアップデートしてしまい、困っています。 どなたかご教授願えれば幸いです。 よろしくお願いいたします。

  • Access2000で複数の検索項目を作りたいのですが・・・

    こんにちわ。 今、Accessで社員録を作成しているんですが、複数の検索について教えて下さい。 ■テーブル テーブル名:社員録 フィールド名:ID・検索名・氏名・所属ID・所属 ■クエリ クエリ名:社員録クエリ フィールド名:ID・検索名・氏名・所属ID・所属 検索名抽出条件:検索名フィールド: Like [Forms]![社員録 縦]![けんさく]         所属フィールド: Like [Forms]![社員録 縦]![抽出検索名] ■フォーム フォーム名:社員録フォーム:テキスト1・テキスト2・ボタン1       社員録サブフォーム:データソース:社員録クエリ テキスト1:所属を入力 テキスト2:検索名を入力 ボタン1:マクロの再クエリを実行する ■ここからが質問です■ (1)テキスト1又は、2が空白のとき社員録全体から検索かフィルタ。 (2)テキスト1・2が、入力されてる時、両条件から検索かフィルタ。 をしたいのですが、何かいい方法がありましたら教えて下さい。 説明が、長くなってしまってスミマセン。。。

  • Access アクセスについて

    Accessでデータベースを作っています。 テーブル、クエリは下記のようになっており、リレーションシップで紐付けしてあります。 クエリからフォームを作成し、商品番号を入力することでマスタテーブルに登録されていれば自動で商品名等の情報が表示されるようになっています。(フォーム1) 商品番号を入力しカーソルが移動した時、マスタテーブルに該当する項目がなかった場合、マスタテーブルから作成した新規追加用のフォームが表示されるようになっています。(サブフォームではありません) 新規追加用フォームに商品名を入力し、閉じてもフォーム1の商品名の欄に反映されません。新規追加用フォームを閉じる時にVBAで”Requery”,”Refresh”もやってみましたがダメでした。商品番号を入力し直すと表示されます。 どうすれば自動で商品名が表示されるようになるか教えてください。 テーブル1(入力用) 1.ID(主キー) 2.商品番号 3.etc. テーブル2(マスタテーブル) 1.商品番号(主キー) 2.商品名 3.etc. クエリ 1.ID(テーブル1) 2.商品番号(テーブル1) 3.商品名(テーブル2) 4.etc.(テーブル2) 5.etc.(テーブル1)

  • アクセス2010の操作について

    こんばんは! アクセス2010を勉強しておりますが、さまざまの本を読んでもインターネットで検索しても、なかなか基本を理解できず又周囲にも質問できる人がいなく困っております。 以下の内容について数点の質問をさせて頂きますのでご指導をお願いいたします。 作成内容。 社員の成果を入力できるフォームを作成したく、保存したいデータは社員名、社員コード、成果です。社員名は、コンボボックスから選択を行いたい。(できれば社員名を表示すると、自動的に社員コードも表示したいのですが)以下の方法で作成したのですが、うまくできません(質問項目は下段です) ~作成の流れ~ 〇テーブルを作成・・・以下の2つのテーブルを作成し社員データを予め入力。 ・社員マスタ・・・・・・(フィールドは2つ)  「社員名」(テキスト型)  「社員コード」(テキスト型) ※主キー ・入力テーブル・・・・(フィールドは3つ)  「ID」(オートナンバー型)  「社員コード」(テキスト型)  「成果」(テキスト型) ※主キー 〇「社員マスタ」「入力テーブル」の2つのテーブルからクエリを作成。  ・社員コード同士を結合線で結ぶ(自動的に結ばれます)    (フィールド)  ID            社員名     社員コード   成果  (テーブル)   入力テーブル   社員マスタ  社員マスタ   入力テーブル 〇作成したクエリを基にフォームを作成  社員名をコンボボックスから選択できるように変更(値集合ソース→社員マスタ)  社員名をコンボボックスから選択し、社員コードを入力。成果を入力しようとすると。  入力できません。 (質問です)  (1)成果を入力するためにキーボードを押すと、文字が出ずにエラーメッセージ「レコードを追加でき ません。テーブル"入力テーブル"の結合キーがレコードセットにありません」と表示されますがなぜ でしょうか?  (2)、(1)でエラーメッセージが出ても保存を押すと、新規入力画面のコンボボックスに先ほどの入力 内容が追加されてしまうがなぜでしょうか?  (3)クエリとリレーションシップの使い分けの判断は?(今回はクエリから結合線で結びましたが、リレ ーションシップでも似たような事ができます)  (4)入力テーブルのフィールドは上記の3つでよろしいのでしょうか?  (5)このようなものを作成する時の手順を教えて頂けると非常に助かります。 よろしくお願いいたします。  

  • ACCESSのクエリ

    ACCESS初心者です。 部署計画のテーブルに部署コードしかないため、(例えば人事部は部署コードの10しか表示されません)クエリを作成して、部署名というテーブルから部署名を表示する様に作ってみました。 クエリの内容はたくさんあるので省略すると以下の様な感じです。 フィールド⇒ 計画年度  部署コード  部署コード  部署名  テーブル ⇒ 部署計画  部署計画   部署名    部署名 表示   ⇒  レ      レ    非表示     レ 単に部署名を単語で表したかっただけなのですが、クエリでは、7割くらいのデータしか表示されません。値要求も特にしていません。 全てのデータを表示させるには、どこを変更したらいいか教えて下さい。 よろしくお願いします。

  • Access2000の挿入方法を教えてください。

    Access2000を使用。 「社員テーブル」(社員コード、氏名、資格コード) 「資格テーブル」(資格コード、資格名) 「入力フォーム」(社員コード、氏名、資格コード) があります。 同じコード同士が関連付けしています。 フォームで資格コードと資格名を表示させたいと思っています。 表示はプロパティで連結列を使用し、表示が可能となりました。 しかし、このまま、テーブルへ挿入してもエラーが発生し、 追加することが不可能となっています。 連結列を使用せず、表示させる方法はどうすればよいのでしょうか? また、連結列を使用して追加する場合の方法はどういうのがありますか?

  • Access2002のリレーションについて。

    販売管理のデータベースを作成しています。 『販売店マスターテーブル』 販売店コード(主キー) 販売店名 郵便番号 住所 電話番号 営業担当者コード 『営業担当者テーブル』 営業担当者コード(主キー) 営業担当者名 『販売伝票テーブル』 伝票番号(主キー) 売上日 販売店コード この中で、『販売店マスターテーブル』から、販売店コード,販売店名,郵便番号,住所,電話番号,営業担当者コードを、 『営業担当者テーブル』から、営業担当者名を使って、新しいクエリを作成しました。 そのクエリを基にフォームを作成しましたが、フォームに新規レコードを入力できません。 念のため、販売店コードを『販売伝票テーブル』からとってきたら、新規レコードが入力できるようになりました。 これは、何か主キーの関係で入力できないんでしょうか。 もし、『販売伝票テーブル』から販売店コードをとらなくちゃいけないとしたら、それはナゼでしょうか・・。 初歩的なことで申し訳ありませんが、とても困っています。 どなたかお分かりになる方、教えて下さい。 よろしくお願いします。

  • アクセス2007について

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

  • Access マスターテーブル

    Accessについて。 テーブル1がID(主キー)、注文日、商品番号、納期など入力欄の項目で、テーブル2が商品番号(主キー)、商品名で商品のマスターテーブルになっています。 商品番号を入力すれば商品名が表示されるようにクエリを作成し、そのクエリからフォームを作っています。 ここまでは良いのですが、新しい商品番号を入力したときに限りフォームから商品名も入力する事でマスターテーブルに登録されるようにしたいのですが、どうすれば良いでしょうか?

  • Access もっと簡単な抽出方法はありますか?

    お世話になります。 Access2010 抽出方法についてご教示下さい。下記のテーブルがあります。 <社員テーブル> 社員番号 氏名   性別  血液型 00100  山田太郎  男性  A 00200  鈴木一郎  男性  A 00300  田中次郎  男性  B 00400  鈴木花子  女性  O <人事テーブル> 社員番号 人事C   部署名C  開始日    終了日 00100   1           2000/04/01  2000/04/01 00100   2     2     2000/04/01  2005/03/31 00100   3     1     2005/04/01  2008/04/01 00100   3     3     2008/04/01 00200   1           2005/04/01  2004/04/01 00200   2     1     2005/04/01  2007/03/31 00200   3     3     2008/04/01 00300   1           2010/10/01  2010/10/01 00300   2     2     2010/10/01 00400   1           2011/04/01  2011/04/01 00400   2     1     2011/04/01  2015/03/31 00400   4           2015/03/31  2015/03/31 ※人事Cの1(入社)の登録では部署名Cは登録されず、別レコードに  登録されます。 <人事マスタ> 人事C 人事  1  入社  2  人事  3  部署移動  4  退職 <部署マスタ> 部署名C  部署名  1    営業部  2    経理部  3    総務部 最終的にフォーム上のリストボックスに下記にように表示したいところです。 社員番号 部署名 氏名   性別 血液型 00100   総務部 山田太郎 男性  A 00200   総務部 鈴木一郎 男性  A 00300   経理部 田中次郎 男性  B 00400   営業部 佐藤花子 女性  O 下記のようにやって、とりあえず抽出はできたのですが。。 もっとよい方法があればお教え頂けたらと思います。 1.人事テーブルで人事Cが2 or 3で抽出し、グループ化、かつ開始日の最大  でクエリを作成   00100 2008/04/01   00200 2008/04/01   00300 2010/10/01   00400 2011/04/01 2.1のクエリと人事テーブルを社員番号と開始日で紐づけてクエリ作成  社員番号  部署名C   開始日    00100    3     2008/04/01  00200    3     2008/04/01  00300          2010/10/01  00300    2     2010/10/01  00400          2011/04/01  00400    1     2011/04/01  このように、00300と00400については入社のレコードも抽出されて  しまうので、ここでさらに部署名CをIs Not Nullとする。  00100    3     2008/04/01  00200    3     2008/04/01  00300    2     2010/10/01  00400    1     2011/04/01 3.社員テーブルと2のクエリ、部署マスタを紐付けます。  社員テーブル---------2のクエリ---------部署マスタ       (社員番号)    (部署名C)  このクエリをリストボックスのソースとしてます。 なお、実際には1と2のクエリはひとつにまとめてます。 SELECT Q.社員番号, 人事テーブル.部署名C FROM (SELECT 人事テーブル.社員番号, Max(人事テーブル.開始日) AS 開始日の最大 FROM 人事テーブル WHERE (((人事テーブル.人事C)=2 Or (人事テーブル.人事C)=3)) GROUP BY 人事テーブル.社員番号) AS Q INNER JOIN 人事テーブル ON (Q.開始日の最大 = 人事テーブル.開始日) AND (Q.社員番号 = 人事テーブル.社員番号) WHERE (((人事テーブル.部署名C) Is Not Null)); もっとシンプルに結果を出せるのでは?ということで質問させて 頂いた次第です。 宜しくお願い致します。