[]
        
在线Demo 免费试用
(Showing Draft Content)

流程函数

流程函数用于控制表达式的计算过程。

  • 表1:常用流程函数表

    函数

    说明

    语法

    Choose

    以第一个参数为索引,返回后续参数中的一个。

    例如Choose(1,"a","b")返回字符串"a"。

    Choose(<索引>, <表达式1>[, <表达式2>,...[, <表达式N>]])

    IIF

    根据第一个参数的结果逻辑值(真/假),返回第二个或第三个参数的值。

    IIF(<条件表达式>,<TruePart> , <FalsePart> )

    • 参数描述:

      • 条件表达式: 必要参数。用来判断真伪的表达式。

      • TruePart: 必要参数。如果条件表达式为 True,则返回这部分的值或表达式。

      • FalsePart: 必要参数。如果条件表达式为 False,则返回这部分的值或表达式。

    IIF往往配合判断函数使用。

    例如:{IIF(IsDbNull(搭赠) ,0, 搭赠)} 可实现字段值为NULL时显示0的效果。

    Partition

    返回一个字符串,表示一个指定数值,出现在一个系列值中的哪一个区段。

    Partition(<整数表达式>, <区段起始值>, <区段结束值>, <区段间隔步长>)

    • 参数描述:

      • 整数表达式: 必要参数。整数,在所有范围中判断这个整数是否出现。

      • 区段起始值: 必要参数。整数,数值范围的开始值,这个数值不能小于 0。

      • 区段结束值: 必要参数。整数,数值范围的结束值,这个数值不能等于或小于 start。

      • 区段间隔步长: 非必要参数。整数,数值范围的步长值。

    例如: Partition(230,1,1000,100) 返回字符串"201:300"。其含义是:从1开始至1000为止,每隔100为一个区间,230落在201-300这个区间内。

    Switch

    计算一组表达式列表的值,然后返回与表达式列表中最先为真的表达式所相关的数值或表达式。

    Switch(<条件表达式1>, <表达式1>[, <条件表达式2>, <表达式2>,...[, <条件表达式N>, <表达式N>]])

    • 参数描述:

      • 条件表达式: 必要参数。要加以计算的表达式。

      • 表达式: 必要参数。如果相关的条件表达式结果为真,则返回此部分的数值或表达式。

    例如:

    • Switch( 月份 <4,1,月份 <7,2,月份<10,3,1=1,4)根据月份字段值,返回季度序号。

  • 下面是一个更复杂的Switch函数示例:为实现一种不同统计不同周期的需求:当天、本周、当月、本季度、半年、本年,选择不同的统计周期时,查询起始日期随之不同。

    Switch(
    @period=0,Today()
    ,@period=1,DateAdd("d",1-weekday(Today(),2),Today())
    ,@period=2,DateValue(Year(Today()) + "-" + Month(Today()) + "-01")
    ,@period=3,DateValue(Year(Today()) + "-" + Switch( Month(Today())<4,1, Month(Today())<7, 4, Month(Today())<10, 7, Month(Today())>=10, 10) + "-01")
    ,@period=4,DateValue(Year(Today()) + "-" + Switch( Month(Today())<7,1, Month(Today())>=7, 7) + "-01")
    ,@period=5,DateValue(Year(Today()) + "-01-01")
    ).ToString("yyyy-MM-dd")
  • 表2: 下面仅针对IIF函数使用示例进行讲解。