初歩的な質問で恐縮ですが

ACCESS2000を使用しテーブルの構造が(フィールド)同じもの(但し入っているデータは異なります)あります。

このテーブルは別々のまま保存した状態でクエリーでひとまとめにして表示させたいのですが

例えば テーブルAには300件 テーブルBには200件 テーブルCには100件の同一構造のデータがあった場合

クエリーDとしてA+B+Cで600件が表示されクエリーDのデータを修正した場合それぞれのテーブルのデータに反映させるようにしたいのです。

以上よろしくお願いいたします。 

このQ&Aに関連する最新のQ&A

A 回答 (2件)

私の知っている限りでは、Accessに限らず他のDBでもユニオンクエリーからは更新ができません。



どうしてもと言う場合は、

1.A,B,Cと構造が同じテーブルを作成

2.作成したテーブルに2カラム項目を追加する。一つは、データがどのテーブルのものかを示すもの、もう一つは、更新の有無を設定する。
3.A、B、Cのデータを作成したテーブルに追加する。このとき、元データを識別するカラムも設定する。
4.作成したテーブルをフォームで表示する。
5.フォームで更新が行われたときに、更新があったことをテーブルに設定する。
5.フォームが閉じたときに、更新のあったレコードから元のA,B,Cのテーブルへ反映する。

と言うようなことをするしかないでしょうね。
    • good
    • 0

ご要望の形式でのクエリは、ユニオンクエリーなのですが、ユニオンクエリーでは、更新はできません。



ユニオンクエリーについてはACCESSのヘルプで調べてみてください。
    • good
    • 0
この回答へのお礼

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

ユニオンクエリーですか?
ACCESSではこのような作業は行えないのでしょうかね

お礼日時:2001/01/16 13:34

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

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Q2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。

2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。マージするときは、最新の売上日フィールドをもつレコードを取得します。環境はAccess2000です。どんなSQL文を作成すればいいのでしょうか? 
また、テーブルAにしかないレコード、又はテーブルBにしかないレコードは、そのままテーブルCに追加したいです。
※下記テーブルAとBは、Access内に存在します。テーブルCはAとBのマージ後の結果作成されるテーブルです。

テーブルA
顧客番号   売上日   商品名   備考
   1  2000-01-01  ふでばこ   A
   2  2000-02-02  鉛筆     A
   3  2000-03-03  定規     A
   4  2000-04-04  シャーペン  A
  99  2000-09-09  パソコン   A

テーブルB
顧客番号   売上日   商品名   備考
   4  2001-04-04  シャーペン  B
   2  2000-02-02  鉛筆     B
   3  2001-03-03  定規     B
   1  1999-01-01  ふでばこ   B
 100  2005-11-11  ワープロ   B


テーブルAとBを、最新の売上日の条件でレコードを取得し新しいテーブルCを作成する。

テーブルC
顧客番号   売上日   商品名   備考
   1  2000-01-01  ふでばこ   A
   2  2000-02-02  鉛筆     A
   3  2001-03-03  定規     B
   4  2000-04-04  シャーペン  A
  99  2000-09-09  パソコン   A
 100  2005-11-11  ワープロ   B

SQL文で処理可能なのでしょうか?

2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。マージするときは、最新の売上日フィールドをもつレコードを取得します。環境はAccess2000です。どんなSQL文を作成すればいいのでしょうか? 
また、テーブルAにしかないレコード、又はテーブルBにしかないレコードは、そのままテーブルCに追加したいです。
※下記テーブルAとBは、Access内に存在します。テーブルCはAとBのマージ後の結果作成されるテーブルです。

テーブルA
顧客番号   売上日   ...続きを読む

Aベストアンサー

サブクエリでネストしても出来ない処理があるのでクエリを分けた方が簡単ですよ。
単純にするなら3つ

