• ベストアンサー

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

あるテーブルの型名が空白の場合、同テーブルの部品名を表示させたく、更新クエリで、下記のように式を作成しましたが、空白のままのレコードが残ります。 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

  • アクセスクエリでの空白の値の表示

    フォームで条件フィールドから2つ同時の検索をかけたく クエリに以下の式を記載致しました。 検索はかかるのですが空白のデータがでてきません。 空白のデーターも表示させたいためにはどうしたらいいでしょうか? 式1: IIf(IsNull([Forms]![フォーム]![条件1]) And IsNull([Forms]![フォーム]![条件2]),True,[条件]=[Forms]![フォーム]![条件1]Or [条件]=[Forms]![フォーム]![条件2] 抽出条件  True

  • ACCESSでテーブルのフィールドに一括で数値の代入する方法

    初心者なので、宜しくお願い申し上げます。 ACCESSでテーブルのフィールドに一括で数値の代入する方法を教えてください。 あるテーブルにあらたにフィールドを追加しました。 データ型は「数値型」で「長整数型」にしています。 このフィールドに一括で数値「0」を入れたいのですが、更新クエリーではできないのでしょうか? 更新クエリーで「レコードの更新」の式を *0 =0 +0 &0 などいろいろやっても何も更新されません。 どうか宜しくお願い申し上げます。

  • アクセス チェックボックスとクエリ

    いつもお世話になっております。アクセス初心者です。 あるフォームのチェックボックスのオンオフとコンボボックス、 クエリの選択条件が思うように連携できなくて困っています。 やりたいことは、、、フォームのチェックボックスが、 ON(True)ならば、 フィールドにコンボボックスのキーワードを含むレコードおよびフィールドが空白のレコードを抽出し、 OFF(False)ならば、 フィールドにコンボボックスのキーワードを含むレコードのみでフィールドが空白のレコードは抽出しない、 としたいのですが…。 IIfやSwitchで式を書きましたが、チェックを入れても外しても、どちらも抽出件数が0件になります。 クエリの実行は、コマンドボタンで別のフォームを開いています。 (IIfでは、エラーが出ているのか、チェックを入れた時『~キャンセルされました』と出ます。  IIf(…,…,IIf(…,…,…)) という感じで書きました。) Switchの時のクエリの抽出条件の式は、次のような感じです。 Switch([Form]![チェックボックス]=True,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*" Or Is Null,[Form]![チェックボックス]=False,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*") ( Like の前の『([テーブル名].[フィールド名])』は、式をビルドすると、勝手に追加されてきます。) このようなことはできないのでしょうか? 別の方法が必要でしょうか? すみませんが、教えてください。宜しくお願い致します。

  • Accessです。テーブルのフィールド名変更

    初心者です。お願いいたします。 仕事で、Accessを使っています。 素人なりにそれらしいものを作って使っていたのですが、困ったことに元ととなるテーブルのフィールド名を変更しなくてはならなくなりました。 そのテーブルに関係するクエリーをたくさん作っている場合、フィールド名を変更することによって関係するクエリーも一つ一つ変更していかなくてはならないのでしょうか? テーブルのフィールド名を変更すると、関係するクエリーのフィールド名も自動的に更新できるという方法はあるのでしょうか? 初心者でスイマセン。よろしくお願いします。

  • ACCESS【更新クエリの中断ができない】

    ACCESS初心者です。質問がわかりにくかったらすみません。 ACCESSの更新クエリで、レコードのカンマをスペースに置き換える式を作りました。 クエリを実行すると、 ”更新クエリを実行すると、テーブルのデータが更新されます” と、メッセージが表示され”はい”で次に進むと ”*件のレコードが更新されます。”と正確な件数が表示されます。 ただ、ここでやはり中断したいと思い、”いいえ”を選択しても、 レコードは更新されてしまいます。何故でしょうか?教えてください。 ______________________ フィールド:     型名 テーブル:      データ統合 レコードの更新:  Replace([型名],","," ") 抽出条件:     Like"*,*"

  • accessのクエリのフィールドで式入れて並び替えする方法

    アクセスの初心者ですですが、本を見ながらですがようやくVBAを使えるようになりました。レベルはその程度です。 標記のとおり、クエリのフィールドに式を入れたら並び替えができなくなりました。式は以下のとおりです。 ●●●: IIf([●●●]>=14,[●●●]*0,[XXX]+(14-[●●●])) データシートビューにすると、XXXの小窓が出てきます。 フォームでもテーブルでもレポートでも並びかえができました。 クエリの式は並び替えができないものなんでしょうか? なければ結構ですが、なにか方法があったり、使い方が間違って いるなら教えてください。 よろしくお願いします。

  • Access2003 クエリ フィールドの比較

    使用しているソフトはAccess2003になります。 テーブル1とテーブル2からデータ(フィールド)を表示してクエリを作成しました。 クエリのフィールド名は以下のようになります。 1、型式(テーブル1) 2、機番(テーブル1) 3、有効期限(テーブル1) 4、測定基準値(テーブル1) 5、機番(テーブル2) 6、紐づけ(テーブル2) ※ 使用者名が記載 テーブル1_機番とテーブル2_機番を比較して同じならば並び変える。 フィールドもしくは抽出条件にどのような式を記入すればよいでしょうか。 データベースソフトの扱いは初心者になります、宜しくお願いします。    

  • accessで空白の時の抽出

    access2000を使っています。まだ初心者なので難しい事はできないのですが、クエリを使って絞り込み検索のフォームを作っています。 テーブル内のデータで空白のデータがあります。その際にクエリの抽出条件にlike iif(is null([forms]![formA]![テキスト100]),"*","*"&[forms]![formA]![テキスト100]&"*")としています。フォームのテキストが空白のときは全て抽出するという条件を満たす予定で設定したのですが、テーブル内のデータが空白の物が抽出できません。データが空白がない様にすればいいのでしょうが、クエリの条件で設定できないものでしょうか?データはテキスト型です。

  • ACCESSのフィールドに記述する式について

    次のソフトを使っています。 ACCESS 2003 Windows7 次のことをやりたいです。 1つのレコードに業者が20フィールドほど並んでいるテーブルを作成しました。 クエリのフィールドに式を1つ追加しまして、1レコードの中で 業者フィールドにNullが1つ以上あるかないかを調べる式を 作りたいです。 1つも無ければ、値を表示し、1つ以上ある場合は値を表示しないという ことをやりたいのです。 そもそも、このようなことができるのかもわかりませんが、 どなたかお助けくださいませ。 よろしくお願いいたします。

  • アクセスのクエリで

    あるテーブルはエクセルからインポートしていますが、全てのフィールドが空白というレコードが多数存在します。 これをクエリで(他に方法があればどの様な方法でもよいです)全てのフィールドが空白のレコードは表示しない様にする事はできますか? これを更新クエリにして、新しく全て空白のフィールドのレコードが無いテーブルを新たに作ろうと考えています。 教えて下さい。よろしくお願いします。

専門家に質問してみよう