- ベストアンサー
アクセスの初心者の質問です(空白の場合に他のフィールドを表示させたい。)
あるテーブルの型名が空白の場合、同テーブルの部品名を表示させたく、更新クエリで、下記のように式を作成しましたが、空白のままのレコードが残ります。 IIf(IsNull([型名]),[部品名],[型名]) 更新クエリのテーブル名やフィールド名は間違ってないように思います。 初心者の為、説明がわかりにくくてすみません。 わかる方教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
No.4の続きです。 うろ覚えで回答を投稿して申し訳ありませんでした。 ただいま手元で確認しましたが、 IIf(Len(Trim([型名] & ""))=0,[部品名],[型名]) でいけるはずです。(問題点が空白の判定にあると仮定しての話ですが。)
その他の回答 (6)
IIf(IsNull([型名]),[部品名],[型名]) Or IIf(Len([型名] & "")=0,[部品名],[型名]) が使えない状況を正すのが先決と思います。 他の箇所でも、思わぬバグが発生するからです。 ・Update文を発行して全半角ブランクをヌル値("")に置換する。 ・入力段階で全半角ブランクを登録できないようにする。 これらをお勧めします。
お礼
できました! いろいろな方にアドバイスを頂いて、一通りできましたが s_huskyさんの言われるように、今後もバグが発生しないように、自分で理解してから、どれにするかよく考えたいと思います。 本当にありがとうございました。
- O_cyan
- ベストアンサー率59% (745/1260)
IIf([型名] Is Null Or [型名]="",[部品名],[型名]) または IIf(Trim([型名]) Is Null,[部品名],[型名]) またはTrimでも全角スペースは除けないので IIf([型名] Is Null Or [型名]=" ",[部品名],[型名]) で出来ませんでしょうか。
お礼
2つ目の IIf(Trim([型名]) Is Null,[部品名],[型名]) だけは、出来ませんでしたが、後残りの2つは両方できました!!今から自分なりに原因追求してみます(^^;) O_chanさんには以前も的確なアドバイスを頂き感謝しております。これが駄目ならこれ!と言う感じで色々な パターンがすぐ浮かぶあたりが本当に頭がさがります。 ありがとうございました。
No.3の訂正(?)です。 >[型名]がNullならば0が表示されると思います。 ごめんなさい。[型名]がNullならばNullが表示されるかも知れません。 IIf(Trim([型名])<" ",[部品名],[型名]) ではどうでしょう?
Lenというのは長さを返す関数です。別に集計クエリをつくり、その中で、 Len([型名]) だけを表示させてみてください。 [型名]がNullならば0が表示されると思います。 スペースが1個入っていれば、1と表示されます。
- headgear
- ベストアンサー率23% (6/26)
クエリで型名がNULLの物を抽出したら、型名を部品名に変更するようにします ---------------------------------- フィールド |型名 |型名 ---------------------------------- レコードの更新| | ----------------------------------- 抽出条件 |Is Null |[(テーブル]![部品名]) テーブル1というテーブルを作成して型名と部品名フィールドを作成した場合のSQLは UPDATE テーブル1 SET テーブル1.型名 = [テーブル1]![部品名] WHERE (((テーブル1.型名) Is Null)); です。わかりにくかったら、また、質問お願いします。
お礼
できましたっ。 図でわかりやすく説明して頂きありがとうございました。本当にお詳しくて頭が下がります。 なぜ出来たのかを理解する為に、今から考えてみます。 本当にありがとうございました(^^)/
スペースコードが入っているのかも知れません。 Len([型名])を表示させるとどうなりますか? もしスペースを取り除きたいのであれば、確か、Trim関数で取り除けたと思います。
補足
アドバイスありがとうございます。 Lenと言うのは、スペースを含んでいる値を返す関数でしょうか? そう認識し、このように式を組んでみましたが変わりませんでした。 IIf(IsNull([型名] Or (Len([型名]))),[部品名],[型名]) Len([型名])を表示させるとどうなりますか? >>何も表示されませんでした。 せっかく、教えて頂いたのにすみません。
お礼
できました~!! 一人で悩んでても、まったくわからず、もっと 早くご相談すればよかったです(^^;) 教えていただいた、一つ一つの関数の意味を今から勉強したいと思います。 本当にありがとうございました。