Excel VBA質問箱 IV

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

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


8922 / 13644 ツリー ←次へ | 前へ→

【30329】SQL文でできること・・ EXCEL_VBA中の下 05/10/25(火) 15:23 質問[未読]
【30338】Re:SQL文でできること・・ EXCEL_VBA中の下 05/10/25(火) 16:32 回答[未読]

【30329】SQL文でできること・・
質問  EXCEL_VBA中の下  - 05/10/25(火) 15:23 -

引用なし
パスワード
   以前にSQL文を記述することが可能であることを、
ここで回答いただいた者です。
SQLでどこまで出来るのかがわかりませんでした。

やりたいことはYYYY(年)、MM(月)から
年度(4月〜翌3月までの範囲)を求めて出力したいのです。
SQL文の部分だけ抜粋で記述します。
最初は、
    mysql = "Select [YYYY],[MM],[CODE_A],[CODE_B],[CODE_C] " & _
        " from [DATA$] " & _
        " Where [FLG] = 1 " & _
        " Order by [YYYY],[MM],[CODE_A] "
で、満足でした。これに年度を増やしたく、出来るかなぁ・・と思い、
    mysql = "Select " & _
        " Case [MM] " & _
        "  When '01' " & _
        "   Then " & _
        "    [YYYY] - 1 " & _
        "  When '02' " & _
        "   Then " & _
        "    [YYYY] - 1 " & _
        "  When '03' " & _
        "   Then " & _
        "    [YYYY] - 1 " & _
        "   Else " & _
        "    [YYYY] " & _
        " END," & _
        " [YYYY],[MM],[CODE_A],[CODE_B],[CODE_C] " & _
        " from [DATA$] " & _
        " Where [FLG] = 1 AND [CODE_C] = '03' " & _
        " Order by [YYYY],[MM],[CODE_A] "
と、チャレンジしましたが、NGでした。

1.CASE自体が使用できないのでしょうか?
2.CASEの使い方がダメなのでしょうか?

1.の場合は、代替の方法を、2.の場合は、正しい記述のしかたを
教えていただけますでしょうか?

よろしくお願いします。

【30338】Re:SQL文でできること・・
回答  EXCEL_VBA中の下  - 05/10/25(火) 16:32 -

引用なし
パスワード
   自己解決で。
CASEは使用出来なさそうです。

で、
  mysql = "Select " & _
      "   IIF([MM] < '04',[YYYY]-1, [YYYY]), " & _
      "  [YYYY],[MM],[CODE_A],[CODE_B],[CODE_C] " & _
        " from [DATA$] " & _
        " Where [FLG] = 1 AND [CODE_C] = '03' " & _
        " Order by [YYYY],[MM],[CODE_A] "
としてなんとか出来ました。(身近に師匠がおりました・・)
お騒がせいたしました。

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