从 crystal 报告中的字符串中提取数字 9

Extracting numbers from a string in crystal reports 9

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

我对 crystal 报告比较陌生,由于我的知识有限,并且通过搜索该网站寻求建议,我创建了一个包含以下代码行的函数,

Function (stringvar x)

local stringvar array input := split(x,"+/-");

val(input[ubound(input)])/1000

以上函数非常适用于 +/- 的公差值。但是我无法找到一种方法来为“-19 +18”做这件事。我希望结果为 -0.019 +0.018

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

试试这个

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

我找到了适用于此特定案例的答案。 我在公式字段中使用了以下条件。根据我调用用户定义函数的条件 '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”格式这一事实,此解决方案对我有用。