アプリ版:「スタンプのみでお礼する」機能のリリースについて

Window98, Access2000を使用しています。
現在(1)住所録DBと(2)家計簿DBをAccessにて作成しています。家計簿DBは長年使っていますのでかなりの情報量です。(1)の住所録DBは先日から作り始めたばかりです。そこで質問させていただきたいのですが、(2)の家計簿DBにあるAccount名と住所録DBにある会社名とリンクをさせたいのですがどのようにしたらよいのでしょうか? 外部テーブルとしてリンクさせるテーブルを新たに新規Account名として追加して家計簿DBにつくることは出来ますが、完全な目的達成の問題点として、

1)家計簿DB内にあるAccount名の数は1000件を超えていますが、そのそれぞれのAccount名テーブルはかなり簡素なものなので、そのテーブル構造及びフィールド(住所、担当者(個人名)、交信情報(メモ))やそれぞれのリンク構造は住所録DBを使いたい。但し、1000件以上のAccount内容全てにその詳細情報は不要で、家計簿DBの特定のAccount名につき住所録DBの会社テーブルにある特定のレコードとリンクさせ、内容を充実させたい。即ち異なるDB間で特定のテーブル内にある特定のレコード間のリンクは可能か否か?

2)家計簿DB内のAccount名は会社名もあれば個人名もあります。一方住所録DBには、家計簿DBのAccount名テーブルの該当リンク先テーブルとして、会社名は (a)会社テーブル、個人の場合は (b)担当者(個人)テーブルのように2種類のテーブルが存在していますが、それぞれ該当レコードにリンクさせる事は可能か?

上記1)、2)に付き技術的可能性の可否について、或いは目的達成のためのアイデアが頂ければ喜びます。宜しくお願いします。

A 回答 (3件)

1)も2)も、「異なるDB」ということは関係ないように思います。

リンクテーブルを作成し、それに対してなんらかの操作を行えばよいわけですから。ただし、リンクテーブルの構造の変更はできませんので、構造の変更はリンク元のDBで行わなければなりません。
1)ですが、まず、Accountテーブルに詳細情報が必要か不要かを示すフィールドを作り、Yes/No型で必要ならYes、不要ならNoにするとかにします。会社テーブルにも Accountテーブルの詳細情報が必要か不要かを表すフィールドと同じ型のフィールドを作成し、こちらは全てのレコードの内容を「必要」の値(Yes/No型ならYes)にします。で、Accountテーブルと会社テーブルとを、「IDか何かのフィールド」と「詳細情報が必要か不要か」のフィールドの二つの結合でクエリーを作成すればどうでしょうか。
2)ですが、会社テーブルと担当者テーブルのユニオンクエリーを作成し、そのユニオンクエリーとAccountテーブルを元にしてクエリーを作成すればよいのではないでしょうか。

この回答への補足

ご返事有難うございます。私の不勉強故に、残念ながら折角の貴ご説明を理解できないのですが、
1.リンクテーブルというのは“第3の”DBを作ってその中に家計簿DBのAccountテーブル(a)と住所録DBの会社テーブル(b)それぞれリンクする第3のテーブルを作って間接的に(a)と(b)をリンクさせる、という意味なのでしょうか?その場合、わざわざ第3のDBと第3のテーブルを作る意味はどういう点にあるのでしょうか?
2.ご説明の中で、クエリーの作成が恐らく特定のレコードをリンクさせる方法のご解説だと思いますが、具体的に上記(a)テーブル中のレコード“ A”と(b)テーブル中のレコード“B”とのリンクのさせ方をご教授いただけないでしょうか? いづれにせよ特定のレコードのリンクは内容を確認しながら一件一件指定する必要があります。
3.会社テーブル(b)と担当者テーブル(c)のユニオンクエリーの作成、そのユニオンクエリーとAccountテーブル(a)を元にしたクエリーの作成の仕方、上記2項同様、それぞれのレコードのリンクのさせ方のご指導宜しくお願いします。

補足日時:2003/10/13 13:51
    • good
    • 0

1. リンクテーブル


住所録DB内に、家計簿DBのAccoutテーブルのリンクテーブルを作成するということです。Access のメニューの「ファイル(F)」→「外部データの取り込み(G)」→「テーブルのリンク(L)...」で作成します。リンクテーブルを作成すると、住所録DB内にあたかもAccount テーブルがあるかのように見えるのですが、データの実体は家計簿DBにあります。住所録DB内のリンクテーブルに対してデータの追加や変更、削除を行えば、家計簿DB 内の Account テーブルに対して追加、変更、削除が実行されます。

2.クエリー
>特定のレコードのリンクは内容を確認しながら一件一件指定する必要があります。
ということなので、二つテーブルを関連付けるフィールドがないようですね。関連付けさせるためのフィールド(結合フィールド)がなければ、二つのテーブルをリンク(リレーションともいいます。)させることはできません。逆に言うと、二つのテーブルをリンクさせるための作業が、結合フィールドを作成、および結合フィールドにデータをセットする行為になります。
もう少し具体的に書きますと、
Acount テーブルに、ID というフィールドと名称というフィールドがあり、次のようなデータが入っているとします。
ID   名称
---------------------
0001  山田さん
0002  佐藤さん
0003  鈴木さん

一方、住所録DBの担当者テーブルには番号というフィールドと氏名というフィールドがあったとし、次のようなデータが入っているとします。

番号  氏名
------------------------
1000  鈴木 一郎
1051  山田 太郎
1129  山口 努
1131  木村 庄之助
1132  山田 花子

Account テーブルの 0001 と 担当者テーブルの 1132
Account テーブルの 0003 と 担当者テーブルの 1000
をリンクさせたいとします。

方法1.番号を振りなおす
Account テーブルか、担当者テーブルのどちらかの番号を振りなおすわけですが、例えば担当者テーブルの番号を振りな直すなら、

番号  氏名
------------------------
0003  鈴木 一郎
1051  山田 太郎
1129  山口 努
1131  木村 庄之助
0001  山田 花子

のように、ID と 番号を一致させなければなりません。

方法2.フィールドを追加する
フィールドIDとフィールド番号の型(数値型とか文字型とか)が一致していれば、番号の振り直しでもよいのですが、型が一致していなければ、一致するフィールドを追加せざるを得ません。
↓こんな感じにします。

番号  ID  氏名
------------------------
1000  0003 鈴木 一郎
1051  0002 山田 太郎
1129  0004 山口 努
1131  0005 木村 庄之助
1132  0001 山田 花子

今日は疲れましたので、続きはまた今度にします。
    • good
    • 0
この回答へのお礼

分かりやすいご説明有難うございます。住所録DB内の担当者テーブル及び会社テーブルをUnionクエリーにて作った”相手"という新規テーブルに、方法2.のフィールドの追加を考えて見たいと思っています。

この新規のフィールドは家計簿DBのAccountテーブルの番号フィールドとリンクさせるための結合フィールドとし、そのフィールド内に双方が同じ番号になる数字を記入すればよいのですね? 

ご説明の”続編”を心待ちにしています。

お礼日時:2003/10/19 04:16

ユニオンクエリーのことについて書こうかと思っていたんですけど、もう作られたということなので、続きは止めておきますね。

    • good
    • 0

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