'qry1として
SELECT テーブルA.顧客番号, テーブルA.売上日, テーブルA.商品名, テーブルA.備考
FROM テーブルA
UNION SELECT テーブルB.顧客番号, テーブルB.売上日, テーブルB.商品名, テーブルB.備考
FROM テーブルB;

'qry2として
SELECT qry1.顧客番号, Max(qry1.売上日) AS 売上日の最大, qry1.商品名
FROM qry1
GROUP BY qry1.顧客番号, qry1.商品名;

'qry3として
'テーブルCを作成するなら
SELECT qry2.顧客番号, qry2.売上日の最大 AS 売上日, qry2.商品名, qry1.備考 INTO テーブルC
FROM qry2 INNER JOIN qry1 ON (qry2.売上日の最大 = qry1.売上日) AND (qry2.顧客番号 = qry1.顧客番号)
GROUP BY qry2.顧客番号, qry2.売上日の最大, qry2.商品名, qry1.備考;

'既存のテーブルCに追加するならこちらで
INSERT INTO テーブルC ( 顧客番号, 売上日, 商品名, 備考 )
SELECT qry2.顧客番号, qry2.売上日の最大, qry2.商品名, qry1.備考
FROM qry2 INNER JOIN qry1 ON (qry2.売上日の最大 = qry1.売上日) AND (qry2.顧客番号 = qry1.顧客番号)
GROUP BY qry2.顧客番号, qry2.売上日の最大, qry2.商品名, qry1.備考;

サブクエリで処理できるところもありますがその辺はご自分でネストしてみてください。

サブクエリでネストしても出来ない処理があるのでクエリを分けた方が簡単ですよ。
単純にするなら3つ

'qry1として
SELECT テーブルA.顧客番号, テーブルA.売上日, テーブルA.商品名, テーブルA.備考
FROM テーブルA
UNION SELECT テーブルB.顧客番号, テーブルB.売上日, テーブルB.商品名, テーブルB.備考
FROM テーブルB;

'qry2として
SELECT qry1.顧客番号, Max(qry1.売上日) AS 売上日の最大, qry1.商品名
FROM qry1
GROUP BY qry1.顧客番号, qry1.商品名;

'qry3として
'テーブルCを作成す...続きを読む

Q選択クエリーで 2つのテーブルの項目が Null どうしのデータを抽出するには?

初心者です、教えてください。

テーブルが、2つあって
テーブル名: T1 T2
フィールド1: A1 B1
フィールド2: A2 B2
フィールド3: A3 B3
とあった時、選択クエリーで T1 と T2 のフィールドの A1-B1、A2-B2、A3-B3 が、
一致したものを表示するクエリーを作成します。
でも、A2、A3、B2、B3のデータ中には、それぞれ Null値が入っていて、
A2-B2、または、A3-B3 が、Nullどうしなら、一致とみなして、表示するには、
どうしたらいいのでしょうか?

Nullのみどうしのデータで、Nullのフィールドを
除いた選択クエリーをつくって、あとで合わせてもいいのですが、
実際のテーブルは、そういうフィールドが、いっぱいあって、大変なんです。

簡単に表示する方法は、あるでしょうか?

初心者なのでむずかしいことは、
やったことがなくて、すいませんが、わかる方がいらっしゃたら、お願いします。

Aベストアンサー

MS|ACCESSは持ってないので正確ではないかもしれませんが
。あっ、その前に表示させるときリストボックスで表示させるのかフォームで表示させたいのか書かれたほうがアドバイスが増えるかもしれません。

取り敢えず、書式タブの規定値を'0'にすればいいかも。
詳しいことは以下を参考にしてください。

参考URL:http://ac.accessclub.jp/beginer/cd/part_07.htm

QACCESS2000 クエリーを開いてテーブルのデータを更新したい

ウィンドウズ98,ACCESS2000です。

二つのテーブルがあって、リレーションがあります。

これを元にクエリーを作成して、クエリーを表示させたフォームでデータの更新や削除を行いたいと思っております。

が、実際やろうとするとこのレコードセットは更新できませんとでます。

