1

と呼ばれる列のレポートに取り組んでいるとしましょうsomeTable.someColumn。必要なのは、ReportHeaderにすべての値を含めることです。私はサブレポートを作成し、この列を渡して詳細で繰り返すことを知っていますが、サブレポートなしでそれを行うことが可能かどうか知りたいです。

以下を使用すると、正しい結果が得られます。私の場合は9です。

COUNT(someTable.someColumn)

次のことも試しましたが、機能しません。9つの値のうち1つだけをランダムに取得します。

Local NumberVar i := 0;
Local StringVar Array items := {someTable.someColumn};
Local StringVar output := "";
while (i < count(items)) do (
  i := i+1;
  output := output + items[i];
);

output;

値を取得するために列を反復処理することは可能ですか?

4

2 に答える 2

2

レポートヘッダーでこれを行うことはできません。各値を読み取るには、詳細セクションを使用する必要があります。

頭に浮かぶ唯一の解決策は、サブレポートを使用することです。あなたはしませんがpass them this column and iterate it in the details。列の最初の値のみを渡すためです。メインレポートと同じ方法でデータベースから列値を取得するために使用できるレポートパラメータを渡します。

于 2012-11-29T10:03:47.067 に答える
0

レポートヘッダーでこれを行う方法は見つかりませんでしたが、次の式を使用してレポートフッターに配置できます。

global StringVar output;
output := output + {someTable.someColumn} + ",";

someTable.someColumnこれは、レポート生成中に変更が行われるたびに実行され、グローバル変数に追加されます。残念ながら、すべてのインスタンスを最新の状態に保つわけではありません。たとえば、レポートの詳細のどこかに含めると、レポートの過程での変化を確認できますoutput。ヘッダーには、最初の値のみが表示されます。

注:output := ""毎回値がリセットされるため、この数式で設定する必要はありません。ただし、Crystalは変数の作成時に変数を自動的に初期化するようであり、上記の式だけでエラーが発生することはありませんでした(つまり、初期化するために2番目の式を作成する必要はありませんでしたoutput)。各値を分離するのに役立つデリメータ(+ ",")も含まれていますが、簡単に削除できます。

于 2012-12-07T20:45:58.590 に答える