• 締切済み

テーブル更新について

入力テーブル NO A項目 B項目 C項目 D項目 1  SSSS AAAA CCCC EEEEE 2 QQQQ SSSS WWWW FFFF 3 TTTT JJJJ VVVV UUUU 4 ZZZZ YYYY IIII PPPP (新規データ) 検索テーブル NO A項目 C項目 D項目 1  PPPP UUUU LLLL 2 RRRR MMMM VVVV 3 YYYY FFFF AAAA 4 OOOO DDDD WWWW 5 上記のように入力テーブルの新規データを検索テーブルへ追加したいと考えています。 入力テーブルの最終行に新規データが追加されるとして、それを検索テーブルへ追加する場合、 方法として、(1)Access VBAを使う場合と、(2)SQL文を使用する場合とあると思います。 どちらでもいいので、どうすればいいのか、教えていただけないのでしょうか。 よろしくお願いします。

みんなの回答

回答No.2

VBAでやらないといけないでしょうね。 「入力テーブル」に「検索テーブル追加フラグ(Yes/No型、デフォルト値:No)」を設ける。 (1)トランザクションを開始。 (2)「入力テーブル」から「検索テーブル追加フラグ」がNoのレコードを抽出。 (3)見つかった全てのレコードについて、「検索テーブル」へ追加。 (4)「入力テーブル」の「検索テーブル追加フラグ」を全てYesに更新。 (5)トランザクションコミット。

  • sujino
  • ベストアンサー率30% (3/10)
回答No.1

データベースがなんなのか分からないので、なんとも言えませんが、上記の構造では新規データの特定が出来ないのでは無いでしょうか? SQL Serverとかなら、ストアド組めば新規レコードが追加された事がトリガで、別テーブルへ追加するクエリかけると思いますが、Accessではトリガが取れないので、無理ではないでしょうか? 言語側の処理では無くてDB側の処理だと思います。

