• ベストアンサー

TXTデータを既存の、Access2000のテーブルへインポートしたいのですが・・・

OSはWindows98SE SoftはAccess2000です。 現在Accessに、約5000件くらいの既存データがあります。(主キー:主索引) -----------------------------------------------------------------  主索引| 発注番号| 発注日 |担当者|販売先|商品番号|商品名・・・   ----------------------------------------------------------------- 00000001|0000000111|20011001| 03 |1001| A001 |ボイド 00000002|0000000222|20011005| 05 |1003| B004 |塩ビパイプ   ・     ・     ・     ・   ・    ・    ・   ・     ・     ・     ・   ・    ・    ・ そこへ約50件くらいのTXTデータを新しく追加及び、既存データに対して追加変更があったデータに修正(上書き)をしたいのですがどなたか教えていただけないでしょうか。 自分なりに、更新クエリを使ってみたり、VBの本を読んだりしたのですがよくわからず悩んでいます。。 何かヒントとなるものでも結構です。 説明が下手で申し訳ありませんがどうぞよろしくお願い致します。

  • tokin
  • お礼率67% (38/56)

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

  • ベストアンサー
  • Watapo3
  • ベストアンサー率76% (33/43)
回答No.5

まず、どこまで解かってて、どこから解かっていらっしゃらないのか解かりませんが(^^;、一から説明してみたいと思います。 現在AccessにあるテーブルをA、約五十件というデータをBというテーブルにインポートしたとします。 Aに無いデータを追加する方法・・・フィールド名・数共に同一であると仮定してあります。 この場合、不一致クエリを使用してAに含まれていないデータを抽出後、そのデータをテーブルに追加クエリを用いて追加します。 具体的には(今後のためにウィザードは使用しません)、 1)新規クエリをデザインビューで開く。 2)A、Bを「テーブルの表示」より追加する。 3)Aの「主索引」にBの「主索引」をドラッグする。 4)結合線が表示されるのでダブルクリックし、「結合のプロパティー」を表示する。 5)「Bの全レコードとAの同じ結合フィールドのレコードだけを含める」を選択。 6)Aの「主索引」をダブルクリックしてクエリにフィールドを追加。 7)フィールドの「表示」チェックをはずし、「抽出条件」に「Is Null」と記述。 8)Bの「*」をダブルクリックして全てのフィールドをクエリに追加。 ここまでで不一致クエリ(Aに無いデータの抽出)は終了です。適当なクエリ名(仮にIQ_Cとします)をつけて保存します。 このクエリを追加クエリに変更します。 9)IQ_Cをデザインモードで開く。 10)メニューバーより「クエリ」→「追加」を選択。 11)追加先を要求されるのでAを選択。 12)抽出条件に「Is Null」が入力されている列の「レコードの追加」(主索引となっていると思いますが)を削除(Delete) これで完成です。 デザインモードで一度開いた後にビューに切り替えると追加されるレコードが表示されます。また、クエリをダブルクリックすれば追加クエリが実行されます。 長くなりましたが、お役に立てれば幸いです。

tokin
質問者

お礼

ご丁寧なアドバイスありがとうございます。 また、返事がおそくなり申し訳ありません。 いただいたアドバイスなら私にも出来そうですので早速実行させていただきます。 本当にありがとうございました。

その他の回答 (5)

  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.6

本は2冊位用意した方が良いと思います。 1.アクセスの操作、入門用  エクスメディア社   長図解 access2000 クエリー&応用編  http://www.x-media.co.jp/ 2.アクセスの少しこったことをしたい用  秀和システム社  access2000パーフェクトマスター  http://www.shuwasystem.co.jp/ 私の場合は、この2冊でした。しかし本屋で立ち読みして比べて見るのが良いかと思います どれにせよ山は高いです。こつこつやりましょう。 魔法使いの開発工房というHPも紹介します

参考URL:
http://www.people.or.jp/~Niki/
tokin
質問者

お礼

