アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESS初心者です。クエリの抽出条件の記述でお尋ねします。
更新クエリの定義で悩んでいます。どうしたら思い通りになるかご指導願います。

★aaaフォーム
a1 txt
★bbbテーブル
b1 txt key
b2 txt
b3 txt
★ccc更新クエリ(bbbテーブル)
b1
b2
b3
★CCCクエリで抽出条件を色々試しますが結果は以下の○×の通りです。
遣りたい事は、aaaフォーム="1"でクエリ[ccc][b2]が"10"以上の場合に、[ccc][b3]を定数で更新させたいのですが、勉強不足で記述がどうしても分かりません。下記のiifはクエリ画面の[ccc][b2]列の抽出条件の記述です。
○ iif([aaa][a1]="1","10")
× iif([aaa][a1]="1",>="10")
× iif([aaa][a1]="1",">=10")
× iif([aaa][a1]="1","10"or"11"or"12"or"13")

win xp pro
ACCESS2003
です。

以上

A 回答 (2件)

iif文の中にさらにiif文記述できます。


iif([aaa][a1]="1",iif([b2]が10以上の判定,・・・・,・・・・))
iif文の中にiif文書くことで最後に)が必要となります。
忘れないように。
※最大8階層だったと思います。



>iif([aaa][a1]="1","10")

【条件式、真のとき、偽のとき】、と省略しないで書く癖をつけましょう。
このままでは【偽のとき】が省略されている動きになります。
○ iif([aaa][a1]="1","10")
他と違って
偽のとき省略されているが式は成立していることが分かると思います。
    • good
    • 0
この回答へのお礼

iif文の中で複数のiif文を書くことが出来るのですね。
また構文は省略しないようにしたいと思います。
有り難うございました。

お礼日時:2010/08/28 21:11

本来数値型の方が良さそうなデータ型をテキスト型にしているために


余計分かり辛くなってしまっているのだと思います。
質問のとおりに進めて・・・。フォームaaa に非連結型のテキストボックス a1 を作り
a1の値を、1 Enter で確定して置きます。

クエリを新規作成してデザインビューで開きます。
テーブル選択のフォームが出てくるので何もせずに閉じます。
で、そのクエリのデザインビューで右クリックすると、『SQLビュー』というのが
あるので選択
SELECT; ←を消して下記SQL文をコピペ

SELECT bbb.b1, bbb.b2, bbb.b3
FROM bbb
WHERE (((IIf([forms]![aaa]![a1]=1,(CLng([bbb].[b2])>=10)=true,[b2] Is Not Null))=True));

出来たら右クリックしてデータシートビューに切り替えるとお望みの結果がでてくるかと。
クエリのデザインビューに切り替えてみてください。何をやっているか分かると思います。

テキスト型の『数字』は『数値』ではなく『文字』なので
b2フィールドを並べ替えしてみれば分かるように数値のような並び順とはなりません。
辞書順で並び替えられます。
なのでテーブルのフィールド型の検討をされることを強く強くお勧めいたします。
>ccc][b3]を定数で更新させたいのですが、
であれば、なおさら。
あるいはテキスト型の場合には辞書順でも出来るようにゼロフィルして00001などのように必要桁を
確保した形にするなど。
但し上記の場合は更新処理にデータ型の変換処理が付きまとうので
クエリの速度も遅くなります。
    • good
    • 0

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