• 締切済み

Accessでテーブルからテーブルにデータをコピーしたい

こんにちは。loooserと申します。 Accessでアプリケーションを作ろうとしているのですが、テーブルからテーブルにデータをコピーする方法が分かりません。 テーブル1には name price comment というフィールドがあり、 テーブル1'には no name price comment flag という5つのフィールドがあるとして、 テーブル1の3つのフィールドをテーブル2に移動したいと考えています。 他にもテーブルが複数あり、フィールド数は固定でないのです。 列数を取得してループするという感じだと思うのですが、全く知識がなく、お知恵をお借りできればと思っております。参考URLなどでも結構ですので、どうかお願いします。

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>テーブルが不定期で増え・・・それを一括で処理できないものか 不定期で増えるものに対して一括でというのは無理なのではないでしょうか。不定期で増えるテーブルの把握はどのように行うのですか? >既に移行先テーブル自体はあり中の列数が違う。またテーブル数は変動という条件 既にある移行先テーブルの列数の差は問題ありません。 しかしテーブル数は変動という意味がイマイチ判りません。移行先のテーブルで同じフィールド内容のテーブルが複数あるという事なのでしょうか? 追加クエリを作るか下記のSQLでテーブル1からテーブル2へ3つのフィールドのレコードを追加できます。 INSERT INTO テーブル2 ( name, price, comment ) SELECT テーブル1.name, テーブル1.price, テーブル1.comment FROM テーブル1; 複数あるテーブルに追加していく簡単な方法として移行先の各テーブルの追加クエリを作りマクロに設定しておきマクロを実行して一括に各追加クエリを処理させる。新たに増えた移行先テーブルはその都度追加クエリを作りそのマクロに追加設定していく。 質問の内容と違うようでしたらゴメンなさい。

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.1

VBAで構築するのも手ですが、「追加クエリー」を使えば簡単に出来ます。 下記URLを参考にして下さい。(ACCESS97での例ですが、他のバージョンでもほぼ同じです。)

参考URL:
http://www.mahoutsukaino.com/ac/ac97/basic/a_query3.htm
loooser
質問者

お礼

こんにちは。 ありがとうございます。追加クエリという方法があるのですね。 しかし、テーブルが不定期で増え、またそれを一括で処理できないものかと思いましたので、出来ませんでした。これだと、毎回追加クエリを発行しないといけないですよね? 「元のテーブルの、最前列と最後列に1列ずつ列が追加されるようなテーブルで、既に移行先テーブル自体はあり、中の列数が違う。また、テーブル数は変動」という条件なのです。 移行先テーブルを新たに作るというようなほうがいいのでしょうか?

