2010-08-31 59 views
0

我的目标是通过计算域名中有多少个句点来辨别域名是否具有子域名。如果它有两个时期,显然有一个子域。 我有以下的水晶报表公式写在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)

if count > 1 then 
    left({?domain}, pos2) + totext(pos2) 
    else 
    left({?domain},instr({?domain}, ".")-1) 

它输出正确地与.COM subdomain.domain除去

如果我运行它没有totext(POS2)

if count > 1 then 
    left({?domain}, pos2) 
    else 
    left({?domain},instr({?domain}, ".")-1) 

它只显示subdomain.domain.com的子域部分 任何想法为什么?

+0

FYI,“伯爵”是水晶受控串whatchamacallit。作为良好的编程习惯,我建议将您的变量重命名为“tot”或“cnt”或“all”或“total”。 – PowerUser 2010-09-01 15:13:32

+0

另外,abs()是否必要?我只是无法看到pos2会消极的任何情况。 – PowerUser 2010-09-01 15:20:02

回答

0

最后一行是否应该有最终的;

或者,你有没有考虑让整个公式是这样的:

Left({?domain},InStrRev({?domain}, ".")-1)