アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESS2003で質問です。
Yes/No型のテーブルが複数あり、そのチェックの場所によりクエリでの計算方法が変わります。

Aにチェックが入っていたらX-Z
Bにチェックが入っていたらY+Z
Yes/No型の項目で条件式が作成できますでしょうか?

よろしくお願いいたします。

A 回答 (3件)

A=50 F=100として


X=真 Y=偽 Z=偽のとき
Z=F-A
Zの値は50

この場合、

X=-1
Y=0
Z=0

です。

Z=100 - 50
Z=50

と計算させるには

Z=100+50 ×-1

ということになります。

Z=F+A* X は、X=真 であれば Z=F+A*-1 ということです。

つまり、X=真であれば、目的の演算が行われます。
が、X=偽の場合を+演算するには Z=F+A* X は Z= 100+50×0 となり不具合が発生します。

先の回答と同じやり方であれば、

Z=F+A* (X + (Y + Z) ×-1)

X=-1、Y=0、Z=0 を代入すると、

Z=100+50×(-1+(0+0)×-1)=100-50

X=0、Y=-1、Z=0 を代入すると、

Z=100+50×(0+(-1+0)×-1)=100+50

X=0、Y=0、Z=-1 を代入すると、

Z=100+50×(0+(0+-1)×-1)=100+50

と不具合は解消されます。
    • good
    • 0
この回答へのお礼

なるほど論理積でしたでしょうか?
それぞれのフラグで処理すれば解決しそうです。

さらにチャレンジしたいと思います。

ありがとうございます。

お礼日時:2006/07/28 12:37

計算式は、幾つかの書き方があります。



(1)IIF を利用する。
(2)真=-1、偽=0 を利用する。

次は、更新クエリを SQLビューで表示しています。

UPDATE テーブル1 SET Z = A+B*(D+E*-1);

これでも、次のようにZは更新されます。

ID      A      B      Z      D      E
1       1      2      -1     Yes     No
2       1      2       3     No     Yes

*IIF関数より、随分とスッキリ書けます。

チクッと上級編です!

この回答への補足

s_husky 様

早速実行してみましたら、チェックマークが入っている項目すべて同じ結果の数値でした。
計算式を理解していないためなのですが

改めてもうすこしサンプルデーターを追加します。
X:F-A Y:F-B Z:F-Cの式が定義されていて、Xにチェックマークされていたら、Zの値がF-Aの計算式で計算されます。

チェックマークの位置で、計算式を判別しています。


A=50 F=100として
X=真 Y=偽 Z=偽のとき
Z=F-A
Zの値は50

やはり、IIFでX,Y,Zの値を判断し真の時計算をさせるのでしょうか

よろしくお願いいたします。

補足日時:2006/07/28 11:03
    • good
    • 0
この回答へのお礼

>チクッと上級編です!
ありがとうございます。

Accessの関数一覧の解説書がない分
IIFで条件設定するのかと思いました。

昨日、ヒントをいただき試してみましたが・・・
色々と関数定義のエラーが表示されました。

教えていただいた方法で試してみたいと思います。

お礼日時:2006/07/28 10:31

一応、



YesNo = True ----> X -z
YesNo = False ----> Y +z

ならば、

SELECT テーブル1.ID, テーブル1.X, テーブル1.Y, テーブル1.Z, テーブル1.YesNo, IIf([YesNo],[x]-[z],[Y]+[z]) AS V FROM テーブル1;

********************************************
IIf([YesNo],[x]-[z],[Y]+[z]) AS V
********************************************

YesNo_A = True
YesNo_B = True <= 矛盾

あえて YesNo_A、YesNo_B を用意しても、矛盾が解消されていれば、

********************************************
IIf([YesNo_A],[x]-[z],[Y]+[z]) AS V
********************************************

でいけると思います。

ID     X       Y      Z      YesNo   V
1      1       2      3      Yes     -2
2      1       2      3      No      5

この回答への補足

申し訳ありません。
質問の内容に不備がありました。

テーブルにデータ型がYes/No型の項目があります。
入力時チェックマークを入れます。
A=100 B=50 D=True E=False
Dにチェックが入っていたとき、Z=A-B
(それ以外は無視)
Eにチェックが入っていたとき、Z=A+B
といった感じで、Zを求める内容(計算式)が変化します。(Z内容を更新)
Zはテーブルで定義済みです。

補足日時:2006/07/27 17:35
    • good
    • 0
この回答へのお礼

早速回答ありがとうございます。

試してみたいと思います。

True False(真/偽)でチェックマークを判断し
条件文になるのですね。

初心者のため関数がわからないのですが
クエリで条件判断する場合、IFではなくIIFなのですね。

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

お礼日時:2006/07/27 17:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!