Crystal Reports  

For/Next 循环示例(Basic 语法)

下面是对 Crystal Reports 的字符串处理能力的更详细的示例。“凯撒”密码是一种简单代码,一般认为源于尤利乌斯·凯撒。在该代码中,单词的每一个字母都被字母表中与该字母相隔四个字母的下一个字母替换。例如,“Jaws”变成了“Ofbx”。注意,“w”被替换成了“b”。因为在字母表中“w”之后没有五个字符,所以又从头开始。

此处的公式将“凯撒”密码应用于 Xtreme 数据库中的字段 {客户.客户姓名}:

Rem The Caesar cipher
Dim inString 'The input string to encrypt
inString = {Customer.Customer Name}
Dim shift
shift = 5
formula = ""
Dim i
For i = 1 To Len(inString)
   Dim inC, outC
   inC = Mid(inString, i, 1)
   Dim isChar, isUCaseChar
   isChar = LCase(inC) In "a" To "z"
   isUCaseChar = isChar And (UCase (inC) = inC)
   inC = LCase(inC)
   If isChar Then
      Dim offset
      offset = (Asc(inC) + shift - Asc("a")) Mod _
               (Asc("z") - Asc("a") + 1)
      outC = Chr(offset + Asc("a"))
      If isUCaseChar Then outC = UCase(outC)
   Else
      outC = inC
   End If
   formula = formula & outC
Next i

在上例中,有一个多行 If 语句嵌套在 For/Next 循环的语句块内。这个 If 语句负责转换单个字符时所需的准确详细信息。例如,对字母的处理与对标点和空格的处理不同。尤其是,标点和空格没有编码。控制结构可以嵌套在其他控制结构内,而多个语句可以包含在控制结构的语句块内。

另请参见

退出 For/Next 循环