• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2つのACCESSファイルのテーブルを比較する方法)

2つのACCESSファイルのテーブルを比較する方法

chie65535の回答

  • chie65535
  • ベストアンサー率44% (8553/19436)
回答No.3

>「不一致クエリウィザード」で確認していたのですが、 不一致クエリウィザードは「2つのテーブルが同じかどうか」には使えません。 不一致クエリウィザードは「特定のフィールド1つ」しか比較しません。 7)の操作の部分で「ID」を選んだ場合「IDフィールドについて、テーブル1にあって、テーブル11にないレコード」のみを抽出し、他のフィールドは無視されます。 なので、クエリで比較する場合は ・「ID」など、ユニークなキーが1つは必要 ・ユニークなキーでテーブルを連結する必要がある ・ユニークなキーが「片方のテーブルにしかない物」をWHERE句で抽出する ・連結に用いないフィールドはWHERE句で不一致の物を抽出する という処理が必要になります。 もし、ユニークなキーが無い場合は、クエリでの比較は出来ません。 テーブルに「ID」「フィールド1」「フィールド2」の項目があった場合、以下のようなクエリが必要になります。 SELECT * FROM テーブル1 LEFT JOIN テーブル11 ON テーブル1.ID = テーブル11.ID WHERE (テーブル11.ID Is Null) OR (テーブル1.フィールド1<>[テーブル11].[フィールド1]) OR (テーブル1.フィールド2<>[テーブル11].[フィールド2]) UNION SELECT * FROM テーブル1 RIGHT JOIN テーブル11 ON テーブル1.ID = テーブル11.ID WHERE テーブル1.ID Is Null; このクエリは「テーブル1にあってテーブル11にない物」と「テーブル11にあってテーブル1にない物」と「テーブル1にもテーブル11にもあるけど、他のフィールドがもう一方のテーブルの内容と異なる物」を抽出しています。 このクエリは、以下のクエリ SELECT * FROM テーブル1 LEFT JOIN テーブル11 ON テーブル1.ID = テーブル11.ID WHERE テーブル11.ID Is Null UNION SELECT * FROM テーブル1 RIGHT JOIN テーブル11 ON テーブル1.ID = テーブル11.ID WHERE テーブル1.ID Is Null UNION SELECT * FROM テーブル1 INNER JOIN テーブル11 ON テーブル1.ID = テーブル11.ID WHERE (テーブル1.フィールド1<>[テーブル11].[フィールド1]) OR (テーブル1.フィールド2<>[テーブル11].[フィールド2]) の冗長な部分を削って短くした物です。 もうお判りかと思いますが、フィールドが何十個もあれば、比較するWHERE句が長大になり、場合によっては「クエリで抽出できない」可能性があります。 当方は「ソートした状態でCSVファイルにエクスポートして、テキストファイルで比較する方法」を強くお勧めします。

yam2012
質問者

補足

回答ありがとうございます。 >方法2 >各テーブルの内容を「ソートした状態でCSVファイルにエクスポート」 >して、1.accdbから抽出したCSVと、2.accdbから抽出したCSVを、 >テキスト比較する。 (1) テキストファイルに出力する時の   ソートの仕方がよく分からないのですが、   テーブルを表示して、ソートするフィールドを選択して、   「ホーム」タブの「並べ替えとフィルター」グループの昇順ボタンで   表示上はソートされます。   念のため、この状態でテーブルを保存しておきます。   この後、「外部データ」タブの「エクスポート」グループの   「テキストファイル」で、エクスポートのウィザードが表示されて、   この2ページ目のエクスポートフォーマットのサンプルのボックス   を見ると並び順が元の並び順で表示されています。   このまま進めると、このサンプルのボックスに表示されている   元の並び順でファイルが出力されてしまいます。   並び替えをした並び順で「テキストファイル」を出力するには   どうすればよいのでしょうか。または、   「テキストファイル」を出力する時にソートする設定が   どこかにあるのでしょうか。 (2) 3つ以上のキーでソートすることはできますでしょうか。 よろしくお願いします。

