• ベストアンサー

アクセス インポート時の特定レコードの更新について

ID(連番の主キー:1~1000)をもったレコード1000の「テーブルA」があります。 インポートしたいエクセルには1~50個のIDと付随する情報が記載されています。 エクセルをインポートした際に、「テーブルA」に記載されているIDと紐付くレコードのみを 更新したいのが、どのように実現すればよろしいでしょうか。 ご教示よろしくお願いいたします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

VBAでゴリゴリする方法もありますが、 あまり、あれこれコードを作ったりしないでする方法は、 (1) AccessでExcelのシートをテーブルとしてリンクします。 リンクするとシート名でテーブルがリンクされます。 (リンクの仕方はわかりますね?) 一応、「Sheet1」というリンクされたテーブルができる ものとします。 (2) 新規のクエリをデザインビューで開き、「Sheet1」と 「テーブルA」をデザインビューでテーブルとして 追加します。そして、このクエリを更新クエリに 変更します。次に、デザインビューで以下のように 設定します。 フィールド       フィールド1 テーブル        テーブルA レコードの更新     [Sheet1]![フィールド1] 抽出条件        [テーブルA]![ID]=[Sheet1]![ID] 複数のフィールドについて更新するならば、 フィールド     フィールド1           フィールド2             [Sheet1]![ID]  テーブル      テーブルA           テーブルA レコードの更新   [Sheet1]![フィールド1]   [Sheet1]![フィールド2] 抽出条件                                          [テーブルA]![ID] のようにします。抽出条件の書き方が違いますが、 これは両方登録してもう一度デザインビューで見ると どちらも下の方の表現になっています。 これは、Accessの表現方法です。 このクエリを実行すると、データが更新されます。

yukimushisan
質問者

お礼

