IT Course

Technology Collection: Ruijin.R.Zhao

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
一,Basice 语法
1,公式的结果
--每个公式必须返回一个值
--Basice语法通过设置特殊变量“formula”的值来实现,不能返回数组或范围类型。

2,注释
-- REM, ' 注释

3,furmula变量在设置为一种数据类型,则后面不能在同一个公式中设置为另一种类型值。
例如:Global a AS string ,b AS Number,z AS DateTime
         if{Orders.Order Amount} >= 1000 then
               formula = "Insured shipping";
         else
               formula = "Regular shipping"
         end if
4,字段
      -- 许多字段可以在公式中引用。例如,数据库,参数,运行总计,SQL表达式,摘要,组名等。
          也可以在公式中引用其他公式字段。
5,公式中表示字段
      -- 参数字段:{?我的参数字段}
      --公式字段: {@ another formula}
      --运行总计字段:{# my running total}
      --SQL表达式字段:{% my SQL expression}
      --摘要和组名看起来像函数,实际上是报表字段的速记写法
            -- 摘要: Sum({订单.订单金额},{订单.承运商})
            -- 组名: GroupName({订单.承运商})
6,语句
      -- 每个语句占一行(新行或冒号分开) y = “” : x = 30 :formula = true
      -- 截断, x = 10 + _
                             10 + 10
      -- 数字:不带任何逗号分隔符
      -- 货币: CCur(10000)
      -- 字符串:  "hello”           === hello
                        “ "" hello "" ”  === "hello"
                        "hello"(2)  === "e"
                        "hello"(-5) === "h"
                        "604-555-1234"(1 to 3) === "604"
                        "abcdef"(-3 to -1) === "def"
      -- 日期,时间,日期时间
            #8/6/1978 1:20 am#
            CDateTime("8/6/1978 1:20 am")
            CDateTime("1:20 am")
            CTime(10,30,0)  --- 分隔 hour,minute,second
            CTime(#10:30 am#)
7,范围
      -- 2 到 5  === 2 To 5 (包括2和5)
      -- 2 到 5  === 2 _To 5 (不包括2,包括5)
      -- 小于或等于 5 === Is <= 5
      -- 日期范围 
            #8/6/1978 1:20 am# To #10/7/1978 1:20 am#
            Is <= #8/6/1978 1:20 am#
8,数组
      -- Array(10,5,20)
      -- Array("aaa","bbb","ccc")
      -- Array(#8/6/1978 # To #10/7/1978# , #8/6/1978 #)
      -- Array(10,5,20)(2)  === 5
9,变量
      -- Dim a AS String
          a = left({Customer.Fax}, 3)
          a = {Customer.Fax}(1 to 3)
       注释:全局变量只在1个报表中用,不包括子报表
                子报表要使用 共享变量。

            



二,Crytal Report语法
1,公式的结果
-- 10 :公式返回值不需要任何变量代替,可以是7种数据类型之一(数字,货币,字符串,布尔,日期,时间,日期时间)
例如: if {Orders.Order Amount} >= 1000 then
              "Insured shipping"
         else
              "Regular shipping"

2,注释
 -- //注释
 -- 赋值, X:=10
 -- 变量,Local NumberVar X;
             X:=10

三,利用公式执行报表计算
Crystal Reports 有几种不同的公式
1,报表公式
      -- 是在报表中创建的单独公式。例如,计算订购日期与发货日期之间天数的公式。
2,条件格式化公式
      -- 更改报表的布局和设计,以及文本,数据库字段,对象或真个报表节的外观(如:颜色,字体)
      -- 通过“格式编辑器”来设置文本的格式。如果需要创建格式化公式,请从“格式化编辑器”访问“公式编辑器”
3,选定公式
      -- 指定并限制在报表中出现的记录和组。(筛选)
      -- 一般不需要直接输入这些公式,而是使用“选择专家”来指定选定公式。
          Crystal Reports 便会生成记录选定公式和组选定公式。(只能使用Crystal语法)

四,自定义函数
      --在Crytal Reports 中创建的用于对数据进行求值,计算或转换过程。
      --当在公式中使用自定义函数时,函数定义中的所有操作都会被执行,而无需在公示自身中单独的指定。
      -- 必须作为公式的一部分
      使用自定义函数的优点:
            -- 替换众多公式中公共的逻辑部分
            --可以使用“公式中提取自定义函数对话框”将现有的公式转换为自定义函数
            --自定义函数可以包含参数
            --可以定义自定义函数的帮助文本和默认的参数值,方便用户
            --自定义函数保存为报表文件(.rpt)的一部分。并且没有任何外部依赖
            -- 自定义函数没有状态;相同的输入得到相同的结果 
            --自定义函数是独立于报表的
      规则:
            --不能在自定义函数中使用报表字段或数据库字段,包括汇总字段
            --不能使用共享或全局变量,但是在公式内调用自定义函数时,你可以将全局或共享变量作为参数传入
            --不能使用递归,不管是直接还是间接
            --不能直接使用UFL(用户函数库)
            --不能调用“求值时间”,“打印状态”或“文档属性”函数。(包括:Rnd,CurrentFieldValue,DefaultAttribute,GridRowColumnValue)
    例如: Function myFunc(numInput as number)
                  myFunc = numInput + 5
              End Function 
posted on 2009-08-12 17:19  tommy007  阅读(1602)  评论(0编辑  收藏  举报