Crystal reports 水晶报告:character"&引用;域内字符串错误

Crystal reports 水晶报告:character"&引用;域内字符串错误,crystal-reports,Crystal Reports,我的目标是通过计算域名中的句点数来辨别域名是否有子域。如果它有两个周期,显然有一个子域。 我用crystal语法编写了以下crystal报告公式 local numbervar count :=0; Local numbervar strLen := length({?domain}); local stringvar c := {?domain}; local numbervar i; local numbervar pos2 :=0; for i:=1 to strLen do (

我的目标是通过计算域名中的句点数来辨别域名是否有子域。如果它有两个周期,显然有一个子域。 我用crystal语法编写了以下crystal报告公式

local numbervar count :=0;
Local numbervar strLen := length({?domain});
local stringvar c := {?domain};
local numbervar i; 
local numbervar pos2 :=0; 
for i:=1 to strLen do
(    if Mid({?domain}, i, 1) = "." then
     (
        count := count + 1; 
        if count = 2 then (
            pos2 := i
        );

       ); 
);
if count > 1 then 
left({?domain}, pos2)
else 
left({?domain},instr({?domain}, ".")-1)
有什么想法吗?希望这是我疲惫的眼睛刚刚看到的东西

更新:这里是发生的奇怪的事情。 如果我加上“+totext(pos2)

它正确输出subdomain.domain,并删除.com

如果我在没有totext(pos2)的情况下运行它

它只显示subdomain.domain.com的子域部分
知道为什么吗?

最后一行是否应该有一个最后的

或者,您是否考虑过将整个公式简化为:

Left({?domain},InStrRev({?domain}, ".")-1)
仅供参考,“count”是一个受控字符串,它在Crystal中被称为whatchamacallit。作为一种良好的编程实践,我建议将变量重命名为“tot”或“cnt”或“all”或“total”。此外,是否需要abs()?我只是看不到pos2为负值的任何情况。
if count > 1 then 
    left({?domain}, pos2)
    else 
    left({?domain},instr({?domain}, ".")-1)
Left({?domain},InStrRev({?domain}, ".")-1)