Microsoft Access 掲示板

SQLの中にSQLを入れる方法

4 コメント
views
4 フォロー

SELECT 管理番号,IIf(instr(管理番号, "csd") = "",価格 = Int(価格 - (220 0.088 + 100) 0.95 / 0.934+0.5),価格 = Int(価格 - (220 0.088) 0.95 / 0.934+0.5), FROM データ WHERE (出品日 Between #2020/06/18# And #2020/07/23#)

    adoRs.Open strSQL, adoCn 'SQLを実行して対象をRecordSetへ

もし、管理番号の中にCSDと「いう文字が含まれていなかったら
として処理したいのですが、どうしたらよいのでしょうか?

いろいろ試してみたのですが、行き詰ってしまいました。
アドバイスを頂けたら幸いです。

5流クン
作成: 2020/09/29 (火) 19:21:58
通報 ...
1
5流クン 2020/09/29 (火) 20:26:25 aac31@79d1a

 Cd = "管理番号,Int((価格 - IIf(管理番号 = 'csd-',19.36,119.36) 0.95) / 0.934)

と変更して、その場しのぎはできたのですが、
非常に汎用性が低いので、
正しい処理の仕方を、ご教授できたらと思います。

2
hiroton 2020/09/30 (水) 08:38:33 1c7e9@f966d

管理番号の中にCSDという文字が含まれていなかったらどうしたい?がないと回答も中途半端にしかできないですが

InStr 関数

基本、InStr()は結果が数値ですInStr(~)=""という比較はしません。やるなら「0」と比較して次の形です
IIf(InStr(~)>0,あるとき(,ないとき))
IIf(InStr(~)=0,ないとき(,あるとき))

価格 = Int(価格 - (220 * 0.088 + 100) * 0.95 / 0.934+0.5)」と「価格 = Int(価格 - (220 * 0.088) * 0.95 / 0.934+0.5)」はどちらも
(左辺)=(右辺)
の形になっています。比較の式なので結果はTrueFalseですね。たぶん、フィールド名を「価格」としたいのだと思いますが、この場合は
(式) AS 価格
のように、式の後にAS句をつなげてフィールド名を記述します

3
5流クン 2020/09/30 (水) 16:13:10 aac31@79d1a

式の後にAS句をつなげてフィールド名を記述するのですか
試してみます。
InStr(~)=""と使っていました。
比較なので、>0 =0なのですね。
ありがとうございます。

4
5流クン 2020/10/02 (金) 17:12:29 aac31@79d1a

連絡遅れました。
指摘していただいた箇所が、全部間違っていました。
正しく、計算してくれるようになりました。
ありがとうございました。