我正在撰写一份报告,其中包含3组:年,月和供应商。
每个页面都以年份开头,然后是12个月中的每一个,每个页面都有销售摘要。然后,用户可以深入查看该月份每家公司的个人销售数据。
e.g。我报告的最高级别如下所示:
2010
January £20,000
February £30,000
March £15,000
etc.
2011
January £16,000
February £14,000
现在,我希望将2011年1月的价值与去年同期的价值进行比较(在这种情况下:16,000对20,000),这样我就可以进行一些额外的计算。
目前,我通过使用名为JanGlobal,FebGlobal等的全局变量来实现这一目标,这些变量在必要时进行存储和检索。这是有效的,因为我知道只有12个月,所以我可以提前命名变量。
但是,在供应商层面,我不知道会有多少供应商,或者根本不存在供应商(供应商可能是新的,因此他们不会有年度信息;或者他们可能已经破产了,所以在新的一年里不存在。)
我的供应商深入研究如下:
2010
January
Company 1 £5,000
Company 2 £7,000
Company 3 £8,000
所以我需要将可变数量的供应商与之前12个月的同行进行比较(如果存在的话)。有什么想法吗?
答案 0 :(得分:0)
这里的解决方案涉及相当程度的字符串操作。基本上,在公司的团体页脚中(当年是2010年),您会建立一系列公司名称和销售数据。当年份是2011年时,您处理字符串而不是提取与2011年相关的数据(对于给定的公司和月份),并将其用于比较。
因此,对于名为ProcessJan的字符串公式,您可能具有(使用管道作为拆分字符):
Global StringVar JanGlobal;
Local NumberVar NumberToCompare := 0;
If Year(Sales) = 2010 Then
JanGlobal := '||' + {CompanyName} + '|' + ToText({SalesFigure}); //append current value to Jan's formula
Else
(
If UBound(SalesSearch) > 0
(
Local NumberVar Searching := 1;
For Searching = 1 to UBound(SalesSearch)
If SalesSearch[Searching] StartsWith ({CompanyName} + '|') Then
(
Local StringVar Array Matched := Split(SalesSearch[Searching], '|')
NumberToCompare := ToNumber(Matched[2]);
)
Next
)
//do whatever you want with the 2011 sales figure and the value of NumberToCompare
//(which should be either zero or Jan 2010's sales figure for the company) here
)
通过一些工作,您可以调整此方法,使一个公式和全局变量管理所有月份和公司。