|
>カメとウサギのフィールドの値はNullと長さ0の文字列の判別の仕方が分かりません。どこをみたら判別できますか?
見た目で長さ0の文字列とNull値とを区別することはできません。
どうしてもそれを区別したい場合は、
テーブルの場合は、テーブルのデザインビューで
「書式」プロパティに書式を設定することになります。
そのフィールドがテキスト型の場合、書式プロパティに「;Null」と設定すると、
Null値の場合に「Null」と表示されます。
ちなみに、「;ナル」と設定すると、Null値の場合「ナル」と表示されます。
別の方法として、選択クエリを作り、演算フィールドを設け、
演算フィールドにNz関数を設定してやる方法もあります。
具体的には、選択クエリに新たなフィールドを設け、
そこに「式1:Nz(色,"なる")」と設定して、そのクエリを開くと、
色フィールドがNull値の場合、式1フィールドに「なる」と表示されます。
>ちなみに、クエリデザインビューで色の結合線を外し、商品名だけの結合で、色の抽出条件に「Is null」といれて表示させると、色フィールドに何も入っていない商品だけが抽出されます。また、当初のように商品名と色の両方を結合し、同じように色の抽出条件に「Is null」といれて表示させると何も抽出されません。(この時エラーメッセージが出るわけではありません。)これは、値がnullといことですか?
そのとおりです。
フィールドにNull値を持たせたくない場合、テーブルのデザインビューを開き、
フィールドの「既定値」プロパティに「""」と設定しておくと、
未入力の場合に長さ0の文字列が当該フィールドに格納されるので、
Null値が格納されることを防止できます。
>>>クエリ作成の際に2つのテーブルを商品名どうしと色どうしで結合して表示すると色に項目が入っていないカメとウサギが抽出されません。
これは、色フィールドにNull値が格納されているからです。
Null値は特殊な値なので、「Null = Null」という式が成り立ちません。
言い換えると、Null値とNull値は比較できないのです。
そのため、Null値とNull値を比べても、コンピュータはそれらが同じ値だと判定してくれません。
だから、商品名フィールドと色フィールドを結合フィールドとした場合、
Null同士のレコードを結合してくれないのです。
ところで、テーブルの役割ですが、
テーブルCが受注情報を格納するテーブル、
テーブルAが受注明細を格納するテーブル、
テーブルBが商品マスタのテーブルということですね。
そうであれば、テーブルAには、商品名フィールドや色フィールドを
持たせてはいけません。
テーブルAには商品IDフィールドを設ければ、それで十分です。
もし、受注明細テーブルの情報(例えば数量)と
商品マスタの情報(商品名と色)とを一目で見たいというなら、
受注IDフィールドを結合フィールドとして、両テーブルを結合する選択クエリを
作ります。
結局、前回の私の回答の「最もデータベースらしい解決」ということです。
>ご説明頂いた、
>
>>テーブルBに主キー(例えば商品ID)を持たせ、
>>テーブルAの商品名フィールドと色フィールドは削除して、
>
>は、追加クエリをつかう場面でテーブルAではなくテーブルBに追加するという意味でしょうか?
いいえ、違います。テーブルAのフィールドを
明細ID (主キー)
受注番号
商品ID
数量
というようにするべきだということです。
|
|