0

初めて Crystal Reports でプログラミングを試みます。私は十分に単純なものを書こうとしています。グループ化されたさまざまなフィールドがあり、各グループで数式を実行する予定です。下の画像はグループの例です。

レポート画像

20.00画像の右上隅で強調表示されているのはshipctns. 私の式は

Local NumberVar RTotal := 0;
Local NumberVar diff := 0;
While RTotal <  {@shipctns} DO
(
 If ({@pickctns} <  {@shipctns}) AND (RTotal + {@pickctns} < {@shipctns}) THEN
    "Pick";
    RTotal := RTotal + {@pickctns};
 Else If  {@pickctns} <  {@shipctns}  THEN
    "Pick " & ({@shipctns} - RTotal);

 Else
    "Don't Pick"
); 

式はまだ進行中です。Pick Ctns各グループで を調べて、この量を選んで量を補うように言うだけshipctnsです。Pick Ctns大きすぎる場合は最後の部分だけを選択して停止します。

私の問題は、Else If「The ) is Missing」というエラーが表示されるため、式を実際にテストできないことです。私は Crystal Reports をよく知らないので、ここで何が間違っているのでしょうか?

4

1 に答える 1

1

thenまたはelseブロック内の複数のステートメントを括弧で囲む必要があります。

Crystal Reportsのドキュメントから:

If ステートメントの正しい Crystal 構文はif <condition> then <then> else <else>、 、 where <condition><then>、および<else>すべて単一の式です。<then> またはの後に複数の式がある場合は<else>、それらを括弧で囲んで単一の式に変換します。

数式は次のようになります

...
If ({@pickctns} <  {@shipctns}) AND (RTotal + {@pickctns} < {@shipctns}) THEN
(
    "Pick";
    RTotal := RTotal + {@pickctns};
)
Else If  {@pickctns} <  {@shipctns}  THEN
    "Pick " & ({@shipctns} - RTotal);
Else
...
于 2017-08-30T07:45:17.633 に答える