【问题标题】:Split crystal report text field with more than one delimiter and load on different field拆分带有多个分隔符的水晶报表文本字段并加载到不同的字段
【发布时间】:2018-04-11 08:57:37
【问题描述】:

我在表格字段 ABZ SYP 10MLS-5-40-1-bd-5-10-400,ABZ TAB 400MG-10-5-0.5-tid-10-30 中保存了以下代表患者处方的文本-75,我不希望它加载到单个水晶报表字段中。我希望它们被加载到不同的领域,比如 首先以逗号分隔,如下所示

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;

【问题讨论】:

  • 使用空格 " " 分割字符将您的字符串分成 3 部分。 "ABZ" , "SYP" 和 "10MLS......" 然后用 "-" 分割第三个,这将给你 "10MLS", "10", "5", "0.5", "tid", "10", "30", "75" 然后创建你的新字符串

标签: c# arrays split crystal-reports delimiter


【解决方案1】:

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

    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

【讨论】:

    【解决方案2】:

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

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

    第一个分隔符空格

    第二个分隔符.

    第三个分隔符-

    所以你的代码应该首先被 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}, ",");数变量 i ;字符串变量输出; //输出:for i :=1 to ubound(MYARRAY) do ( Stringvar array AfterSplit2:=Split(MYARRAY[i], "-"); output:=output + AfterSplit2[1] & space(1)& AfterSplit2[ 5] &"天数"& AfterSplit2[6]&"数量"& AfterSplit2[7] & ChrW(10));输出
    • @DennisMutwiri 没问题,如果它对您有用,您可以接受它作为已回答...以便其他人可以使用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多