アドバイスありがとうございます。 返事が遅くなりまして申し訳ありません。 本と、HPの紹介ありがとうございます。 本は早速本屋さんに行ってこようと思います。 また、魔法使いの開発工房は私も最近、入門&基本コースをこつこつとはじめ とても勉強になっています。 山は高いですが、一つずつ消化しながらがんばって行きたいと思います。 そして私もk ebaさんやWatapo3の様にわかりやすく他の人にアドバイスが出来るようになりたいと思います。 本当にありがとうございました。

  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.4

>同じテープルに複数のクエリを  別にかまいません 使用考え方  1.テーブルを更新クエリを使用して並列処理で使う   1)発注番号更新クエリー   2)発注日更新クエリー   のように使う  2.分類毎にクエリーを直列処理で使う   1)発注日を指定するクエリー   2)1)のクエリーをインプットにして発注日、担当者クエリー   のようにつかう なにか有れば補足して下さい。    

tokin
質問者

補足

重ねて回答ありがとうございます。 また、お返事が遅くなりすみません。 知識不足で申し訳ありませんがクエリ(SQL?)に詳しくないもので、 早速、やってみようと更新クエリを選択したまでは良かったのですが、記述する用語(文法?)がわからずに悩んでしまいました。f^^; どこかにサンプル等のあるところなどございましたら教えていただけるとうれしいのですが、たびたびすみませんがよろしくお願いいたします。

  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.3

>マクロはどのマクロを使用したらよいのでしょうか?  ここで言うマクロとは、  テーブル、クエリー、フォーム、レポート、マクロのマクロです  具体的に機能は、アクセスの機能を登録(カタログ)しておく物です   例)更新マクロ  1.メッセージの設定 (いいえ)  2.テーブルを開く  (更新TBL)  3.コマンドの実行  (全てのレコードの選択)  4.コマンドの実行  (レコードの削除)  5.テキスト変換   (更新TBL)  6.クエリーの実行  (更新クエリー) 以上です がんばって下さい。

tokin
質問者

お礼

回答ありがとうございます。 また、わかりやすい回答で助かりました。 早速がんばってやってみます! 本当にありがとうございました。

  • Watapo3
  • ベストアンサー率76% (33/43)
回答No.2

