プロが教えるわが家の防犯対策術!

アクセス2003を使用しています。

アクセスにて、エクセルファイルをインポートしています。
既にインポートしたエクセルファイルを再度インポートしないように、再取込みを行おうとした場合、
「既に取り込んでいるファイルです」とエラーメッセージを表示させて、取込み防止を行おうとしています。
クエリの重複チェックを設定していたのですが、行き詰ってしまいました。

アクセスのテーブル先頭フィールドの日付データ(yyyy/mm/dd)でチェックしたいと思っています。

教えてください。よろしくおねがいいたします。

A 回答 (2件)

不一致クエリで事足りると言う事なら。


>一緒に1テーブルとしてリネーム保存(kokyaku_all)→新しいファイル
は不要でしょう。

このテーブルと、そのエクセルファイル(取り込み元)で日付を比較して一致しないものを取り込めばいいのです。

とりあえず、そのエクセルファイル(ここでは仮にBとします。)
をリンクなりして、アクセス上のテーブル(同テーブルAとします。)
の日付を比較します。

「クエリ」→「新規作成」から「不一致クエリウィザード」を呼び出し
レコードを抽出するテーブルにBを指定します。
次に、比較に使うテーブルにテーブルAを指定。
共通するデータを含むフィールドに「日付」を各々指定。
選択可能なフィールドを適宜指定。→完了で未取り込みのデータのみが
表示されるはずです。

このクエリをデザインビューで開き、追加クエリに変更し、追加先にテーブルAを指定し、各フィールドの追加先を指定してやります。
これでお望みの結果になるはずですが、作業前には必ずバックアップを
とって自己責任でお願いします。
追加クエリへの変更方法などは探せば相当数ヒットするはずですので
ここでは割愛させていただきます。(というか、各フィールドの正式名称やデータ型などが記載されていませんのでこれ以上のアドバイスは困難です。)
    • good
    • 0
この回答へのお礼

メニューボタンから、マクロにて、不一致クエリ→追加クエリ で希望通りの結果が出ました。こんなに簡単にできるのかと、ちょっと驚きました。
ありがとうございました。

お礼日時:2007/08/29 11:25

>再度インポートしないように、再取込みを行おうとした場合、


>アクセスのテーブル先頭フィールドの日付データ(yyyy/mm/dd)でチェックしたいと思っています

情報が不足しているため何とも言えませんが・・・。
私ならそのエクセルファイルを一旦インポートなり、リンクなりしてから「不一致クエリ」でしょうかね。
で、その不一致のものだけをテーブルに追加。

ただ、この場合既に取り込み元のデータが更新されており、同一の日付データが増えている場合そのデータは取り込まれません。
重ねて言いますが情報が不足しているため、これ以上のことは何とも言えません。
私なら、取り込み元と取り込み先のデータ数をチェックして「同数なら」インポート、そうでなければキャンセルとします。

この回答への補足

情報不足失礼しました。

インポートするファイルは
1週間に1回の頻度で顧客データをインポートします。インポートした顧客データに対応内容を記載して行きます。顧客データの先頭フィールドが日付データ(yyyy/mm/dd)となっています。

2007/08/28にインポートするデータだと

日付     顧客ID  顧客名  対応内容・・・
2008/08/28   10   アアア   (インポート後に入力)
2008/08/28   11   イイイ   (インポート後に入力)
  :     :    :    :

となります。顧客IDは今後、重複する可能性もあるので、日付でチェックしたいです。

インポートは、
マクロで、ファイルをインポートする前に元テーブルを、過去に取り込み分と一緒に1テーブルとしてリネーム保存(kokyaku_all)→新しいファイル(kokyaku.xls名前は固定)をインポート となります。

すでにインポートされているファイルを新たにインポートしてしまい、上書にして、既に入力した対応データが消去されるのを防ぎたいので、

>この場合既に取り込み元のデータが更新されており、
>同一の日付データが増えている場合そのデータは取り込まれません。

これは希望どおりの動作になります。

不一致クエリを使って見たのですが、

>で、その不一致のものだけをテーブルに追加。

この方法が判りません。教えて頂けますでしょうか・・・。

補足日時:2007/08/28 08:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!