piroin654様 無事特定レコードのみ更新することができました。 大変助かりました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1です。 書き忘れましたが、クエリのデザインビューで 「テーブルA」と「Sheet1」の「ID」を結合線で つなげてください。 以上です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ACCESSで一括レコード更新

    あるテーブルのレコードを、別のテーブルのレコードで更新したいです。具体的には、 二つのテーブルは同じフィールドを持っています。 フィールド名はID、名前、住所、電話で構成されています。 テーブルA  001 山田 東京 123456  002 田口 千葉 234567  003 鈴木 埼玉 345678  004 斉藤 佐賀 456789  005 上野 大阪 567890 テーブルB  003 鈴木 長野 345678  004 斉藤 佐賀 890123  008 野口 京都 090909 テーブルAとBでIDが一致するレコードだけテーブルAのレコード をそっくり入れ替えるにはどうしたらいいでしょうか。 この場合、003と004のレコードだけ更新します。 テーブルAのIDは主キーでオートナンバー型になっています。

  • Excelインポート時に見出しの並びが変わる

    お世話になります。 Excel2010 Access2010 Win7Pro ExcelをAccessにインポートすると、見出し(フィールド名)の並びが 変わってしまいます。例えば、  メーカー 型番 品名 数量 ・・・ という見出しのExcelをインポートし、インポート後テーブルを見てみると  ID メーカー 品名 型番 数量 ・・・ というような感じです。 ※ウィザードにて「主キーを自動的に設定する」を選択したので、テーブル  にはIDがあります。 <試したこと>  ・ExcelのA列にIDを予め足して、連番をふった状態でインポートし、そのIDを   主キーとした場合は、並びは変わりませんでした。  ・見出し名1~10(=10列)のExcelを作成し、インポートして主キーを自動設定   したところ、1、2、3、4、5、6、7、10、8、9 というように並びが変わりました。  ・同様に見出し名1~9(=9列)のExcelを作成し、インポートして主キーを自動設定   したところ、1~9並びは変わらずインポートできました。 ということは、インポートウィザードで主キーを自動的に設定した場合は 並びが変わる。但し、フィールド数によっては変わらない場合もある・・・ ということになるかと思いますが、こういう仕様なのでしょうか。 ご教示の程、宜しくお願い致します。

  • Accessへのインポートについて

     Excelで作成したリストを、Accessのテーブルへ追加インポートした時、インポートはできるのですが、主キー(フィールド名はID、オートナンバーに設定)の数値がとんでしまって、大きな数値が入力されてしまいます。  ExcelのIDのセルには空白にしてあります。  そこで疑問なのは、うまくいく時といかない時があることです。  たとえば一つのリストをインポートしたら1~100までちゃんと連番で入るのに、次のリストをインポートしたら、100000~という風になります。  これは何が問題なのでしょうか。同じように設定・作業をしているのですが・・・。  よろしくお願いします。

  • ACCESS2002、レコードのインポートができません!

    初心者です、よろしくお願いします。 ■ 仕様環境 WinXP Access2002 アクセス2002で顧客管理システムを作ってます。 アクセスAのテーブルにアクセスBのテーブルをインポートする時、 レコードだけインポートできないのでしょうか? どうしても違うテーブルが作られてしまいます。 例えば・・ アクセスAに「住所」という項目があり、そこには既にレコードが 何件か入っているのですが、そこにアクセスBの「住所」のレコードを追加したいのですが、 うまくいきません。そういう機能はついていないのでしょうか? また、アクセスBの情報をエクセルファイルに変えて「次のテーブルに保存する」で インポートしたのですが、最後の「完了」ボタンを押すと「エラーが発生し、 インポートできませんでした」という表示がでてインポートできません。 同じように電話番号や名前、メールアドレス等もアクセスAに追加したいのですが、 一つ解決しないと先に進まない気がするのでとりあえず住所だけにしぼってみました。 データを”追加”するような感じでしたいのです! 誰かお知恵を貸してください!

  • Accessのインポートについて(上書きと追加)

    Access2000を使用しています。 インポートについて教えて下さい。 あるテーブルにExcelデータをインポートしています。 「あるテーブル」の設定としましては主キーを設定して いて重複なしにしています。 実現したいこととしましては、Excelデータ上にAccessデータ(すでにあるデータ(主キー))があれば上書き保存して、なければ追加したいのです。 Access側        | Excel側 主キー フィールド1  |  列1  列2    A     ○      |   B   ○ B     ×      |   D   × C     ○      |   E   ×   つまり上記の表でAccess側Bデータのフィールド1の「×」 をExcelデータをインポートすることにより「○」に 変更(上書き保存)したいのです。 そして、Excel側D・EデータはAccessに新規レコードと して追加したいのです。 よい方法はないでしょうか? なお、私の知っている知識としましては、 インポートするとデータは上書き保存されずに 追加されてしまうということは知っているのですが。 以上、よろしくお願い致します。

  • Access 複数テーブルのレコード自動更新

    Access初心者です。会社で業務の進捗状況を、Access2002を使って管理しています。 フィールド数が増えたので、以下のようにテーブルを分けることになりました。 Aテーブル(メイン)   管理No.(主キー、オートナンバーではない)    カテゴリ    作業内容    : Bテーブル   管理No.(主キー、オートナンバーではない)    チェック項目B-1   チェック項目B-2    : Cテーブル   管理No.(主キー、オートナンバーではない)    チェック項目C-1   チェック項目C-2    : という形式で、AとB・Cはクエリのリレーションシップで、「管理No.」を1対1で関連づけています。 AテーブルのもとのデータはExcelからインポートしますが、 Aテーブルのレコード数は増えますが、クエリには反映されません。 Aのレコードが増えたら、BやCも同時に増やすことはできますか?

  • レコードの更新履歴について

    Oracle初心者です。 レコードの更新履歴を残す方法を考えているところです。 ■やりたいこと 1)登録、更新、削除の全てについて 2)実行前のレコードを抽出したい 3)特定レコードの更新履歴を一覧として表示したい ■対象レコード ID(主キー、ユニーク) フィールドA(テキスト) フィールドB(テキスト) フィールドC(テキスト) 1つ方法として・・・ 履歴を残したいテーブルと同じ構造の履歴テーブルを作成して、登録、更新、削除が行われる際、必ずこの履歴テーブルに登録することを考えました。 が、あまりスマートでない気もしましたので質問します。 他によい案はありますでしょうか?

  • Access(アクセス)でのインポートについて

    テーブルのインポートでエクセルファイルをインポートしたいのですが「ワークシートインポートウィザード」の画面でテーブルを指定して保存すると 「Microsoft Access」の画面で「すべてのデータをテーブルに追加できませんでした。 キー違反のため、0件のレコードのデータが失われ、0件のレコードが削除されました。」と出てきて、保存できません。 もとのテーブルのデータ型を使ってインポートするにはどうしたらいいのでしょうか。よろしくお願いします。 インポートする元のデータ(エクセル)とインポート先(アクセス)の関係は次の通りです。 エクセルファイル    アクセスのテーブル (セルの書式設定)   データ型、フィールドサイズ --------------------------------------------- 数値          数値型、長整数型 文字列         テキスト型、16 インポートする前に元のエクセルデータをアクセスのデータ型に合わせただけではダメなのでしょうか

  • 特定のレコードのみの更新クエリ

    過去ログより、項目の更新クエリはありましたが、 特定のレコードの更新方法はどう考えればいいのかアドバイスください。 テーブルには、毎月あたらしいデータがインポートされていきますが、 前月と比べて同じレコードは削除して常に新しいレコードにしておきたいのですが、これは一旦、重複クエリで重複レコードすべて削除してから新しいデータをインポートする2段階の方法をとるしかないのでしょうか?

  • Excel→Accessテーブル インポート後の主キーについて

    Excelで作成したリストを、Accessテーブルへ追加インポートしたとき、 インポートはできますが、主キーの数値が大きく桁違いな数字が現れてしまいます。 例えば、Accessテーブルのレコード数が10957件あります。 主キーの一番最後の数字は10980番です。(途中いくつか削除しました) Excelのレコード数は100件あり、これを追加インポートしますが、     10979     10980  85200513  85200514  85200515  85200516     ・     ・     ・ というように、10980以下の主キーの数値が、まったく桁違いになってしまいます。 どうしてこのようなことになってしまうのでしょうか? ソフトはExcel2002、Access2002です。

専門家に質問してみよう