0

我正在尝试为客户执行快速修复。我们有一个报告字段,以 +/-20、-19 +18 等字符串显示公差值。这是以微米为单位的,客户希望以毫米为单位。所以我只需要将此字符串的数字部分除以 1000 并显示结果。

我对水晶报告相对较新,由于我的知识有限,并且通过在这个网站上搜索建议,我创建了一个具有以下代码行的函数,

函数(字符串变量 x)

本地 stringvar 数组输入 := split(x,"+/-");

val(输入[ubound(输入)])/1000

上述功能非常适用于 +/- 的公差值。但是,我无法为“-19 +18”找到一种方法。我希望结果为 -0.019 +0.018

我可以在数据库源中轻松完成并将其发送到报告中。然而,客户需要快速修复报告。任何帮助将不胜感激。

4

2 回答 2

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
于 2015-01-22T07:49:47.647 回答
0

我想出了一个适用于这种特定情况的答案。我在公式字段中使用了以下条件。根据条件,我将用户定义的函数称为“Tolerance”、“Tolerance2”、“Tolerance3”。

公式字段:

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;

公差2:

Function (stringvar x) local stringvar mystr := x; 
If NumericText (mystr[2 to 3]) Then
 ToNumber(mystr[2 to 3])/1000
Else 0

公差3:

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”,这个解决方案对我有用。

于 2015-01-22T13:16:40.870 回答