从 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”格式这一事实,此解决方案对我有用。
我正在尝试为客户执行快速修复。我们有一个报告字段,以 +/-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”格式这一事实,此解决方案对我有用。