治せない「クセ」を教えてください

あるテーブルの型名が空白の場合、同テーブルの部品名を表示させたく、更新クエリで、下記のように式を作成しましたが、空白のままのレコードが残ります。
IIf(IsNull([型名]),[部品名],[型名])

更新クエリのテーブル名やフィールド名は間違ってないように思います。
初心者の為、説明がわかりにくくてすみません。
わかる方教えてください。

A 回答 (7件)

 No.4の続きです。


 うろ覚えで回答を投稿して申し訳ありませんでした。
 ただいま手元で確認しましたが、
IIf(Len(Trim([型名] & ""))=0,[部品名],[型名])
でいけるはずです。(問題点が空白の判定にあると仮定しての話ですが。)
    • good
    • 3
この回答へのお礼

できました~!!
一人で悩んでても、まったくわからず、もっと
早くご相談すればよかったです(^^;)
教えていただいた、一つ一つの関数の意味を今から勉強したいと思います。
本当にありがとうございました。

お礼日時:2006/02/13 14:14

IIf(IsNull([型名]),[部品名],[型名])


Or
IIf(Len([型名] & "")=0,[部品名],[型名])

が使えない状況を正すのが先決と思います。
他の箇所でも、思わぬバグが発生するからです。

・Update文を発行して全半角ブランクをヌル値("")に置換する。
・入力段階で全半角ブランクを登録できないようにする。

これらをお勧めします。
    • good
    • 0
この回答へのお礼

できました!
いろいろな方にアドバイスを頂いて、一通りできましたが
s_huskyさんの言われるように、今後もバグが発生しないように、自分で理解してから、どれにするかよく考えたいと思います。
本当にありがとうございました。

お礼日時:2006/02/13 14:19

IIf([型名] Is Null Or [型名]="",[部品名],[型名])


または
IIf(Trim([型名]) Is Null,[部品名],[型名])
またはTrimでも全角スペースは除けないので
IIf([型名] Is Null Or [型名]=" ",[部品名],[型名])
で出来ませんでしょうか。
    • good
    • 0
この回答へのお礼

2つ目の
IIf(Trim([型名]) Is Null,[部品名],[型名])
だけは、出来ませんでしたが、後残りの2つは両方できました!!今から自分なりに原因追求してみます(^^;)
O_chanさんには以前も的確なアドバイスを頂き感謝しております。これが駄目ならこれ!と言う感じで色々な
パターンがすぐ浮かぶあたりが本当に頭がさがります。
ありがとうございました。

お礼日時:2006/02/13 14:17

 No.3の訂正(?)です。


>[型名]がNullならば0が表示されると思います。
 ごめんなさい。[型名]がNullならばNullが表示されるかも知れません。
IIf(Trim([型名])<" ",[部品名],[型名])
ではどうでしょう?
    • good
    • 0

 Lenというのは長さを返す関数です。

別に集計クエリをつくり、その中で、
Len([型名])
だけを表示させてみてください。
 [型名]がNullならば0が表示されると思います。
 スペースが1個入っていれば、1と表示されます。
    • good
    • 0

クエリで型名がNULLの物を抽出したら、型名を部品名に変更するようにします


----------------------------------
フィールド  |型名  |型名
----------------------------------
レコードの更新|    |
-----------------------------------
抽出条件   |Is Null |[(テーブル]![部品名])

テーブル1というテーブルを作成して型名と部品名フィールドを作成した場合のSQLは
UPDATE テーブル1 SET テーブル1.型名 = [テーブル1]![部品名] WHERE (((テーブル1.型名) Is Null));
です。わかりにくかったら、また、質問お願いします。
    • good
    • 0
この回答へのお礼

できましたっ。
図でわかりやすく説明して頂きありがとうございました。本当にお詳しくて頭が下がります。
なぜ出来たのかを理解する為に、今から考えてみます。
本当にありがとうございました(^^)/

お礼日時:2006/02/13 14:22

 スペースコードが入っているのかも知れません。


 Len([型名])を表示させるとどうなりますか?
 もしスペースを取り除きたいのであれば、確か、Trim関数で取り除けたと思います。

この回答への補足

アドバイスありがとうございます。
Lenと言うのは、スペースを含んでいる値を返す関数でしょうか?
そう認識し、このように式を組んでみましたが変わりませんでした。
IIf(IsNull([型名] Or (Len([型名]))),[部品名],[型名])
Len([型名])を表示させるとどうなりますか?
>>何も表示されませんでした。
せっかく、教えて頂いたのにすみません。

補足日時:2006/02/13 11:29
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A