プロが教えるわが家の防犯対策術!

ACCESSでこんなことができないか調べています

テーブルA・・・顧客ナンバー、顧客名、顧客情報、出欠欄

テーブルB・・・X日に会議に出席した人の顧客ナンバー、顧客名

テーブルAに1万件の全顧客データ、Bに500件のX日の出席者のみのデータがあったとして、テーブルAの出席欄にBの500件分について○をつけるということは可能でしょうか?そして、また次に会議があったら、XX日会議出席者に○をつけるというようにして、テーブルAに情報を追加して行く形で全部の情報をテーブルAのデータベースで管理したいのです。

私の技量ではテーブルAとBをクエリを使って出席した人の顧客情報をくっつけるぐらいが精一杯なのですが、テーブルAとBをクエリでくっつけて、それからAから重複を削除して、くっつけたデータを追加してうんぬん、とむにゃむにゃいじればなんかぐちゃぐちゃになりながらもできそうな気もするのですが、よく判りません。

スマートなやり方があればぜひ教えてください。

A 回答 (3件)

こんばんは。


質問の内容拝見しました。
テーブルAが顧客情報とすると、これが極端な話100万件でも
問題ないのですが、これはエクセルのイメージで言うところの
行数にあたりますよね?
で、出欠欄が会議毎増えていくとなると、列数が増えるということでしょうか?
この行数、というかフィールド数は制限値がありますので
この500フィールドという数は不可能と思うのですが。。
わかりやすいのは、回答1さんとにた形ですが
テーブルAはあくまで顧客情報とする。
テーブルBは例えば会議情報テーブルとする。 会議番号・会議名・日付・内容
テーブルC 出欠者データテーブルとする。 会議番号・顧客番号

入力の部
テーブルA・・顧客が増えた時だけ追加入力作業
テーブルB・・会議内容発生時入力
テーブルC・・入力フォーム作成 会議番号エリア・顧客番号(コンボボックスにしとくと便利)
       ボタン作成し、クリック時追加クエリ実行
       ※追加クエリ事前作成しておく フォームの会議番号エリア、顧客番号エリアのデータをテーブルCに追加されるクエリ。

見るための部
テーブルBの会議番号とテーブルC の会議番号をリレーションで結ぶ(一対多)
テーブルAの顧客番号とテーブルC の顧客番号をリレーションで結ぶ(多対多)

クエリZZZ 作成 テーブルA.C使用。
 テーブルCの会議番号・顧客番号とテーブルAの顧客名・顧客情報
テーブルBを基にフォームYYY作成。
このフォームにクエリZZZのサブフォームXXXを追加する。
フォームYYYの会議番号とサブフォームXXXの会議番号を親子関係にする。

これで会議毎にデータを選ぶとサブフォームに出席者一覧が表されます。

面倒そうですが、一度作ってしまえば入力は簡単と思いますが如何でしょうか?
    • good
    • 0
この回答へのお礼

詳しいご説明、ありがとうございました。

かなりスマートな感じで、使い勝手のいい感じになりそうですね。確かにこのほうが見栄えもいいし、あとあとの管理もしやすそうです。

とりあえず、求められている情報の精度としては、会議には各顧客は1回ずつしか出ない前提で、テーブルAの出欠の欄(列)に出たら丸をつけていき、次の会議があったらまた同じ列に丸を追加していくという、何日に出たかまではいれておかなくていいから、とりあえず手で一人ずつ入力するのは面倒なので一気に入れる方法はないかという感じなんですが。

そういうデータ管理を求められていること自体がなんとなくアナログちっくですか?

お礼日時:2009/11/20 21:46

欲しいカラムがよく分かりませんが


出席者を抽出したいという事でしょうか

・重複排除(DISTINCT)
SELECT DISTINCT

・リレーション設定(where句で)
WHERE A.顧客ナンバー=B.顧客ナンバー

※ACCESSは使った事ありませんので的外れならごめんなさい
    • good
    • 0
この回答へのお礼

アドバイスをありがとうございます。

イメージ的には、出席者を抽出するのではなく、顧客リストに出席した人だけ○をつけたいんですが、1件ずつ検索して入力とかはしたくないので、出席者リストから入れる作業ができないかなぁと模索しております。

私も普段はACCESSなど使わないので、まったく判っておりませんが、なんか重複排除でできないかなぁとかは思いました。

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

お礼日時:2009/11/17 22:44

テーブルAとテーブルB、分かれた今の状態の方が良いと思いますが。


「Y日の会議」が出てきたらテーブルCにするとか管理は楽だと思います。


1)「クエリ」の「新規作成」で、テーブルAとテーブルBを「テーブルの追加」して「OK」。列をすべて下のグリッドにドラッグ&ドロップ。
2)テーブルAの「顧客コード」をテーブルBの「顧客コード」のドラッグ。
3)結ばれた「線」をダブルクリック。
4)3つ項目があるうちの「テーブルAのすべて・・・」を選択してOK
5)名前を付けて保存。

これでテーブルA(全行)で出欠表ができます。
X日参加者だけ知りたいなら、5)で作成したクエリを呼び、ふたつある「顧客コード」のうち、元がテーブルBの「条件」を[is not null]にする。
X日欠席者だけ知りたいなら、5)で作成したクエリを呼び、ふたつある「顧客コード」のうち、元がテーブルBの「条件」を[is null]にする。
それぞれクエリとして保存して使用してください。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

おっしゃるとおり、私自身はテーブルを分けておいて、必要なときにクエリを作った方が管理しやすいような気がするのですが、ACCESS自体をあまり使わない職場なので、みんなが使うためにはなんとなくEXCELっぽいデータベース管理にしてほしいようで。でも、1件ずつ手で入れるのは面倒なので、ACCESSでなんとかできないかと言われているのです。

教えていただいた方法を試してみたいと思います。ありがとうございました。

お礼日時:2009/11/17 22:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!