Crystal Reports Designer  

If 语句(Basic 语法)

If 语句是最有用的控制结构之一。它使您得以在条件为真时对一系列语句求值,而在条件不为真时对其他一系列语句求值。

注意   用条件公式格式化时,始终要包括 Else 关键字;否则,不符合 If 条件的值可能不会保留原来的格式。为避免此类情况发生,可以使用 DefaultAttribute 函数 (If...Else formula = DefaultAttribute)。

示例

某公司计划发给其员工 4% 的奖金,而销售部门的员工将得到 6% 的奖金。下面的公式使用 If 语句实现这一目的:

Rem Multi-line If example 1
If {Employee.Dept} = "Sales" Then
   formula = {Employee.Salary} * 0.06
Else
   formula = {Employee.Salary} * 0.04
End If

在本示例中,若条件 {雇员.部门} = "Sales" 求值为真,则处理

formula = {Employee.Salary} * 0.06

语句。否则处理 Else 后面的语句,也就是

formula = {Employee.Salary} * 0.04

表达式。

假设另一公司想要发给其员工 4% 的奖金,但奖金最低金额是 $1,000。注意没有包含 Else 子句;该子句是可选的,在这种情况下并不需要。

Rem Multi-line If example 2
formula = {Employee.Salary} * 0.04
If formula < 1000 Then
   formula = 1000
End If

现在假设上面的公司还要使奖金的最大金额为 $5,000。此时您需要使用 ElseIf 子句。注意 ElseIf 是一个完整的词。下例只有一个 ElseIf 子句,但可以根据需要添加任意多个。

注意   一个 If 语句中最多有一个 Else 子句。

如果 If 或 ElseIf 条件都不为真,则执行 Else 子句。

Rem Multi-line If example 3
formula = {Employee.Salary} * 0.04
If formula < 1000 Then
   formula = 1000
ElseIf formula > 5000 Then
   formula = 5000
End If

示例

假设某公司要大概计算出员工需缴纳的税额并写出适当的信息。收入低于八千美元不必纳税,收入介于八千美元和两万美元应缴纳 20%,收入介于两万美元和三万五千美元应缴纳 29%,而收入超过三万五千美元应缴纳 40%。

Rem Multi-line If example 4
Dim tax As Currency, income As Currency
income = {Employee.Salary}
Dim message As String
If income < 8000 Then
   tax = 0
   message = "no"
ElseIf income >= 8000 And income < 20000 Then
   message = "lowest"
   tax = (income - 8000)*0.20
ElseIf income >= 20000 And income < 35000 Then
   message = "middle"
   tax = (20000 - 8000)*0.20 + (income - 20000)*0.29
Else
   message = "highest"
   tax = (20000 - 8000)*0.20 + (35000 - 20000)*0.29 + _
        (income - 35000)*0.40
End If
Dim taxStr As String
Rem use 2 decimal places
Rem and use the comma as a thousands separator
taxStr = CStr (tax, 2, ",")
formula = "You are in the " & message & _
          " tax bracket. " & _
          "Your estimated tax is " & taxStr & "."

注意,变量的使用简化了计算逻辑。另外还注意到,当满足某个条件时执行两个语句;一个语句给 tax 变量赋值,另一个语句给 message 变量赋值。满足某个条件时执行多个语句通常很有用。

另请参见

控制结构 | 单行和多行 If 语句