関連するQ&A

  • エクセルのデータをアクセスのテーブルに移動入力する

    エクセルのデータをアクセスのテーブルに移動入力するVBA フォルダAにおいて、a1.xlsxというファイルがあり、 そのsheet1のセル(a,1)=1 A1が1 とします その値をアクセスのデータベース(これもフォルダAにあります)  b.accdbのテーブル1の フィールド1に入力したいときの エクセルマクロのVBAを御教示いただけると助かります さらに続けて フォルダAにおいて、a2.xlsxというファイルがあり、 そのsheet1のセル(a,1)=2 A1が2 とします その値をアクセスのデータベース上記と同じ  b.accdbのテーブル1の フィールド1に追加で入力したいときの エクセルマクロのVBA 以上わかると助かります よろしくお願いします win10 office365

  • これはアクセスファイルが壊れたという事でしょうか?

    ファイルを開こうとしたら、 'Id'は、このテーブルのインデックスではありません。 'ParentIdName'は、このテーブルのインデックスではありません。 と言うメッセージが消しても消しても出ます。 30回くらい消したらファイルが閉じます。 何回やっても同じ動作です。 新規に、新規 Microsoft Access データベース.accdbを作り リンクテーブルをしようとしても、同じメッセージが出てリンクできません。 もう二度とこのファイルは開けないのでしょうか? アクセス2010です。

  • AccessとSqlServerのテーブルリンク

    Access2007とSqlServer2008を使用しています。 Accessで作成したテーブルを「データベースツール」-「データの移動」でSqlServerに移行してリンクする際、 (1)SqlServerに新規にデータベースを作成すると、リンクテーブルマネージャから見てもリンク先DBが正しく表示されますが、 (2)その後、その既存DBに同じAccess内の別のテーブルを、「データベースツール」-「データの移動」してリンクしたものは、リンクテーブルマネージャから見てもリンク先DBが ()となっており表示されていません。 ツールとしてSqlServer Management Studioを使っていますが、そこからでも(1)のテーブルは表示されていますが、(2)のテーブルは表示されません。 でもリンクはできているようなのです。 また、SqlServer Management Studioを使って、SqlServer内に新規テーブルを作成し、 それをAccessからリンクしようとしても、テーブルリンク一覧内に表示されない状態です。 (「外部データ」-「ODBCデータベース」…)にて SqlServerのファイルデータソースを表示しています) (2)のテーブルはSqlServer Management Studioから見ることができないため、更新・削除もできず困っています。 DB、テーブル、リンク方法等、何か問題があるのでしょうか? よろしくお願いします。

  • ACCESS 同時使用の場合のファイルの扱い

    現在ネットワーク上に、下記の3つのデータベースを作成いたしました。 「データ.accdb」・・・データ蓄積用(CMSで取り込んだデータ1件毎に対して「入力.accdb」から追加入力) 「入力.accdb」・・・「データ.accdb」にデータを入力用(「データ.accdb」へリンクテーブル) 「閲覧.accdb」・・・「データ.accdb」を閲覧用(「データ.accdb」へリンクテーブル) 「入力.accdb」と「閲覧.accdb」では、起動時のメニュー項目が異なるため、別々のデータベースしています。 運用開始の際に、ユーザーには「入力.accdb」または「閲覧.accdb」のどちらかを使用していただくのですが、ネットワーク上にある、この2つのデータベースを使用する方法として、ネットワーク上のデータベースへのショートカットを各PC(ディスクトップ)に作成して使って頂くのと、ネットワーク上のデータベースをコピーして、使用して頂くのでは、どちが良いのでしょうか。 ユーザーは多くて同時に利用は入力用は15名 閲覧用は、30名程度を予定しており、 環境は全員同じくWIN7のACCESS2010です。 アドバイス宜しくお願いいたします。 ※一度質問させて頂きましたタイトル・内容に不備があり、削除し再度質問させていただきました。

  • Access2007のファイル削除

    Access2007を参考書を手に独学しています。 データベースファイル(△△・・・△.accdb)を作成しましたが、削除する方法がわかりません。データベースファイルの削除方法を教えてください。 もう少し具体的に説明しますと・・・ 学習の過程でデータベースファイルを作ったのですが、都合が悪くなって削除したくなりました。しかしAccess2007ではExcelのようにメニューバーに「ファイル(F)」というメニューがありません。 そこでOSの機能を使って直接削除をしました。 ところが削除したにもかかわらずAccessの初期画面では「最近使用したデータベースを開く」という場所に削除したはずのデータベース名が表示されるではありませんか。 無論これをクリックしてもエラーになります。 これを削除する方法を教えてください。よろしくお願いします。

  • アクセス インポートかファイル形式を変えたい

    壊れたアクセスファイルの中身を 新規 Microsoft Access データベース.accdbにインポートするには? 今まで開けてたのに、いきなり開けなくなった、壊れたアクセスファイルがあります。 どうしても開けないので、 新規 Microsoft Access データベース.accdb を作りそこにインポートしようとしたら、 「データベースの形式を認識できません」 となり、インポートできません。 mdb形式なのが原因なのでしょうか? win7、オフィス2010ですが、いままでmdb形式で使えてましたが Windows Updateをしたら、使えなくなりました。 mdb形式が原因なら中身はそのままで壊れたファイルをaccdbに変えたいのですが どうすればいいですか? よろしくお願いします。

  • ACCESSのテーブルを削除した後のファイルサイズ

    ACCESS2002のテーブルをいくつか削除しました。削除後に「ファイル」「データベースプロパティ」でサイズを見ると削除前と変わりません。 データを削除すると当然サイズが小さくなると思ったのですが、変わりませんでした。 「ツール」「データベールユーティリティ」「最適化/修復」をするとサイズが小さくなりました。 WordやExcelなどと違って「最適化/修復」をしないとファイルサイズは小さくならないのでしょうか? また「最適化/修復」は具体的にどんな時に使うものでしょうか?

  • ACCESSでリンクテーブルを自動的に作る方法

    ACCESS2000のデータベースが2つあって、片方のキャンペーンテーブルが2ヵ月に1度くらい随時増えていくので、もう片方のデータベースにそれに応じてリンクテーブルを自動的に増やしていく仕組みを作りたいと思っております。どなたかACCESS+VBAで良い書き方をご存知の方いらっしゃいましたら教えてください。よろしくお願いします。

  • テーブルリンクは途切れてしまいますか?

    アクセスです。 test1.accdbのテーブルをtest2.accdbへテーブルリンクしているのですが 元ファイルのtest1.accdbのファイル名を「新test1.accdb」の様に、変更した場合、テーブルリンクは途切れてしまいますか? また一つ一つ付け直ししないとだめですか?

  • oracle 7.3のアクセス権限

    パスとユーザー名が書かれたテーブルがあったとして、 それが一致するものだけ、他のデータを閲覧できるようにしたいのです。 テーブル上のデータはみられたくあ 上手くviewやアクセス権限を操作してパスとユーザーを一致させる方法はないでしょうか? 接続方法はVBAからoo4oを用いています。オラクルのアカウントは一つです。 select countのみ許可とかできればいいのですが、それは無理でしょうか? データベース初心者ですが宜しくお願いします。