過去の桐井戸端BBS (桐ver.8)
15671 2つの項目でどちらかの項目にデータが入っているレコードを絞込みしたい jimmy cliff 2002/04/10-22:46
テーブルの絞込みについてお尋ねします。
以下のようなテーブルがあるとして

|名前 |家の電話番号|携帯番号|
|Aさん |   0001    |  0901   |
|Bさん |   0002    |        |
|Cさん |           |  0902   |
|Dさん |           |        |

Aさんは家の電話番号も携帯番号もわかっている人
Bさんは家の電話番号しかわからない人
Cさんは携帯番号しかわからない人
Dさんはどちらもわからない(入力していない)人

で、どちらかわかっている人だけ絞り込んで一覧表で電話帳を作りたいのですが
どうゆう風に絞り込めばいいのでしょうか。
結果的にDさんだけ除外できればいいのですが、どうしてもできません。
どちらもわかっている人とゆうのはできるんですけど。
どなたかお教え願います
15672 Re:絞込みの仕方 【多遊】 2002/04/10-23:12
記事番号15671へのコメント
jimmyさん>こんばんは

>で、どちらかわかっている人だけ絞り込んで一覧表で電話帳を作りたいのですが
>どうゆう風に絞り込めばいいのでしょうか。
>結果的にDさんだけ除外できればいいのですが、どうしてもできません。
>どちらもわかっている人とゆうのはできるんですけど。

項目を別途作成し・・・云々というのがありますが「桐」では殆どの処理が会話処理でできます。
今回は一番基本の会話処理でご紹介します。是非覚えてくださいね

桐の絞り込みに、「1:比較式・2条件名・3:重複行・・・・・」と
いうのがあります。
通常ひとつの項目の条件で絞り込みするときは比較式でもいいのですが、
複数の項目に条件を設定するときは、条件名を利用します。
(比較式で複数の項目も設定できますが、それは慣れたらまた覚えてください)

その、比較式での絞り込みは
メニューから言うと、/スラッシュメンッユー・V絞り込み・2条件名・
新規作成
ここで、比較条件を設定します。仮に項目名が
[氏名][家庭][携帯]とします。

その場合、条件1の[家庭]に、<>#未定義、条件2の[携帯]に、<>#未定義、を設定後実行します。

これで、目的の絞り込みは可能です。

覚えて欲しいのは、なぜ、条件2を使用したかということです。
条件1と条件1に、「<>#未定義」を設定すると、[家庭][携帯]のどちらもデータが入ってるものを選びます。
どちらか片方でいい場合は、条件をわけて記述します。

成功したら、他の例でもお試しください。

15674 Re:絞込みの仕方 【多遊】 2002/04/10-23:25
記事番号15672へのコメント

>覚えて欲しいのは、なぜ、条件2を使用したかということです。
>条件1と条件1に、「<>#未定義」を設定すると、[家庭][携帯]のどちらも

いったいなにを書いてるのやら
>条件1と条件1に、「<>#未定義」を設定すると、[家庭][携帯]のどちらも
これは、条件1だけに「<>#未定義」を設定すると、[家庭][携帯]のどちらも
と読み替えてください。

15677 Re:絞込みの仕方 jimmy cliff 2002/04/10-23:55
記事番号15674へのコメント
成功しました。有難うございます。
しかし、「<>#未定義」という式は、はじめてお目にかかりました。
とりあえずできましたが、答えてもいただいた内容がまだよく理解できないので
今から、条件1に両方とも入れてみて試そうと思います。

私の考え方では「#定義」の反対が「#未定義」しかありませんので、理解しにくいです。

ありがとうございました。

う〜〜〜ん。難しい。

15681 #定義と#未定義 toshi-chan 2002/04/11-05:58
記事番号15677へのコメント
jimmy cliffさん、おはようございます。

>私の考え方では「#定義」の反対が「#未定義」しかありませんので、理解しにくいです。

私も初めはそのように思っていました。
本を読んでそうではないらしいことはわかったのですが、
じゃあ一体何なのかということはなかなか理解できなかった記憶があります。

#定義・・・・値が定義されているか、それとも、定義されていないのか、を判定する関数。
      
#未定義・・・未定義値を返す関数。判定する機能はない。
       一括処理のなかで
           代入 &桐=#未定義
       と書くと、変数&桐に未定義値を代入することになります。これは、
           代入 &桐=””
       と書いても同じ意味です。#定義はこのような使い方はできませんよね。

*************************************************************************
絞込みの場合の考え方ですが、こんなのでいかがでしょうか。

比較式に「#未定義」を使用した場合
→比較式の値が未定義となり(と言うよりも、値がないと言った方が正確かな)、項目値が未定義のレコードが絞込まれる。
例えば、年齢が30歳の人を絞り込むときに、比較式に30と入力するのと同じような感覚です。

比較式に「#定義」を使用した場合
→各々のレコードの項目値が定義されているか否かを調べ、真(1)か偽(0)かを返す。
その結果、真(1)のレコードが絞込まれる。

戻る