1

私はこれを理解しようとしましたが、役に立ちませんでした。{GLAF.BAL1}私が作業しているデータベースには、期間に基づいて GL アカウントの残高を表示するフィールドがあります (例:{GLAF.BAL2}など{GLAF.BAL3})。現在の日付に基づいて残高の合計を表示する方法を探しています。

現在の期間が何であるかを判断する次の式があります (私たちの会計年度は 8/1 から始まります:

if month(currentdate) >= 8 then Period := (Month(currentdate)-7) else Period := (Month(currentdate)+5)

基本的に次のことを行う数式を作成する方法はありますか。明確にするための 2 つの例:

例 1 (現在の期間 = 4):

Balance =: ({GLAF.BAL1} + {GLAF.BAL2} + {GLAF.BAL3})

例 2 (現在の期間 = 7):

Balance =: ({GLAF.BAL1} + {GLAF.BAL2} + {GLAF.BAL3} + {GLAF.BAL4} + {GLAF.BAL5} + {GLAF.BAL6})
4

3 に答える 3

1

私は完全に「動的」なものを認識していませんが、次のようなことをするだけです:

local numberVar Balance := 0;

if {@period} > 1 then
  Balance := Balance + {GLAF.BAL1};

if {@period} > 2 then
  Balance := Balance + {GLAF.BAL2};

if {@period} > 3 then
  Balance := Balance + {GLAF.BAL3};

Balance;
于 2013-02-19T09:14:29.753 に答える
0

SQL 式または数式フィールドを使用して、NULL をゼロに変換します。データベース フィールドごとに 1 つ必要です (この状況では 12 個)。

SQL 式の構文:

-- {%GLAF.BAL01}
-- convert NULL to 0
NVL(GLAF.BAL1,0)

数式フィールドの構文:

// {@GLAF.BAL01}
// convert NULL to 0
If IsNull({GLAF.BAL1}) Then 0 Else {GLAF.BAL1}

これらのフィールドを集計する数式フィールドを作成します。

// {@Balance}
// place each field in an array; summarize array
// use formula fields to convert NULL to 0
Numbervar Array periods := [{@GLAF.BAL01},{@GLAF.BAL02},...,{@GLAF.BAL12}];

Local Numbervar balance:=0;
Local Numbervar i;

For i := 1 To {?period} Do (
    balance := balance + periods[i];
);

balance;
于 2013-02-19T16:01:35.317 に答える
0

次のように式を少し短くすることができます。

if {?period} >= 1 then {GLAF.BAL1} +
if {?period} >= 2 then {GLAF.BAL2} + 
if {?period} >= 3 then {GLAF.BAL3} + 
if {?period} >= 4 then {GLAF.BAL4} + 
if {?period} >= 5 then {GLAF.BAL5} + 
if {?period} >= 6 then {GLAF.BAL6} + 
if {?period} >= 7 then {GLAF.BAL7} + 
if {?period} >= 8 then {GLAF.BAL8} + 
if {?period} >= 9 then {GLAF.BAL9} + 
if {?period} >= 10 then {GLAF.BAL10} + 
if {?period} >= 11 then {GLAF.BAL11} + 
if {?period} >= 12 then {GLAF.BAL12}

NULLただし、より慎重な処理が必要になるため、値がないことに注意してください。

于 2013-02-19T09:38:46.667 に答える