• 締切済み

2つのテーブルデータを突合せし、条件に一致したらデータを挿入したい。

こんばんは。アクセス2003について質問します。 テーブルA  番号  終了日 001 002 003 004 テーブルB 番号 001 002 クエリ1 SELECT テーブルA.番号, テーブルA.終了日 FROM テーブルA INNER JOIN テーブルB ON テーブルA.番号 = テーブルB.番号; このようなテーブル、クエリががあります。 このとき、「テーブルAにある番号をテーブルBに追加したとき、 テーブルAにある追加した番号の「終了日」フィールドに今日の日付を投入する」 と言うことがしたいです。 要するに テーブルBに「003」と入力したら テーブルAの「003」のレコードの終了日フィールドに「2009/2/26」と入力され、 クエリ1を開いたときには 番号   終了日 001 002 003   09/02/26 となるようにしたいです。 マクロ、VBAじゃないと不可能でしょうか? もしくはADOなどでしょうか? ご教授よろしくお願い致します。

みんなの回答

  • orangezzzz
  • ベストアンサー率35% (401/1119)
回答No.3

こんばんは。#1です。 Access初心者ではないと思っていたのですが・・ 普通の更新クエリを作るだけですが。 条件は、テーブルA.番号=テーブルB.番号 And テーブルA.終了日=Nullですよね。

  • orangezzzz
  • ベストアンサー率35% (401/1119)
回答No.2

こんにちは。#1です。 >と言うことはテーブルBにも「終了日」フィールドを作成する必要があるということですね。 いいえ、認識が違います。 テーブルBに存在する番号と、テーブルAに存在する番号が同じ場合に、テーブルAの終了日を更新する。 という意味でそう言いました。

bngjbnjg
質問者

補足

再度ご回答ありがとうございます!! なるほど!テーブル1の日付を更新するんですね。 何度も申し訳ないのですが 「テーブルBに存在する番号と、テーブルAに存在する番号が同じ場合に、テーブルAの終了日を更新する。」 はどういう作業を行なえばいいのでしょうか。。。 再度ご回答いただけると幸いです。

  • orangezzzz
  • ベストアンサー率35% (401/1119)
回答No.1

こんばんは。 既にテーブルBに存在する番号のレコードの終了日を更新してもよいのであれば簡単だと思いますが。

bngjbnjg
質問者

補足

ご回答ありがとうございます。 「既にテーブルBに存在する番号のレコードの終了日を更新してもよいのであれば」 よいです! と言うことはテーブルBにも「終了日」フィールドを作成する必要があるということですね。 それ以降はどうすればいいでしょうか? 再度よろしくお願い致します。