関連するQ&A

  • 同一テーブル内で違うフィールドにデータをコピー

    ryomaniaと申します。 MySQL3.23.58を使用しています。 質問の内容なのですが、NO、CNO、NAMEというフィールドを持つテーブル顧客があります。 NOにはauto_incrementで連番の数字が自動で入ります。CNOにはNOと同じ数字を入れたいと思っています。但し最初は数字の0が入っています。NAMEには名前が入っています。 例: NO | CNO | NAME 1 | 0 | test1 2 | 0 | test2 3 | 0 | test3      ・      ・      ・ といった感じです。この状態からupdate構文などを使用して、もしCNOが0であればNOのデータをCNOにコピーするということは可能でしょうか?出来れば複数の行を一度に行いたいと思っています(1000~3000行くらい)。 googleなどで調べては見ましたが答えというかいいヒントが見つかりませんでした。 変な言い回しになっているかもしれませんがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • Mysqlで複数テーブルの参照

    Mysqlで複数テーブルの参照 お世話になります。Mysqlについて質問させてください。 現在、それぞれnameとdateとflagの3フィールドをもつテーブルが、2つあります。 もともと別の用途で準備したものなのですが、 2つのテーブルのflagを参照して、1のものだけdate順に並べることが出来るでしょうか? ■テーブル1 -----------------------------  name |  date  |flag| -----------------------------  田中 | 2010-06-01 | 1 -----------------------------  山田 | 2010-09-01 | 1 -----------------------------  田辺 | 2010-10-01 | 2 -----------------------------  田所 | 2010-11-01 | 2 ----------------------------- ■テーブル2 -----------------------------  name |  date  |flag| -----------------------------  加藤 | 2010-10-01 | 1 -----------------------------  佐藤 | 2010-07-01 | 1 -----------------------------  織田 | 2010-12-01 | 2 -----------------------------  斎藤 | 2010-01-01 | 2 ----------------------------- ■求める結果 -----------------------------  name |  date  |flag| -----------------------------  田中 | 2010-06-01 | 1 -----------------------------  佐藤 | 2010-07-01 | 1 -----------------------------  山田 | 2010-09-01 | 1 -----------------------------  加藤 | 2010-10-01 | 1 ----------------------------- 具体的なSQL文でなくとも構いません。参考になるような情報、サイトをご存じでしたら、教えてください。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • テーブルの結合について教えてください。

    テーブルの結合についてわからなくなってしまったので、教えてください。 次のようなテーブルがあります。 counterテーブル ・page_no ・cnt pageテーブル ・no ・member_no linkテーブル ・page_no ・member_no memberテーブル ・no ・name ・flag 各ページにカウンタがついている。 各ページは作成したメンバが記録されている 各ページにはリンクがはられてあり、そのリンクを作成したメンバが記録されている。 各メンバには、退会を示すflagがあり、flag=0が会員、flag=1が退会を示す。 以上のような条件で、 退会していないメンバが関係するページのnoとカウンタの値を取得したい (関係とは、メンバが作ったorリンクを貼った という意味です) のですが、どのように記述すればよいのでしょうか? 自力で考えようとしたのですが、力尽きました。 すみませんが、ご教授お願いいたします。

    • ベストアンサー
    • MySQL
  • access レコードを他テーブルにコピーしたい

    教えてください 現在テーブル5つ(A,B,C,D,E)とそれぞれのレコードを表示するフォームが5つ(A1,B1,C1,D1,E1)あります。 テーブルのフィールドはそれぞれ同じです。 やりたいことはフォーム上からレコードセレクタで選択しているレコードを、 コンボボックスから選んだテーブルに新規追加(コピー)することです。 添付画像のようにフィールドが定義されており、name,addres,phoneだけをコピーしたいと思っています。 よろしくお願いします。 A.mdb =================================================== id     name     addres     phone     etc =================================================== 1     suzuki     tokyo     03333     aaa.txt 2     saito     oosaka     0638      3     tanaka     tokyo     03848     bb.jpg

  • SQL*Loader 別フィールドのデータを編集

    SQL*LoaderでCSVをインポートする際に、 次のようなCSVデータがあるとします。 DENPYO_NO | SALES_QTY | PRICE  1001-01-0001     1      2000 1001-01-0002     2      4000 このデータのDENPYO_NOフィールドの左4桁を取得して別のフィールドにインポートすることは 可能でしょうか? 説明がわかりにくいと思いますが、テーブルに取り込んだ時に以下のようにしたいです。 SECTION | DENPYO_NO | SALES_QTY | PRICE 1001     1001-01-0001     1      2000 1001     1001-01-0002     2      4000 要は一つのCSVフィールドを使用して、複数のテーブルフィールドを更新可能か? ということです。また、そのときの制御ファイルのフィールド項目の定義はどのように記述したらよいのでしょうか? よろしくお願いします。

  • Access2000のテーブル作成クエリについて

    テーブル作成クエリを使用し、作成された新しいテーブルを見ると、Yes/No型のフィールドのレコードが 0 や -1 に変換されています。 これを回避、または後からチェックボックスの形式に訂正する方法はないでしょうか? もうひとつ 作成された新しいテーブルでは、コピー元のテーブルで「主キー」となっていたフィールドが「主キー」ではなくなります。どうしてなのでしょうか?

  • アクセス テーブルデータ他のテーブルにコピーVBA

    win10 access365のmdbファイルにおいて table1のフィールド1がID 数値型 長整数型 値要求あり 重複あり フィールド2が氏名 短いテキスト型 225 値要求なし 重複あり  table2;フィールド1がID 数値型 長整数型 値要求あり 重複あり フィールド2が氏名 短いテキスト型 225 値要求なし 重複あり  上記に置いて table2の新しいデータとして table1のデータをコピーしたい、 ただしtable1には レコードは1行だけとします (table1にレコードが複数行ある場合の最新レコードだけtable2にコピーも出来れば知りたいです) アクセス付属の更新クエリーでは、どうも うまくいきません sqlにおいて UPDATE table1, table2 SET table2.ID = [table1]![ID], table2.氏名 = [table1]![氏名]; 上記動作しません Function table1から2() Dim db As DAO.Database Dim rst As Recordset Dim TB As Table Dim Rdset As Recordset On Error Resume Next Set db = DBEngine(0)(0) Set Rdset = db.OpenRecordset("table2", DB_OPEN_TABLE) Rdset.AddNew Rdset![ID] = Table![table1]![ID] Rdset![氏名] = Table![table1]![氏名] Rdset.Update End Function table1, table2を それぞれ 同名のフォームを作り Function table1から2() Dim db As DAO.Database Dim rst As Recordset Dim fm As Form Dim Rdset As Recordset On Error Resume Next Set db = DBEngine(0)(0) Set fm = Forms![table1] If Rdset.BOF Then Exit Function Else Set Rdset = db.OpenRecordset("table2", DB_OPEN_TABLE) Rdset.AddNew Rdset![ID] = Forms![table1]![ID] Rdset![氏名] = Forms![table1]![氏名] Rdset.Update End If End Function いずれも table2のデータ更新が なされていません すみません 宜しくお願い致します

  • Access データを複数行に貼り付ける方法

    Access2013 テーブルの フィールドで 1つのセルのデータ(例/商品名)をコピーし、 同じフィールドの連続した複数行に貼り付ける方法を教えて下さい。 Excelの様にやってみたのですが出来なかったので。 宜しくお願いします。

  • Accessの重複データについて

    下記のようなフィールドでできたテーブルがあります。 NO│Eメールアドレス│商品名 このデータには同じEメールアドレスで商品名が複数あります。 それを1つのEメールアドレスに対して Eメールアドレス│商品名1│商品名2│商品名3…… のようなテーブルに加工したいのですが 可能でしょうか?

  • access2007同一構造のテーブルを結合

    複数の同一構造のテーブルを結合したいのですが、、、 下記サイトを見てユニオンクエリーとやらを使うまでは理解しましたが、 http://www.serpress.co.jp/access/no005.html 細部が理解できません。SQL文が理解できません。。。 ●テーブル1=saitama、テーブル2=chiba、テーブル3=tokyo、テーブル4=kanagawa ●フィールド内容=会社名/郵便番号/住所/電話番号/FAX/業種 と言う内容ならば、どの様なSQL文?を書けば良いのでしょうか?