• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>「項目A」がダブりのないデータですのでこれをキーに二つのテーブルをつなぎ、 >更新クエリに変更後 Aテーブルの項目Bフィールドの >「レコードの更新:」に[テーブルNEW]![項目B] と書くのですよ Aは同じはずですから更新する必要はありません

ohdorry
質問者

お礼

ありがとうございました。 おかげさまでテスト用のデータベースではうまくいきました。 本物は更新用のデータがないのでまだできませんが、おそらく できそうな感じです。

その他の回答 (2)

  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.2

ExcelシートのABCDのどれかが通番や商品番号など、そのレコードを特定できる物が有る場合は可能です。 たとえばAが通番だとしてそれが変更されないものだとしたら、ACCESS側のテーブルとしてAEFGの列を作成し、クエリーのキーとしてExcelからインポートしたテーブルとACCESS側のテーブルのAを結合フィールドとして関連付けし、双方の列を出力すれば出来ます。 そのときの結合プロパティとしては双方のA列に対し、「両方のテーブルの結合フィールドが同じ行だけを含める。」とすればそのクエリをテーブルのように更新することも可能です。 ただExcelシートを更新するときにマッチさせるための列の値を変更してしまうと違う値と関連付けられてしまいますので注意は必要です。 更新クエリでインポートした内容を別テーブルに更新する場合も更新するレコードに対しての関連付けが必要になってくると思います。 一度、クエリの使い方に関しての全般をお調べになる事と、仮のテーブルを二つ作ってクエリで結合させた内容を表示するなど、クエリの使い方に対してなれる事が必要です。 クエリを使用する事がデータベースを利用する中で一番難しく、データベースエンジンらしい処理となりますので丁寧に勉強してください。

ohdorry
質問者

お礼

ありがとうございました。 >そのときの結合プロパティとしては双方のA列に対し、「両方のテーブルの結合フィールドが同じ行だけを含める。」とすればそのクエリをテーブルのように更新することも可能です。 下に書きました方法をやってみたとき3種類全部の結合のプロパティを試しましたがいずれもダメでした。 「テーブルA」「テーブルNEW」の同じ項目の箇所だけ変更するような状態でした。 「テーブルA」を「テーブルNEW」にそっくり変えたかったのですが。 (項目「E、F、G」以外)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

更新クエリでできます 調べてみてください

ohdorry
質問者

補足

ありがとうございました。 いろいろ調べて自分で以下のところまでやってみましたが・・・ ※更新用のテーブル「テーブルNEW」があるとします。 まず元の「テーブルA」で選択クエリを作り、そこにテーブルの追加で「テーブルNEW」を持ってきました。 「項目A」がダブりのないデータですのでこれをキーに二つのテーブルをつなぎ、更新クエリに変更後、「レコードの更新:」に「[テーブルNEW]![項目A]、[テーブルNEW]![項目B]…と入力しました。 しかしうまくいきませんでした。 二つのテーブルの結合させ方?がまずいのではと思いますが、これ以上は私のスキルではわかりません。 よろしければアドバイスをお願いいたします。

関連するQ&A