1

詳細セクションにレコードセットがあります

例:

Column1----Column2
value_1----5678976
value_2----7263535
value_1----1938773
value_2----3333445
value_3----2848465

そのため、レポート ヘッダーで、Column1 の固有の値をすべてカンマで区切って指定する必要があります。上記の例から、正しい文字列は次のようになります。

value_1,value_2,value_3

式を使ってみた

WhilePrintingRecords;
shared stringvar final_result;
shared stringvar current_value;

if len(final_result) = 0 then final_result = "";

current_value:= {Column1};
final_result := final_result+ "," + current_value;

これは機能しません

別のものを試した

WhilePrintingRecords;
stringVar final_result := "";
final_result = final_result + (
if InStr(final_result, {Column1}) > 0 then ""
else final_result := "," + {Column1};
);

こちらも結果なし。どこで私は間違えましたか?

ありがとう

4

2 に答える 2

1

式に何かを表示させるには、値を宣言した後に値を呼び出す必要があります。したがって、式は次のようになります。

WhilePrintingRecords; 
shared stringvar final_result; 
shared stringvar current_value := {Column1};
if len(final_result) < 1 then final_result := {Column2}; 
final_result + ", " + current_value

問題は、数式がレポート ヘッダーにあるため、1 つのレコードしか取得できないことです。配列を作成してレポート ヘッダーに表示しようとすると、同じことが起こります。レポート ヘッダーに表示するサブレポートを作成するのが最善の策だと思います。

乾杯、

クリス

編集:これにはしばらく時間がかかりましたが、ようやく手に入れたと思います。重要なのは、WhileReadingRecords と WhilePrintingRecords の違いです。レコードの読み取り中に最初の数式を入力する必要があります。これにより、実際にデータ (WhilePrintingRecords) を表示するときに、ヘッダーの数式に表示するものが含まれていることが保証されます。フォーミュラ1(詳細セクションに配置):

WhileReadingRecords;
stringvar array a;
numbervar i;
if not({Column1} in a) then
(
i := i + 1;
redim preserve a[i];
a[i] := {Column1};
);
a[i]

数式 2 (レポート ヘッダーに配置):

WhilePrintingRecords;
stringvar array a;
stringvar fin;
numbervar j;
for j := 1 to ubound(a) do
(
fin := fin + a[j] + ", ";
)
fin

これがうまくいくことを願っています。-クリス

于 2013-10-09T17:03:52.440 に答える
0

Chris の 2 番目の式のマイナーな構文エラーです。FOR ループの閉じ括弧の後にセミコロンを 1 行下に移動する必要があるため、最後の 3 行は次のようになります。

fin := fin + a[j] + ", "
);
fin
于 2020-09-04T21:03:59.100 に答える