2012-04-04 15 views
0

私はCrystal 2008のForループを使用してアセットの年齢に基づいて非常に基本的な償却計算を実行しようとしています。Crystal Reports 2008のループについて

ループは次のようになります。何らかの理由で

NumberVar AssetValue := {CIID.Currency4}; 
NumberVar DepreciationPercentage := {vw_DepreciationValues.Percent}; 
NumberVar AssetAge := DateDiff("yyyy",{CIID.Date4},CurrentDate); 
Numbervar i := 0; 

for i := 0 to AssetAge do 
(
    AssetValue = AssetValue - ((AssetValue/100)*DepreciationPercentage); 
    i = i + 1; 
); 
AssetValue; 

、それは常に、それが実行された後にリセットされますほとんどのように....で行った同じ番号としてAssetValueを出力します。

私はループの外で償却公式をテストし、うまくいきます。 また、iカウンタがループによって適切に増分されていることを確認しました。

どこが間違っているのか誰かが手掛かりを得ましたか?私もプライベート変数を使ってカスタム関数を作成しようとしましたが、違いはありませんでした。

ありがとうございます!

答えて

3

タイプミス:

AssetValue = AssetValue - ((AssetValue/100)*DepreciationPercentage); 
      ^--- equality test 
i = i + 1 
    ^-- ditto 

それは割り当てを行うには:=でなければなりません。

+1

私は^ - ビットが好きです。 – craig

+0

ああ、冗談だよ!私はそれらが宣言のためだけだと思った。私はそれが[=]と[==]の違いをどのように知っているのだろうと思っていたので、うれしく思いました。 – Hoppertron

+0

言語が非常に多く、さまざまなことができます。クリスタルシンタックスは、私に頭痛を与えます。変数の型を指定するための宣言ビットは 'NumberVar'です。しかし、それは常にです:あなたがそれをやっている場所にかかわらず、譲渡のためです。 –

関連する問題