関連するQ&A

  • ACCESS2003のテーブル入力について

    いつもこちらでお世話になっております。よろしくお願いいたします。 マイクロソフトアクセス2003にて、No.と項目名という2つのフィールドから成り立つテーブルがあります。 そのテーブルにはあらかじめデータがはいっています。 新規にそのテーブルに追加する項目が出来たとき、新規入力用のフォームを作成しました。 その時のNo.のフィールドなのですが、自動的にもともとあるテーブルの番号に無いものを規定値として表示させておくようにするには、どのようにしたらよいでしょうか? 例) 1、2、3、5があれば、4を 1、2、3、4があれば5を よろしくおねがいします。 もうひとつ質問なのですが、納品書を入力していくデーターを作成しているのですが、納品書のテーブルがあり、リレーションで項目や会社名などを関連テーブルとしています。 あらかじめ会社名や項目名のテーブルに入力されていない新規の会社の納品書を打ち込む場合、納品書テーブル入力フォームに、入力しただけで、項目名のテーブルや会社名のテーブルに追加されていく方法はありますでしょうか?

  • テーブル間の更新クエリにおいて

    Access2010で入力フォームを作成しています。 一時データとしてテーブルAを連結サブフォームとして編集します。保存ボタンをクリックするとメインのテーブルB(Aとフィールド構成は同じ)へA、Bのフィールド間で値が異なる場合、上書き保存をするという更新クエリを用意しています。 質問はテーブルAでフォーム上、オプショングループのラジオボタン(項目はテキスト型 値リストは0と1)に設定した項目が初期値のnullから入力したデータがメインのテーブルBに更新できないので困ってます。 連結フォームなので、テーブルAに値が入っており且つBと値が異なるのはデータビューで確認しています。ただ更新クエリでの選択(データビュー)に載ってこない。 この項目がテーブルBに反映されるのは予めインポートで0もしくは1が入力されていた状態から変更した場合と他の項目も合わせて値に変更があった場合のみでした。 クエリの抽出条件はテーブルA.項目<>テーブルB.項目としています。他の項目もor条件で同じ設定にしています。切り分けのため、このオプショングループの項目だけを変更した場合のクエリにしても反映はされませんでした。 考慮すべき点あればご教示ください。 よろしくお願いいたします。 どうかお助けくださいませm(__)m

  • Access2007テーブルの更新

    Access2007で住所録を作成していますが、すでにあるテーブルに名前と郵便番号があります。 そのテーブルに住所を追加し、住所入力支援を設定しましたが、既存のデータには住所が出ません。新規にデータを入れると住所は出ます。 どうしたら、既存のデータで郵便番号から住所が出ますでしょうか。 よろしくお願いします。

  • 既存テーブルから別テーブルへのデータコピー時、発番を行いたい

    お世話になります。 テーブルからテーブルへのデータコピーをしたいのです。 たとえば、 ワークテーブルから売上テーブルへ データをコピーするとします。 売上テーブルには、主キーとなる「売上NO」(10桁)という項目があります。 ワークテーブルには売上NOはないので、データ移行時に売上NOを作成してやらないといけません。 一文だけで片付けようとすればどう書けば良いのでしょう?というか一文では無理なのでしょうか? insert into 売上テーブル (売上NO,販売単価......) select (select right('0000000000' + (convert(nvarchar,max(売上NO) + 1)),10) from 売上テーブル) ,販売単価..... from ワークテーブル とやってみましたが、ダメでした。一括でデータ追加に行くので主キー重複エラーとなりました。 どなたかご教授ください。お願いします。

  • 複数テーブルの結合

    テーブルA  a_id id a_data a_date ----------- テーブルB id b_data b_date テーブルC id c_data c_date ----------- テーブルAとテーブルBは「id」がキーで1:N(Nは0も含む) テーブルAとテーブルCは「id」がキーで1:N(Nは0も含む) このような3のテーブルで a_idを検索キーにして次のフィールドのデータを抽出したいのですが。。。 ※テーブルCのc_dateを降順で先頭の1レコードのみ ※テーブルBのidをカウントする selectの結果(イメージ) id a_data a_date count(B.id) c_date ------------------------------------- 001 AAAA 2007/02/01 20 2007/02/14 005 BBBB 2007/02/02 0 2007/02/10 006 CCCC 2007/02/02 0 2007/01/08 003 DDDD 2007/02/01 100 002 EEEE 2007/02/01 9 004 FFFF 2007/02/01 0 よろしくお願いします

  • テーブルに新しいレコードを追加する方法について

    ACCESS2007を使っています。 フィールドに以下のような項目があるテーブルAがあります。 日付 | 名称 | 項目 | MIN(数値) | MAX(数値) | チェック(Yes/No) また、以下のような項目があるテーブルBがあります。 日付 | 名称 | 項目 | ナンバー(数値) このテーブルAに以下のようなデータが入っているとして 1/1 | あああ | いいい | 10  | 100 | No 1/1 | あああ | ううう | 1 | 20 | Yes テーブルBに以下のようにレコードを追加したいのです。 1/1 | あああ | いいい | 10   1/1 | あああ | いいい | 11    ・  ・  ・ 1/1 | あああ | いいい | 100 1/1 | あああ | ううう | 1 1/1 | あああ | ううう | 2   ・  ・  ・ 1/1 | あああ | ううう | 20 1/1 | あああ | ううう | blank  最終的には、テーブルBをソースとしてラベル印刷したいと思っています。 レコードセットとFor~Nextなどを使えばできそうな気がするのですが、???です。 どなたかご指南いただけませんでしょうか?

  • 1つのSQL文で文字列を置換する方法を教えてください。

    以下のようなテーブルで、項目aに入力されているデータに含まれている[aaaa]を[bbbb]に置き換えたいのですが、どなたか1回で置き換えられるSQL文を教えていただけないでしょうか。 どうぞ、宜しくお願い致します。 table:TEST [項目名]/[データ]  a / aaaaみかんりんご ■変換後■ [項目名]/[データ]  a / bbbbみかんりんご

  • エクセルのピボットテーブルを使っていて・・・こんなことできますか?

    エクセルのピボットテーブルの機能では、テーブルのデータエリアは書き込みの保護がされているようですが、データエリア内のセルにフィールド項目名を加工・追加記入したり、集計データ間の比率計算式等を入力したい場合、可能でしょうか? もし可能であれば、その方法を教えて欲しいのですが・・・。

  • access で 方法を教えてください。

    access で 方法を教えてください。 テーブルは セミコロン区切りで、区切られて表示されています (テーブル例)  1 aaaa;bbbb;cccc;dddd;eeee;ffff 2000byte 2 aaaa 300byte 3 bbbb;cccc;ffff 3000byte 4 ffff;dddd 120byte このセミコロン区切りの区切られたデータの 「件数」と「バイト」を表で表示させる方法を教えて欲しいのです。 上記テーブル例を使用しての(抽出例)  抽出条件    ↓   aaaa 2件 2500byte   bbbb 2件 5000byte  cccc 2件 5000byte   dddd 2件 2120byte   eeee 1件 2000byte   ffff 3件 5120byte 宜しくお願いします。

  • ACCESSでテーブルの一部だけを更新したい

    Access2000を使用しています。 テーブルの更新方法についてアドバイスをお願いいたします。 Excelの表からインポートとして「テーブルA」を作っています。 Excelからは項目「A、B、C、D」をインポートしていますが、テーブルにインポートしたあとで、項目「E、F、G」を新たに追加作成し、値を手入力しています。 (Excelにはこの項目がないためです) Excelの表は時々更新されるため、その都度上書きとしてインポートしなおす必要があります。 しかしそうすると項目「E、F、G」が消えてしまいます。 項目「E、F、G」の値を残したまま項目「A、B、C、D」を更新するなどということはできるのでしょうか? 代替案でもけっこうですのでどうぞよろしくお願いします。

専門家に質問してみよう