Formula4 -- 报表取数公式分析器
(创建时间:2011年07月18日 19:47:00)
Jangogo : 
'创建实例:
set F4=MyApp.Create("Formula" , objPram)

'objPram 可以设置以下键值:
'MonthBegin --  取数开始月份
'MonthEnd    --  取数结束月份
'AccYear  --- 取数的会计年份,可以没有,默认为当前帐套的会计年度
'DateBegin -- 取数开始日期
'DateEnd ---  取数结束日期 ,这两个日期可以没有,系统会自动根据起止月份来计算

'当objPram 参数缺少时,也可以通过这个组件的属性来进行赋值,例如:
F4.MonthBegin = 7   ' 设置报表开始月份为7月

'我们建议是使用objPram 的方式进行预设。

            

分析函数一:

Public Function Analyse(ByVal s As String, Optional oPAZU As Object, Optional strReturnWhenZero As String = "0") As String

'oPAZU  如果传入了,则获得结果再返回,否则返回 一个SC的代码取数语句
'strReturnWhenZero ,表示如果结果为零的话,用来替代的字符串
'例如:
F4.Analyse("全年销售额 ?累计(5101) 元" , PAZU , String(5," "))
'结果为 全年销售额 19900 元
'如果结果为零 则变成: 全年销售额       元

这个分析函数适合以下两种情况:

1. 和上述全年销售额类似的描述字符串里面要填入数字的情况

2. 公式在混合运算表达式中,如:(?累计(5101) + ?流入(4111)) / 2

    结果会返回: (19900 + 3000) / 2

     你可以再用PAZU.Fly 这个结果就能得到一个最终的值

如果你不如传入PAZU, 则第一种情况是不能处理的,而第二种情况是可以的,因为第二种情况会返回SC代码,可以通过把二次Fly ,就能得到最终结果 

分析函数二:

Public Function Analyse_(ByVal s As String, Optional ByVal strRefForBatch As String) As String
'注意这函数名和分析函数一的区别是最后多一个下划线
'这个函数只适合于报表里面有很多单元格,很多公式要处理,为了加快程序运行速度,可以批量处理这些公式,如:三大报表和科目明细表就是这样处理的。
'每10个公式做一个批次处理。

'参数 strRefForBatch   是一个键,表示当前公司的值批量返回的时候标记这个值是属于哪个单元格的,例如:
'2_3:19900
'说明是第二行第三列的值为19900,当然这个键可以你自己定义。
文档中心