何か考えられる理由はありますか? よろしくお願いします。

Aベストアンサー

一対多のリレーションなのでしょうか?一対多のリレーションで通常は連鎖更新できますが多側のリンクしているインデックがクエリーに含まれていないと更新出来ない事があります。
リレーションが多対一になっていても更新出来ないと思います。
クエリーに演算するフィールドがあると読み取りしか出来ないはずです。孫入れしてあるクエリーがあるとしてその中に演算フィールドがあっても出来ません。

Qフォームをひとつのテーブルから作るときクエリーはつくりますか

フォームを作るとき,ひとつのテーブルから作るときでもクエリーを作るんですか?もしそうならそうする理由はなんでしょう?

Aベストアンサー

特にクエリを作らなくてもいいです。
でも、クエリを使うと抽出条件を付け加えることが出来ます。

QMs Access テーブルBにテーブルAのCDを充てたい。(クエリ?紐づけ?リレーションシップ?)

初心者です。よろしくお願いします。
そもそも、できるのかどうか、できたとして、どうするのかがわからないです。

次の2つのテーブルがあります。
テーブルマスタA には、①市町村CD ②市町村名 ③住所(番地なし)
テーブル受付データB には、①NO ②住所(番地まであり)③受付日 ④⑤・・・

具体的には、以下のとおり。(サンプル)
テーブルマスタA
①    ②      ③
10000  松戸市    千葉県松戸市
20000  鎌ケ谷市本町 千葉県鎌ケ谷市本町
30000  横須賀市   神奈川県横須賀市
テーブル受付データB
①    ②
1    千葉県松戸市五香5-5-5    
2    千葉県鎌ケ谷市本町さくらがおか8-88-8 ひまわりアパート302
3    神奈川県横須賀市横須賀8-7-8   

テーブル受付データBにおいて、②の部分(市町名まで)と、
テーブルマスタAの③をなんとか紐づけて、

クエリで合体させたい。
=テーブル受付データBに、テーブルマスタAの市町村CDを充てたい。
A①市町村CD  A②市町村名 B② B③ B④ B⑤
とすることを切望しています。

***********
たとえば、2つのテーブルに同じフィールドがあって、
それをリレーションシップで紐づけるのは容易ですが、
今回のようなパターンは、
もしかして、私は、ナンセンスなことをしようと苦闘している?と思ってきました。
フィールド名が同じじゃないのに、それを紐づけることができるのでしょうか?

できるとして、どのようにすればよいのでしょうか?

どうぞ、教えていただきたく、お願いいたします!!!

初心者です。よろしくお願いします。
そもそも、できるのかどうか、できたとして、どうするのかがわからないです。

次の2つのテーブルがあります。
テーブルマスタA には、①市町村CD ②市町村名 ③住所(番地なし)
テーブル受付データB には、①NO ②住所(番地まであり)③受付日 ④⑤・・・

具体的には、以下のとおり。(サンプル)
テーブルマスタA
①    ②      ③
10000  松戸市    千葉県松戸市
20000  鎌ケ谷市本町 千葉県鎌ケ谷市本町
30000  横須賀市   神奈川県横...続きを読む

Aベストアンサー

パラメータが表示されたのは指定したフィールドがないからです。
テーブル名とフィールド名を使用している名前に変更してください。

InStr関数は
ある文字列 (string1) の中から指定された文字列 (string2) を検索し、最初に見つかった文字位置を返す文字列処理関数です。
InStr(string1, string2)

やっていることはテーブル受付データBの②(住所)の中からテーブルマスタAの③(住所)を検索し
文字列がある位置を出しています。
必要なのは文字列が含まれているデータのみなので条件を>0としています。

試しにInStrの部分をなくしてクエリを実行してみてください。
「テーブルマスタA」のレコード数*「テーブル受付データB」のレコード数のデータが表示されるはずです。


人気Q&Aランキング

おすすめ情報