我正在尝试为客户端执行快速修复。我们有一个报告字段,显示字符串中的容差值,如+/- 20,-19 +18。这是微米级,客户希望它以毫米为单位。所以我需要将此字符串的数字部分除以1000并显示结果。
我对水晶报道比较陌生,凭借我的有限知识和搜索本网站的建议,我用以下代码行创建了一个函数,
功能(stringvar x)
本地stringvar数组输入:= split(x," + / - ");
VAL(输入[UBOUND(输入)])/ 1000
上述功能适用于公差值+/-。但是,我无法找到为#19; -19 + 18'做到这一点的方法。我希望结果为-0.019 +0.018
我可以在数据库源中轻松完成并将其发送到报告中。但是,客户需要快速修复报告。任何帮助将不胜感激。
答案 0 :(得分:0)
试试这个
if(Left (x, 3 )="+/-")
then ToNumber(split(x ,"+/-")[2])/100
else if(Left ({x , 1 )="+")
then ToNumber(split(x ,"+")[2])/100
else if(Left (x , 1 )="-")
then ToNumber(split(x ,"-")[2])/100
答案 1 :(得分:0)
我找到了一个适用于这个具体案例的答案。 我在公式字段中使用了以下条件。根据条件我称之为用户定义的功能'容忍'容忍2'容忍3'。
公式字段:
IF (Left ({PDPRINTDATA.PD_T45}, 3 )="+/-") THEN
'+/-' + ToText(Tolerance({PDPRINTDATA.PD_T45}),3)
ELSE IF (Left ({PDPRINTDATA.PD_T45} , 1 )="-") THEN
'-' + ToText(Tolerance2({PDPRINTDATA.PD_T45}),3) + ' +' + ToText(Tolerance3({PDPRINTDATA.PD_T45}),3)
公差:
Function (stringvar x)
local stringvar array input := split(x,"+/-");
val(input[ubound(input)])/1000;
Tolerance2:
Function (stringvar x) local stringvar mystr := x;
If NumericText (mystr[2 to 3]) Then
ToNumber(mystr[2 to 3])/1000
Else 0
Tolerance3:
Function (stringvar x)
local stringvar mystr := x;
If NumericText (mystr[7 to 8]) Then
ToNumber(mystr[7 to 8])/1000
Else
0
考虑到字符串将始终采用这种格式' +/- XX'这个解决方案适用于我。或者' -XX + YY'。