TXTデータにリンクを貼り、両方に共通のキーがあるのであれば、重複クエリ・更新クエリ・追加クエリ等でVBAを使わずともできるのではないのでしょうか。 但し、とりあえず何か別の新たなテーブルに一度インポートしてから同様の操作をした方がレスポンスは上がると思いますが・… 共通の主キー等が記述されていませんので具体的にはアドバイスできませんが(^ ^;

tokin
質問者

補足

早速のアドバイスありがとうございます。 説明が足りずすみません。共通の主キーは「主索引」となっています。 知識が浅く申し訳ありませんが、同じテープルに複数のクエリを使うことが出来るのでしょうか? お手数ですが、そのあたりをご教授いただけたら幸いです。

  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.1

TXTのデータで直接修正するのは無理があると思います。 したがって TXTのデータを更新TBLにインポートする 原本TBLと更新TBLで更新クエリーを作成して 更新する と言う案ではいかがでしょうか ステップ数は多くなりますがマクロで登録しておけばクリック1発です がんばって下さい。

tokin
質問者

お礼

早速のアドバイスありがとうございます! 一度、TXT自体をテーブルにしてそれから更新クエリーをおこなう! ぜんぜん思いつきませんでした。 ありがとうございます! 大変恐縮ですが、マクロはどのマクロを使用したらよいのでしょうか? ご教授いただけたら幸いです。

関連するQ&A

  • AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・

    Windows98Access2000です。 下記のようなテーブルを元にしたクエリがあります。 主索引(主キー)|手配番号 |行番号|更新回数|発行日 |販売先|・・・ 0101023456  |0101023456|  56|   1|19990301|A001 |・・・ 0101034567  |0101034567|  67|   3|20000503|A235 |・・・    ・       ・     ・   ・   ・    ・ 仮に既存データをA、更新データ(TXT)をBとします。 (更新データは毎朝TXTで決まったフォルダーに落ちてきます。) 同じ項目の更新データBを、下記の条件で最終的に既存データAに新規追加、 上書したいのです。 1.更新データBの主索引は主キーにはなっておらず番号がダブっています。   ただレコードごとに「更新回数」項目に1や2といった番号が入ってますので   、その中から同じ主索引番号がある場合更新回数の一番大きな番号だけを抽出   したい。 2.1で抽出した更新データBを今度は、既存データA(主索引は主キー)に追加す   るのですが、上記と同じくすでに重複する主索引番号が存在する場合A、Bデー   タの「更新回数」項目を見て一番大きい番号を反映(上書)させたい。 2の既存データに追加だけは追加クエリを作り重複しないデータは追加することが 出来るのですが、重複しているデータは「XX件の重複データが・・・」とでて 追加することが出来ません。(あたりまえですかf^^;) ちょっとわけのわからない説明になってしまいましたのでやりたいことを簡単に いいますと、更新データから既存データへ主索引がダブることなく毎朝送られて くる最新データをテーブルに取り込みたいということなのです。 ちょっと思ったのですが、もしかして私は抽出条件式が分かってないだけなので しょうかf^^; おかしな質問で申し訳ありませんが、ご指導の程よろしくお願い致します。

  • Access2010で既存テーブルにインポート

    今、Access2003で、商品販売データ(CSV)をインポートし、店舗コード表テーブルとクエリで付け合わせし、販売店名付きの商品販売データをEXCEL形式でエクスポートするといった簡単な作業を行っています。 この商品販売データ(CSV)は販売した商品のデータの為、毎月フィールド構成が必ずしも一定しないという特長があります。 また、CSVの数も毎月30社分以上ありますが、一定しません。大方は毎月ありますが、一部は、あったりなっかたりします。 例えば ・A社の商品について9月には商品「イ・ロ・ハ」が全店舗で販売されましたが、、10月には「イ・ハ・ニ」だけ売られた。「ロ」は売れておらず、前月売れなかった「ニ」が売れました。 ・B社の商品について9月には商品「ト」を売りましたが、10月にはどの店舗でもB社の商品は販売されていない。 といった具合です。 Access2003でこれを行っていますが、やり方は以下のとおりです。 (1)今まで販売された会社の分だけテーブルおよび結合の為のクエリを前もって作成し。 (2)インポートウイザードで進んでいき最後の方で新規テーブルか既存テーブルか選択するところで「既存」を選択し、CSVに対応したテーブルを選択。 (3)フィールド構成が合ってればそのままインポートが完了する。 (4)フィールド構成が合ってなければ、ひとつ戻って「新規」に切り替え進んでいく。最後の方では(3)で選んだテーブル名が残ってるので、そのまま上書きで完了する。 (5)「(1)」で新たに会社が増えた場合は2・3カ月様子を見て継続してデータが発生するようならテーブルを作成。同時にクエリ等も作成 ・・・といった具合になります。 今度、会社のPC更改に伴い、Accessのバージョンが2010になるのですが、試してみたところ、2010はインポート先テーブルが「既存」か「新規」かを選択する部分が最初に来ます。 その為最後の方でフィールド構成が合わなかった場合、最初からやりなおしになり、既存のテーブル名を生かせす、入力しなおしになります。 今は、既存テーブル名を前もって覚えさせて、そこからコピペするくらいしか思いつかないのですが何かいい方法はありませんか? ご存知の方がいらっしゃいましたらよろしくお願いします。

  • Accessのテーブルへのデータインポートについて

    Accessのテーブルへのデータインポートについて Access2002で、A.mdbのTESTテーブルからB.mdbのTESTテーブル(構造は同じ)へテーブルデータをインポートしたいのです。 TESTテーブルの主キーはSEQ(オートナンバー)しかありません。 そのときに、コピー元とコピー先の主キーに重複があった場合、オートナンバーなので自動で再付番しデータが追加して欲しかったのですが、 Accessの機能のエクスポート、インポートでは、コピー先に主キーに重複があったデータは上書きされてしまいます。 テーブルを開き、データをコピー&ペーストしますと、ペーストしたときにオートナンバーで自動で再付番されます。 この方法でもいいのですが、データが数百万件あるので、現実的ではありません。 Accessのインポート・エクスポートで、オートナンバーで主キーを再付番してから、B.mdbのTESTテーブルにデータ追加する方法はないでしょうか? よろしくお願いいたします。

  • AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・(2)

    OSWINDOWS98SE AC2000 こんにちは、前回「AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・」と言う質問をさせていただいて、教えていただいたSQLを使って色々とやってみたのですがどうしても2番のところで クエリ式'[主索引] delete 既存データA.* from 既存データA inner join 一時テーブル   on 既存データA.主索引 = 一時テーブル.主索引 insert into 既存データA(主索引,更新回数) select 更新データB.主索引'の構文エラー:演算子がありません。 と言うコメントがでてしまいさきに進むことが出来なくなってしまいました。 構文エラー?演算子がありません??他を探してみたのですが乏しい知識の範囲では解決を見つけることが出来ずまた、質問させていただいた次第です。 1番の一時テーブルは作成できるのですが、2番以降がうまくいきません どうかご教授お願いいたします。 1.更新データBから一時テーブルの作成 2.更新されているデータを予め削除する 3.既存データAへ追加データ、更新データをinsert 前回の質問 http://oshiete1.goo.ne.jp/kotaeru.php3?q=155505

  • Access 売上テーブル 月次追加

    マイクロソフトAccess で月次で商品毎の売上数量のテーブルを作成し毎月 データを追加していきたい。商品A,商品B,商品C,,,,それぞれ数量が月次で売上個数をテーブルに入力を考えています。 ただ商品の件数が何千件もあるので,最新のひと月分の売上データはテーブルを作って既存のデータテーブルに追加したいと思います。 その際 追加するデータの方には今までにない商品、例えば商品Xがあったりします。 この場合はasccessではどのように処理すればいいでしょうか テーブル結合? 追加クエリ?

  • Access 既存のテーブルにクエリの計算結果を保存するには?

    クエリの計算結果を既存のテーブルにデータとして追加するにはどうしたらよいでしょうか? 新規テーブルではなくあくまでも既存のテーブルのデータの一つとしてです。 よろしくお願いします。

  • Access マスターテーブル

    Accessについて。 テーブル1がID(主キー)、注文日、商品番号、納期など入力欄の項目で、テーブル2が商品番号(主キー)、商品名で商品のマスターテーブルになっています。 商品番号を入力すれば商品名が表示されるようにクエリを作成し、そのクエリからフォームを作っています。 ここまでは良いのですが、新しい商品番号を入力したときに限りフォームから商品名も入力する事でマスターテーブルに登録されるようにしたいのですが、どうすれば良いでしょうか?

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

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

  • Accessのデータを分割するプログラムを作成したいのですが・・・

    今Accessに他のPCより2つのデータをインポートしてクエリで関連付けをしたいのですが、一方のデータの関連付けたい項目に参照したいデータといっしょに削除したいデータが入っていて困っています。 例1(主索引のヨウトを削除し、10等の番号だけにしたい。) ------------------------------------------|  主索引 | 名称 | カナ | ・・・ ------------------------------------------| ヨウト 10  |せんべい|センベイ | ・・・ ------------------------------------------| それでVBAかVBで分割するプログラムを作成したいのです、がVBは初心者でただ今勉強中です、時間があれば日をかけてじっくりやりたい課題なのですが、仕事で早急に作成しなければならないということも有り、ぜひこれに関するプログラムなどを教えていただけないでしょうか。 どうぞよろしくお願いいたします。 m(__;)m

  • Access2007テーブルの更新

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