Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : その他)
意味が分からず困っています。
投稿日時: 22/05/10 18:33:15
投稿者: ぽっぺん

 アクセスを勉強しようとテキストを手にした初心者です、CDサンプルのクエリ抽出条件に下記の抽出条件が書かれていましたがテキストの中に解説がなくわからず困っていました。
 どなたかご教授お願いします。
 
Between IIf([Forms]![サンプル]![Album] Is Null,1,[Forms]![サンプル]![Album]) And IIf([Forms]![サンプル]![Album] Is Null,99999,[Forms]![サンプル]![Album])

回答
投稿日時: 22/05/11 09:22:07
投稿者: Suzu

Between
    IIf(
      [Forms]![サンプル]![Album] Is Null,
      1,
      [Forms]![サンプル]![Album]
     )
And
    IIf(
      [Forms]![サンプル]![Album] Is Null,
      99999,
      [Forms]![サンプル]![Album]

    )
 
 
IIf( 条件式 , 条件式『真』のとき, 条件式『偽』のとき)
 
 IIf(
  [Forms]![サンプル]![Album] Is Null,  --- 条件式
        >> フォーム【サンプル】上の コントロール 【アルバム】が Null かどうか

  1,                  ---- 条件式『真』のとき
       >> 1 を返す(9999の時も同様)

  [Forms]![サンプル]![Album]      ---- 条件式『偽』のとき
       >> フォーム【サンプル】上の コントロール 【アルバム】 の値を返す

 
  )
 
なので、
 
抽出条件 Between ○○ And ××
フィールドの値 が ○○ 以上 ×× 以下
は、
 
 
フォーム【サンプル】上の コントロール 【アルバム】が
 Null のとき
   Between 1 And 9999
    → 1〜9999 の値を抽出
 
 Null でないとき
   Between フォーム【サンプル】上の コントロール 【アルバム】の値 And フォーム【サンプル】上の コントロール 【アルバム】の 値
    → フォーム【サンプル】上の コントロール 【アルバム】と 同じ値 を抽出
 
となります。

回答
投稿日時: 22/05/11 15:45:28
投稿者: Suzu

中略をしすぎたかも知れません。
 
Between
    IIf
        (
            [Forms]![サンプル]![Album] Is Null,
            1,               'Album Null の  とき
            [Forms]![サンプル]![Album]   'Album Null でないとき
        )
And
    IIf
        (
            [Forms]![サンプル]![Album] Is Null,
            99999,             'Album Null の  とき
            [Forms]![サンプル]![Album]   'Album Null でないとき
        )

 
上を、[Album]が Null のときNull でないとき に着目し整理すると
 
 
[Forms]![サンプル]![Album]が Null のとき
Between 1 And 99999   '1 から 99999 まで
  ⇒ 1〜9999 の値を抽出

 
 
[Forms]![サンプル]![Album]が Null でないとき
Between [Forms]![サンプル]![Album] And [Forms]![サンプル]![Album]
 → Between △ And △ '△ から △ まで 
  ⇒ 始まりと終わりが同じ値なので
    フォーム【サンプル】上の コントロール 【アルバム】と 同じ値 を抽出

 
となります。

投稿日時: 22/05/11 17:57:37
投稿者: ぽっぺん

 Suzuさん、ありがとうございます。
Between And の文字列時の使い方、Null時の1、99999の意味が理解できました。
ありがとうございました。
解決済みといたします。