• ベストアンサー

アクセスの初心者の質問です(空白の場合に他のフィールドを表示させたい。)

あるテーブルの型名が空白の場合、同テーブルの部品名を表示させたく、更新クエリで、下記のように式を作成しましたが、空白のままのレコードが残ります。 IIf(IsNull([型名]),[部品名],[型名]) 更新クエリのテーブル名やフィールド名は間違ってないように思います。 初心者の為、説明がわかりにくくてすみません。 わかる方教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#15567
noname#15567
回答No.6

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

d-loop
質問者

お礼

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

その他の回答 (6)

noname#22222
noname#22222
回答No.7

IIf(IsNull([型名]),[部品名],[型名]) Or IIf(Len([型名] & "")=0,[部品名],[型名]) が使えない状況を正すのが先決と思います。 他の箇所でも、思わぬバグが発生するからです。 ・Update文を発行して全半角ブランクをヌル値("")に置換する。 ・入力段階で全半角ブランクを登録できないようにする。 これらをお勧めします。

d-loop
質問者

お礼

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

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

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

d-loop
質問者

お礼

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

noname#15567
noname#15567
回答No.4

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

noname#15567
noname#15567
回答No.3

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

  • headgear
  • ベストアンサー率23% (6/26)
回答No.2

クエリで型名がNULLの物を抽出したら、型名を部品名に変更するようにします ---------------------------------- フィールド  |型名  |型名 ---------------------------------- レコードの更新|    | ----------------------------------- 抽出条件   |Is Null |[(テーブル]![部品名]) テーブル1というテーブルを作成して型名と部品名フィールドを作成した場合のSQLは UPDATE テーブル1 SET テーブル1.型名 = [テーブル1]![部品名] WHERE (((テーブル1.型名) Is Null)); です。わかりにくかったら、また、質問お願いします。

d-loop
質問者

お礼

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

noname#15567
noname#15567
回答No.1

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

d-loop
質問者

補足

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

関連するQ&A