Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1775 / 2272 ツリー ←次へ | 前へ→

【5360】クエリの計算方法について ももんが 05/6/11(土) 21:35 質問[未読]
【5361】Re:クエリの計算方法について Gin_II 05/6/12(日) 4:23 回答[未読]
【5363】Re:クエリの計算方法について 小僧 05/6/12(日) 9:35 回答[未読]
【5364】Re:クエリの計算方法について ももんが 05/6/12(日) 15:15 回答[未読]

【5360】クエリの計算方法について
質問  ももんが E-MAIL  - 05/6/11(土) 21:35 -

引用なし
パスワード
   テーブル1があり、1レコードの中にa,b,cというフィールドがあるとします。

クエリを使って
1 a,b,c共に空白だったら 0
2 a,b,cいづれか2つが空白だったら 1
3 a,b,cいづれか1つが空白だったら 2
4 1〜3のどれにも当てはまらなかったら 3

という数字を出すようにクエリで計算をし、その答えをほかのテーブルに追加しようと思っています。

そこでよい方法が思い浮かばず,
下のような計算方法(IIF関数)を使いましたが、計算するどころか「かっこの使い方が不正です」などとエラーがでてしまい、上手くいきません。いろいろと試してみましたがダメでした。

IIf("(IsNull([a]) And IsNull([b]) And IsNull([c]))","0","IIf("(IsNull([a]) and IsNull([b])) Or (IsNull([a]) Or IsNull([c])) Or (IsNull([b]) And IsNull([c]))","1","IIf("IsNull([a]) or IsNull([b]) Or IsNull[c])","2","3")")")

式もややこしく、どこが間違っているのかさっぱり分かりません。
どこが間違えているのでしょうか?

また、もっと他によい方法はありますでしょうか?

【5361】Re:クエリの計算方法について
回答  Gin_II  - 05/6/12(日) 4:23 -

引用なし
パスワード
   >式もややこしく、どこが間違っているのかさっぱり分かりません。
>どこが間違えているのでしょうか?

IIf("(IsNull([a]) And IsNull([b]) And IsNull([c]))",
  "0",
  "IIf("(IsNull([a]) and IsNull([b])) Or (IsNull([a]) Or IsNull([c])) Or (IsNull([b]) And IsNull([c]))",
     "1",
     "IIf("IsNull([a]) or IsNull([b]) Or IsNull[c])",
       "2",
       "3")
     ")
   ")

こうすると、ちょっと分かりやすいかな。
少なくとも、比較式の部分に引用符(")をつかっているのは間違っていますよね。

【5363】Re:クエリの計算方法について
回答  小僧  - 05/6/12(日) 9:35 -

引用なし
パスワード
   ▼ももんが さん、Gin_II さん:
おはようございます。

>>式もややこしく

という事で発想の転換をお勧めします。

[a]に値が空白なら「0」値が入っていれば「1」
[b]に値が空白なら「0」値が入っていれば「1」
[c]に値が空白なら「0」値が入っていれば「1」

を入れ足し算してみる。

IIf(IsNull([A]),0,1)+IIf(IsNull([B]),0,1)+IIf(IsNull([C]),0,1)

でいかがでしょうか?

【5364】Re:クエリの計算方法について
回答  ももんが E-MAIL  - 05/6/12(日) 15:15 -

引用なし
パスワード
   Gin_II さん,小僧さんありがとうございます。

[a]に値が空白なら「0」値が入っていれば「1」
[b]に値が空白なら「0」値が入っていれば「1」
[c]に値が空白なら「0」値が入っていれば「1」

確かにこれでも成立する計算になります。試してみたところ、思い通りの結果になりました。

また、私の考えていた式も「"」をとってみたところ、同じ結果が得られました。
分からないときは他の方々に相談してみると以外に簡単な結果が得られるのでとても助かります。

本当にありがとうございました。

1775 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078264
(SS)C-BOARD v3.8 is Free