- ベストアンサー
このような場合は・・・
WINDOWS2000/ACCESE2000 いつもお世話になってます。 例えば、以下の場合だとどのように組んだら良いでしょうか? もし、A>Bの場合で、1の場合はC+B。2の場合はC+D。 もし、A<Bの場合で、1の場合はE+F。2の場合はE+H。 1つだけだったら、Select Caseを使って出来たのですが・・・ Select Caseを2つ繋いでって出来ないですよね? アドバイス宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Select CaseステートメントよりもIfステートメントを使った方が分かりやすいのではないでしょうか。 If IsNull(登録年) Then If 車検到来区分 = 1 Then 車検到来年 = 基準年 + 2 End If ElseIf IsNull(基準年) Then If 車検到来区分 = 1 Then 車検到来年 = 登録年 + 2 End If End If
その他の回答 (2)
- kumagoro-
- ベストアンサー率57% (36/63)
すいません。 大きな勘違いをしていました。 SQLとVBAが混ざっていたようです。 renaultさんはこの処理をSQLとVBAのどちらでされたいのでしょうか? 1つだけだったら、Select Caseを使って出来たということは、やっぱりVBAでしょうね。 私が書いたのはSQLでした。しかもSQLServerでした。ので忘れてください。 VBAのSelect Caseステートメントならば以下の様に書いてみてはいかがでしょうか? Select Case A Case Is > B Select Case aaa Case 1 bbb = C + B Case 2 bbb = C + D End Select Case Is < B Select Case aaa Case 1 bbb = E + F Case 2 bbb = E + H End Select End Select
補足
アドバイス有難うございます。 度々、質問します。 例えが、A>BとA<Bでしましたが、登録年と基準年があって、登録年が空の場合で 区分が1の場合は基準年+2。基準年が空の場合で区分が1の場合は登録年+2にしたい場合は、 Select Case 車検到来年 Case Is IF IsNull(登録年) Select Case aaa Case 車検到来区分=1 車検到来年=基準年+2 End Select Case Is IF IsNull(基準年) Select Case aaa Case 車検到来区分=1 車検到来年=登録年+2 End Select で良いのでしょうか? お手数かけますが、再度アドバイス宜しくお願いします。
- kumagoro-
- ベストアンサー率57% (36/63)
CASEのネストはできますよ。 SELECT CASE WHEN A > B THEN CASE hoge WHEN 1 THEN C + B WHEN 2 THEN C + D END WHEN A < B THEN CASE hoge WHEN 1 THEN E + F WHEN 2 THEN E + H END END FROM TableName といった感じです。
補足
おはようございます。早速アドバイス有難うございます。 教えていただいた通りに自分で組んでみたら構文エラーが出ました。 Select Case WHEN IsNull(登録年) THEN CASE hoge WHEN 車検到来区分=1 THEN 車検到来年=検査基準年+3 WHEN 車検到来区分=2 THEN 車検到来年=検査基準年+1 END WHEN IsNull(検査基準年) THEN CASE hoge WHEN 車検到来区分=1 THEN 車検到来年=登録年+3 WHEN 車検到来区分=2 THEN 車検到来年=登録年+1 END FROM 保有車両 Select Caseの前に 車検到来年に2000を足さないといけないので、 車検到来年=車検到来年+2000 と記述してます。これがだめなのでしょうか? お手数かけますが、再度アドバイス有難うございます。
お礼
kumagoro-さん、アドバイス有難うございました。 無事、教えて頂いた方法で設定できました。 本当に有難うございました。 今回初めてアクセスをする事になり、毎日が悪戦苦闘です。 また、質問する事があると思いますが、宜しくお願い致します。 有難うございました。