使用多个分隔符拆分 crystal 报告文本字段并在不同字段上加载

Split crystal report text field with more than one delimiter and load on different field

我已在 table 字段 ABZ SYP 10MLS-5-40-1-b.d-5-10-400,ABZ TAB 400MG-10 中保存以下代表患者处方的文本-5-0.5-t.i.d-10-30-75,我不希望它加载到单个 crystal 报告字段中。我希望它们被加载到不同的领域,比如 首先用逗号分割,如下所示

ABZ SYP 10MLS-5-40-1-b.d-5-10-400,
ABZ TAB 400MG-10-5-0.5-t.i.d-10-30-75,
ACTAL SYP 5LITRES-6-50-1-o.d-10-10-500,

然后在连字符上拆分 - 并在不同字段上具有以下最终输出 ABZ SYP 10MLS 单位成本 40 1 频率 b.d 数量 5 天 10 成本 400 ABZ TAB 400MG 单位成本 5 单位 0.5 频率 t.i.d 数量 10 天 30 成本 75

下面是我的代码似乎无法正常工作

stringvar array MYARRAY:=  Split({Table.Treatment}, "-");
stringvar array numbers;`enter code here`
Redim numbers[Ubound(MYARRAY)];
numberVar i ;
  for i :=1  to ubound(MYARRAY)   do  (
//MYARRAY[1][i] //&" "& MYARRAY[5][i]&" "& MYARRAY[6][i]&" Days,";
//numbers[i] := (MYARRAY[1]) &" "& (MYARRAY[5])&" "& (MYARRAY[6])&" Days,"
//numbers[i] := Tostring(MYARRAY[1][i])
);
 // 
numbers;

根据您发布的示例数据,我在数据中看到了一种模式,可用于拆分所有数据。

ABZ SYP 10MLS-5-40-1-b.d-5-10-400

第一个分隔符Space

第二个分隔符.

第三个分隔符-

所以你的代码应该像先被 Space 分割然后被 . 然后被 -

Local stringvar array MYARRAY:=  Split("ABZ SYP 10MLS-5-40-1-b.d-5-10-400", " ");
Local Strngvar array AfterSplit1:=Split(MYARRAY[3], ".");;
Local Strngvar array AfterSplit2:=Split(AfterSplit1[1], "-");
Local Strngvar array AfterSplit3:=Split(AfterSplit1[2], "-");


                                //output:

MYARRAY[1]& ChrW(13) &             //ABC
MYARRAY[2]&  ChrW(13) &           //SYP 
AfterSplit2[1]& ChrW(13) &         //10MLS
AfterSplit2[2]& ChrW(13) &           //5
AfterSplit2[3]& ChrW(13) &         //40
AfterSplit2[3]& ChrW(13) &         //1
AfterSplit2[4]& ChrW(13) &         //b
AfterSplit3[1]& ChrW(13) &          //d
AfterSplit3[2]& ChrW(13) &           //5
AfterSplit3[3]& ChrW(13) &          //10 
AfterSplit3[4]                      //400

我现在没有该工具,因此无法测试错误,但可以肯定这会起作用

试试让我知道

感谢您的回复,在您的回复的帮助下,我能够通过如下调整代码来产生我需要的结果

    local stringvar array MYARRAY:=  Split({Table.Treatment}, ",");
numberVar i ;
 Stringvar output;
 //output:
  for i :=1  to ubound(MYARRAY)   do  (
Stringvar array AfterSplit2:=Split(MYARRAY[i], "-");
output:=output + AfterSplit2[1] & space(1)& AfterSplit2[5] &" Days "& AfterSplit2[6]&" Qty "& AfterSplit2[7] & ChrW(10)
);
output

enter image description here