1

次に例を示します。

CSA.1169-1342, 1169-1342, 1349-1353, 
1349-1353, 1355-1368, 1355-1368, 
1371-2498, 1371-2498, 2501-2661, 
2501-2661, 2665-2691, 2665-2691, 
2693-2893, 2693-2893, 2897-3000, 
2897-3000

各行がプレフィックス CSA で始まる必要があります。これは別の分野から来ています。また、1349 と 1342 を個別にレンダリングし、- とコンマを追加する 2 つの別個のフィールドからこの文字列を作成しました。目標は、オブジェクトの幅を同じに保ちながらテキスト サイズが実際に変更される可能性があり、フィールドが折り返され、折り返されるたびにプレフィックスを含めることができるようにすることです。フィールドの別の例を次に示します。

CRTX.220-239, 220-239, 241-249, 
241-249, 251-948, 251-948, 
90-218, 90-218, 950-983, 
950-983, 985-1000, 985-1000, 

私が必要とするのは、オブジェクトがラップするタイミングに関係なく、結果が次のようにレンダリングされることです。

CRTX.220-239, 220-239, 241-249, 
CRTX.241-249, 251-948, 251-948, 
CRTX.90-218, 90-218, 950-983, 
CRTX.950-983, 985-1000, 985-1000,

私の意図は、これをグループにリンクされたサブレポートとして挿入することです。文字列内の CRTX は、サブレポートをリンクするものになります。

4

3 に答える 3

1

最小文字数と最大文字数を考慮しながら、1 行に収まる数値範囲の数を決定する必要があります。あなたの例を考えると、1行あたりの最大数が3であるとしましょう。始めるにはこれで十分です。

local stringvar sampletext :=
 "CRTX.220-239, 220-239, 241-249, 
 241-249, 251-948, 251-948, 
 90-218, 90-218, 950-983, 
 950-983, 985-1000, 985-1000,";

local stringvar array samplearry := split(sampletext,', '); //split string into elements
local numbervar x;
local stringvar out;

for x := 1 to ubound(samplearry)-1 do //ignore last element in array since it's empty
     (if remainder(x,3)=0 then out:=out + trim(samplearry[x]) + ", " + chr(13) + "CRTX."
      else out:=out + samplearry[x] + ", ");

//trim the line prefix if no elements fall on that line
if remainder(ubound(samplearry)-1,3)=0 then left(out,length(out)-8) else out

その式は、文字列を次のように変換します。

CRTX.220-239, 220-239, 241-249, 
CRTX.241-249, 251-948, 251-948, 
CRTX.90-218, 90-218, 950-983, 
CRTX.950-983, 985-1000, 985-1000, 
于 2013-04-02T15:51:48.767 に答える
0

フィールドのサイズを変更するときにこれを動的に実行できることを認識していませんが、次の式を使用して mod を含むステートメントを変更できます。これにより、質問に出力が提供されます。mod 4 = 0 に変更すると、1 行に 4 つの数値が出力されます。

numbervar a;
stringvar prefix := split({yourfeild},".")[1];
stringvar data := split({yourfeild},".")[2];
stringvar array numbers := split(data,",");
numbervar counter := ubound(split(data,","));
stringvar output;
for a := 1 to counter do 
(
if a mod 3 =0 then output := output + trim(numbers[a]) +", " + chr(13) +  prefix +"."
else output := output + trim(numbers[a]) +", "
);
output := prefix + "."+mid(output,1,len(output)-2)
于 2013-04-02T15:48:20.317 に答える