使用多个分隔符拆分 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
我已在 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