我正在创建Crystal Reports的报告,该报告将根据为报告设置的参数来屏蔽地址字段。我知道这可以用公式来完成。我可以用硬编码值成功掩盖。但是我需要像密码屏蔽这样的东西。例如,如果地址为D/302 ABC apartment
,则应显示为X/XXX XXX XXXXXXXXX
。只有要屏蔽的字符和数字才能屏蔽空格和特殊字符。此外,屏蔽数据的长度应与实际数据匹配。
答案 0 :(得分:1)
我认为你可以使用这样的公式:
Local StringVar str := "";
Local NumberVar strLen := Length({User.Address});
Local NumberVar i;
For i := 1 To strLen Do
(
if (ChrW({User.Address}[i]) in (AscW("A") to AscW("Z"))) or (ChrW({User.Address}[i]) in (AscW("a") to AscW("z"))) or (ChrW({User.Address}[i]) in (AscW("0") to AscW("9"))) Then
str := str + "X"
else
str := str + {User.Address}[i];
);
str
答案 1 :(得分:0)
逻辑是正确的..我通过使用Mid函数而不是chrW()做了同样的事情。也不需要使用asw()。只需使用范围运算符。
答案 2 :(得分:0)
逻辑是正确的..我通过使用Mid函数而不是chrW()做了同样的事情。另外你可以使用公式作为ReplicateString(“X”,len(地址)); 唯一的问题是空间也会被掩盖