dポイントプレゼントキャンペーン実施中!

初診者です。簡単なことかもしれませんがご回答お願い致します。
Access2000を使用しています。
前年度のデータと今年度のデータを比較して、
今年度にないものを抽出したいと考えています。
レコードのフィールドは、端末名(一意)、設置場所です。

結合プロパティを使用して、結合条件を端末名にし、さらに
端末名(前年度)抽出条件を "is Null" にすることで抽出
を試みましたが、
設置場所が前年度から今年度に変更した時には抽出可能(*1)
なのですが、端末自体のレコードが今年度に追加されたときは
抽出されません(*2)。
今年度に追加されたときについても抽出できる方法を教えて下さい。

*1の場合(○抽出可)
 ○昨年度テーブル       ○今年度テーブル
端末名 | 設置場所     端末名 | 設置場所
AAA     風呂       AAA    台所

*2の場合(×抽出不可)← 抽出したい
 ○昨年度テーブル       ○今年度テーブル
端末名 | 設置場所     端末名 | 設置場所
   レコード無し       BBB    便所        

A 回答 (3件)

#1です




> 削除したデータを表示されるようにするには

今年度テーブルにあるけど、昨年度テーブルに無いものを抽出する。で良いでしょうか。


新規mdbに以下の小さなテーブル/データを作成し確認していきます。

テーブル名:今年度
フィールド名:端末名、設置場所

端末名...設置場所
AAA......台所
BBB......便所


テーブル名:昨年度
フィールド名:端末名、設置場所

端末名...設置場所
AAA......風呂
CCC......居間

クエリデザインで、「今年度」「昨年度」テーブルを表示させます。

「端末名」どうしを結合し、プロパティで今年度の全レコードと・・・を選択します。

今年度テーブルの「端末名」「設置場所」、昨年度テーブルの「端末名」「設置場所」を順次ダブルクリックしていきます。

ここで、クエリの表示を「データシートビュー」に切り替えると以下の様な表示になります。

今年度.端末名......今年度.設置場所......昨年度.端末名......昨年度.設置場所
AAA...................台所.................AAA................風呂
BBB...................便所................(空白)..........(空白)

クエリの表示を「デザインビュー」に切り替えます。

テーブル昨年度の端末名の抽出条件に Is Null を記述し、再度データシートビューにすると以下の様になります。

今年度.端末名......今年度.設置場所......昨年度.端末名......昨年度.設置場所
BBB...................便所................(空白)..........(空白)

クエリの表示をデザインビューに切り替え、テーブル昨年度の端末名/設置場所の表示のチェックを外し、またデータシートビュー表示にすると

端末名...設置場所
BBB......便所


※昨年度にあるけど今年度に無い、は、結合プロパティを、昨年度の全レコードと・・・
※に変更し、 Is Null を今年度の端末名の条件に記述します。





別の手順の紹介)

上記の「今年度」「昨年度」テーブルを使用します。

データベースウィンドウで、クエリを選んでおきます。

・上(データベースウィンドウ)にある「新規作成」をクリックします。
・「不一致クエリウィザード」を選択し「OK」ボタン
・「今年度」テーブルを選択し「次へ」
・「昨年度」テーブルを選択し「次へ」
・今年度、昨年度のフィールド「端末名」が反転表示されていることを確認し、真中の「<=>」をクリックし「次へ」
・「>>」ボタンをクリックし、「端末名」「設置場所」を表示するようにして「次へ」
・クエリ名を指定して、「クエリのデザインを編集する」を選んで「完了」ボタン

ここで表示されるクエリの内容は、前に作成したものと同じになります。


また、わからなかったら補足にでも書いてください。
    • good
    • 0
この回答へのお礼

非常に分かりやすい説明ありがとうございました。
問題は解決されて、ネクストステージへ行けそうな気がします。
どうもありがとうございました。

お礼日時:2009/09/01 17:37

Accessのクエリーで結合条件のプロパティを開くと


「両方のテーブルの結合フィールドが同じ行だけを含める」
「(テーブルA)の全レコードと(テーブルB)の同じ結合フィールドのレコードだけを含める」
「(テーブルB)の全レコードと(テーブルA)の同じ結合フィールドのレコードだけを含める」
の3種類があると思いますが

テーブルAにしか存在しないレコードを抽出したい場合は
2番目の結合を選び、テーブルBの結合フィールドの抽出条件をIs Nullとします。
逆にテーブルBにしか存在しないレコードを抽出したい場合は
3番目の結合を選び、テーブルAの結合フィールドの抽出条件をIs Nullとします。

結合の種類を2番目から3番目に変えるとき
Is Nullの条件を指定するフィールドも変えなければいけません。
質問者様の例でいうと、
今年度にしか存在しない端末を抽出したい場合は昨年度の端末名をIs Null
昨年度にしか存在しない端末を抽出したい場合は今年度の端末名をIs Null
としなければいけません。
失礼ながら、この点を間違えておられるのではないかと思います。
違っていたらすみません。
    • good
    • 0
この回答へのお礼

解決しました。
逆の場合についても抽出する必要があったので、参考になる
医研どうもありがとうございました。

お礼日時:2009/09/01 17:42

> 結合プロパティを使用して、結合条件を端末名にし、・・・



結合プロパティ内、3種類の結合を選べると思いますが、
それぞれを選んだ時の表示を確認してみてください。


小さいテーブルで、少ないフィールド数で、全てのフィールドを表示するようにしてみてください。
どっちを全レコード指定するかによって、表示が変わります。

その表示状態を確認の上で、抽出条件に Is Null を記述してみてください。

この回答への補足

ご回答ありがとうございます。
表示状態を確認してみました。
3種類の結合のうち、上から2番目のものをチェックした場合に
、上記の質問文のような状態になります。
他の結合の場合には、データの表示すらできません。

削除したデータを表示されるようにするには、どのようにするの
が良いかもしお知りでしたら他の方法でもよいので、お手数です
が教えていただけると助かります。

補足日時:2009/09/01 08:26
    • good
    • 0
この回答へのお礼

問題は解決されて、ネクストステージへ行けそうな気がします。
どうもありがとうございました。

お礼日時:2009/09/01 17:38

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

関連するカテゴリからQ&Aを探す