関連するQ&A

  • テーブルAにテーブルBのレコードをすべて追加

    いつもお世話になっております。 現在、テーブルAとテーブルB(エクセルのリンクテーブル)の2つのテーブルがあり、テーブルBのレコードをすべてテーブルAに追加するという追加クエリを作りました。 が、「0件が追加されました。」とメッセージが出てしまい、実際に追加することができません。 フィールド:国番号 テーブル:テーブルB 並べ替え: レコードの追加:テーブルA.国 抽出条件: 条件は以上のようなものを、各カラムについて書きました。 テーブルAとテーブルBが逆かな?と思い逆にもしてみましたが、同じ結果となりました。 そもそも追加クエリというのは、このような目的で使うものではないのでしょうか? どなたかご教授願います。 以上、よろしくお願いいたします。

  • Microsoft Accessでどうしても上手くいきません。

    (1)テーブル作成クエリ クエリA で テーブルB を作ります。 (2)テーブルB にフィールドを一つ追加して、変更を保存 (3)テーブルB のレコードを削除 (4)クエリA を 追加クエリ に変更 で追加クエリAを実行すると、入力規則違反でレコードの追加ができません。 追加するフィールドは、オートナンバー型です。 以前は同様の作業で成功したんですけど・・・ すみません助けてください

  • ACCESS2000 更新クエリで文字を追加・変更したい

    ACCESS2000のマクロでCSVファイルをインポートし、Excelに出力しています。 そこで途中に更新クエリを使い、文字の追加・変更を行いたいのですが何故かうまくいきません。。。 【テーブルA】 フィールド/受注番号(910004292) 【テーブルB】 フィールド/出荷番号(910005232)/製造番号(910005451) 【テーブルC】 フィールド/受注番号(910005232)/製造番号(910005451)/納期(1021) 受注、出荷、製造の各フィールドは先頭に"0"を追加したいです。 910004292→0910004292 納期は2009/10/21となるように、現在の西暦(できれば自動)/と3桁目にスラッシュを入れて、yyyy/mm/dd形式にしたいです。 更新クエリで フィールド:受注番号 テーブル:テーブルA レコードの更新:"0"&[受注番号] と入力してやるとうまくいきました。 同じように横のフィールドに フィールド:受注番号 受注番号 ・・・ テーブル:テーブルA テーブルB ・・・ レコードの更新:"0"&[受注番号] "0"&[受注番号] ・・・ と各テーブルの全てのフィールドを入力して更新すると、 レコードに物凄い数の"0"が追加されてしまいます。 例:0000000000000000910004292 何度も繰り返しているようなのですが、なぜなんでしょうか? 更新クエリを別々に作ればそれぞれうまくいきました。 ひとつのクエリに複数のテーブルのフィールドを入れると駄目です。 また、納期について1021→2009/10/21にうまく変更する方法はありますでしょうか? 分かりにくくて申し訳ありませんが宜しくお願いいたします。

  • 追加クエリでテーブル全体を指定したまま条件を追加したい

    ACCESS2000を使ってます。 追加クエリでレコード追加の元となるテーブル全体を選択してます。 クエリのフィールド:テーブル名称.*と指定していますが、テーブルに追加する条件として、西暦4桁が格納されている「NENNDO」フィールドに2006だけのレコードを追加したいです。 クエリのデザインでフィールド:テーブル名称.*と指定されている状況で「NENNO」フィールドを追加して抽出条件に2006を指定して実行すると「出力先が重複しています」と表示されます。 追加クエリの対象テーブルが沢山あって、レコード追加先がOracleとなっているのでテーブルを削除せずにACCESSの削除クエリと追加クエリでレコードの作業したいと思っております。 フィールド:テーブル名称.*としたまま、テーブルに追加する条件だけを設定する方法をご教授願います。 (フィールドは、*ではなく、フィールド全てを1つづつ指定しないといけないのでしょうか?)

  • Accessで連続データってできますか?

    Aテーブル(データベース)からBテーブルに必要なレコードを抽出して、Bテーブルで編集しています。 Bテーブルで編集したレコードをCテーブルに移動する際に、連続データのフィールドが必要になったので、テーブルのオートナンバー型フィールドを一つ追加しましたが、うまくいきません。 追加クエリでB→Cに移動させるんですが、キー違反がでてクエリが動きません。 できれば、クエリで連続データを作成して、Cテーブルに追加させたいんですが、クエリで連続データって作れるものなのでしょうか?

  • 同じ構成のテーブルを結合する

    AとBという全く同じ列構成からなるテーブルの結合を考えています。 イメージとしては、Aのレコードが全て表示された下にBのレコードが列挙されるような感じです。 "INNER JOIN"、"LEFT OUTER JOIN"で行った結果、AとBでキーに同じ値を持つと、どちらかの値で上書きされてしまうみたいなのでイメージ通りにはいきませんでした。また、"CROSS JOIN"ではAの右側にBの内容が追加されてしまうのもあって、イメージ通りにできませんでした。 どなたかこのSQL文が分かる方はお教えいただけないでしょうか? よろしくお願いします。 データベース:SQL Server

  • SQL詳しい方、助けてください。

    こんにちは。 UPDATE テーブルA SET フィールドA1 = '1' WHERE フィールドA2 =(SELECT フィールドB1 FROM テーブルB WHERE フィールドB2 = 'C0' OR フィールドB2 = 'C2' AND フィールドB3='') AND フィールドA3 = '' AND フィールドA4 <> '' というSQLを作成して、動作していたので安心していたら、 テーブルBのレコード数は1件のみだと思っていたら、複数存在する場合があるとのことで、 テーブルBのレコードを追加してみたところ、、 【サブクエリは複数の値を返しました。サブクエリが = 、!= 、<、<= 、>、>= のあとに続く場合や、 サブクエリが 1 つの式として使われる場合に複数の値は許可されません。】 というエラーで終了するようになってしまいました。 そこで、 UPDATE テーブルA AS A INNER JOIN テーブルB AS B ON A.フィールドA2 = B.フィールドB1 SET A.フィールドA1 ='1' WHERE B.フィールドB2 = 'C0' OR B.フィールドB2 = 'C2' AND B.フィールドB3='' AND A.フィールドA3='' AND A.フィールドA4 <> '' としてみました。 なんだか混乱してきて、結合条件があっているかが 自分でもよくわかんなくなっていますが。 しかも、 上記のSQLをSQL SERVER 2000のクエリアナライザで 実行すると、 【キーワード 'inner' 付近に正しくない構文があります。】 というエラーが・・・。 INNER 以下はいろいろおかしいんだろうな・・・と 思っていたのですが、まさか、そんなしょっぱなで引っかかるとは思いませんでした。 いろいろ、記述方法を変更してみたり、考えたんり したんですけど、情けないことにさっぱり解りません。 どなたかお力をお貸しください。 お願いします。

  • 2つのテーブルで重複する値のレコードを削除したい

    削除クエリ?重複クエリ?について教えてください。 テーブル1 フィールド"番号"には 1 2 3 テーブル2 フィールド"番号"には 3 4 5 があるとします。 「テーブル2と重複しているテーブル1のレコードを削除する」 (この場合「3」が重複しているのでテーブル1の3が入力されているレコードを削除) としたいのですがどいゆうSQL文を書けばいいのかわかりません。 ご教授よろしくお願いします。

  • アクセスで同一テーブル内へのデータの追加

    こんにちは。Access2000を使用しています。 「顧客テーブル」には「お買上げ年度」と「顧客名」フィールド があります。 「お買上げ年度」= "2007"の顧客を、「お買上げ年度」 = "2008" として「顧客テーブル」内に追加したいのですが、一度仮テーブル やCSVファイルにデータを退避することなく、クエリやVBA(ADO)で 対応することは可能でしょうか?(=同一テーブル内への追加クエリ を実行したい。)よろしくお願いいたします。

  • フォームから2つのテーブルにデータを書き込みたい

    Accessで T_aテーブルとT_bテーブルがありそれぞれのフィールドが以下のようになっているとします。 T_a:フィールド名 データ型    ID  オートナンバー型    商品番号 テキスト型 主キー T_b:フィールド名 データ型    ID  オートナンバー型 主キー    商品番号 テキスト型 このときフォームから入力したデータをそれぞれのテーブルの商品番号に追加したいのですがどのようにすればよいのでしょうか。  よろしくお願いいたします。

専門家に質問してみよう