みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
税込み金額
税抜き金額
税額
の3つのフィールドがあり、税込み金額のフィールドに金額を入力したら、税抜き金額・税額のフィールドが自動計算されて、
税抜き金額のフィールドに金額を入力したら、税込み金額・税額のフィールドが自動計算させるようにしたいのです。
また入力された値は個別のデータとして保存したいですが、もし内容が変われば再計算したいです。
ご教授よろしくお願いします。
計算値の自動入力ではできなさそうなので、OnObjectSaveで設定する。
If [Get ( アクティブフィールドテーブル名 ) & "::" & Get ( アクティブフィールド名) = GetFieldName ( 税抜 )]
フィールド設定 [税込; Floor ( 税抜 * ( 1 + 消費税 / 100 ) )]
Else If [Get ( アクティブフィールドテーブル名 ) & "::" & Get ( アクティブフィールド名) = GetFieldName ( 税込 )]
フィールド設定 [税抜; Floor ( 税込 / ( 1 + 消費税 / 100 ) )]
End Ifその条件を使えば、計算値の自動入力でもできるでしょう。
Case ( Get ( アクティブフィールドテーブル名 ) & "::" & Get ( アクティブフィールド名) = GetFieldName ( Self ) ; Self ;
//フィールドに応じた計算式
)
手入力以外で変更する場合は、どこもアクティブにならないので要注意ですが。
barikan様 tim様
ありがとうございます。手入力以外で入力する場合は要注意とありますが、既存のデータを最初にインポートする作業があるのです。やはりその場合は正しく動作しないでしょうか?
インポートするデータは、税抜き金額と税額です。
インポートの時は自動入力を処理しない設定ですればいいですけど、他のフィールドも処理できなくなります(シリアル値とか)
最初だけならインポートしてから自動入力を設定すればいいのでは。
トリガなら手入力時しか計算しない。
よくみたらbarikanさんの計算式は税率フィールドを勝手に追加してますね^^;
フィールド設定 [税込み金額; 税抜き金額 + 税額]
とかですよね。
税込はインポート後にフィールド内容の全置換で入れる。
tim様
barikan様のトリガを利用した方法は理解できるのですが、インポートの時は動かないですよね。
ただtim様のご提案いただいた計算フィールドの場合が理解できません。
税込金額フィールド=計算フィールド
Case ( Get ( アクティブフィールドテーブル名 ) & "::" & Get ( アクティブフィールド名) = GetFieldName (税込金額) ; 税抜金額=税込金額/1.05 )
税抜金額フィールド=計算フィールド
Case ( Get ( アクティブフィールドテーブル名 ) & "::" & Get ( アクティブフィールド名) = GetFieldName (税抜金額) ; 税込金額=税込金額*1.05 )
という意味でしょうか?これでは動かないですよね・・・
今読み直したら、税額も自動計算という要望だったんですね。。。それだと税率がないと不可能だから「勝手に追加」してたのか。。
そうすると税額は入力しないでいいので計算にした方がいいかな。(税込金額-税抜き金額)
入力も必要だと、フィールドの定義順によって結果が変わるので、税額を修正した場合どっちを優先するか決めないとだめでした。
インポートに合わせて税抜き優先にするには、税込のフィールドを先に作るしかない?
税込金額フィールド=数字 計算値自動入力 既存値を置き換える
Case ( IsEmpty ( 税抜き金額 ) or Get ( アクティブフィールドテーブル名 ) & "::" & Get ( アクティブフィールド名) = GetFieldName (Self) ; Self ;
税抜き金額 * 1.05 )
「全フィールドが空欄の場合計算しない」にしても計算されてしまうので、IsEmptyを入れました。
税込金額フィールド=計算フィールド
Case ( Get ( アクティブフィールドテーブル名 ) & "::" & Get ( アクティブフィールド名) = GetFieldName (税込金額) ; 税抜金額=税込金額/1.05 )
計算フィールドではなく、
数字フィールドの入力値の自動化・計算値・既存値置換えです。
書かれた式は
結果が無くて、デフォルトの式が違います。
デフォルトは単に
税込金額 / 1.05
こうですね。
もっと簡略にして、税込金額フィールドは
Case ( Get ( アクティブフィールド名 ) = "税込金額" ; Self ; 税抜金額 * 1.05 )
でいいでしょう。
Offline
ありがとうございました。一度試してみます。
今後ともよろしく願いします。
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 562.59 KiB (Peak: 582.49 KiB) ]