问题描述
我是水晶报告的新手。
我的数据(员工ID)具有以下格式
Abc123,uttd333,ddt-435
还有一些永远不应该打印的值。
管理ID,例如
Gree999,ttt999
我知道有一个中间函数,但这需要我指定子字符串应从其开始的位置。这些值没有固定数量的前导字母。
是否可以在Crystal报表中使用类似sql的Ltrim来实现这一目标?
解决方法
Afaik CR中没有内置功能可以从字符串中删除非数字字符,因此您必须滚动自己的字符(用字段替换{Befehl.EmployeeId}):
StringVar employeeId := {Befehl.EmployeeId};
StringVar result := "";
NumberVar i;
// transfer numeric chars into result one by one
For i := 1 To Length(employeeId) Do
(
If IsNumeric(employeeId[i]) Then
result := result + employeeId[i];
);
// output result only if employeeId is not in your admin list
If employeeId In Split('Gree999,ttt999',',') Then
'--Admin--'
Else
result;
,
这里是仅捕获字符串的数字部分的另一种方法: strReverse(ToText(Val(strReverse({EmpId})),0,“”))
利用数字始终在末尾的优势。
,要处理尾随零,可以使用:
#include <SDL2>
#include <stdio.h>
void main()
{
printf("Testing");
}
但是mweber上面的答案现在更简单了。