“扁平化”数据库表的数据汇总是信息系统开发人员和用户面临的首要任务之一。同时,它通常难以预测用户在数据选择标准(过滤器),数据维度(片)和汇总字段列表方面的需求。有时候为每个用户开发新的AQL查询和报表会花费大量的人力和时间,而这些人力和时间要是能花在开发信息系统上面可能会更好。问题是如何在不需要开发人员帮助的情况下,用户可以自己创建pivot reports透视报表。
FastReports产品线中的FastCube组件可以很好地解决这个问题。将数据源链接到FastCube透视表中,我们会得到一个能够进行维度,过滤器计量管理的工具。
下面的例子展示了如何简单快速地创建允许用户建立数据表的应用程序。
首先,我们以含有 "sales"表的 "salesdb.mdb" 数据库为例,该销售表中包含了该零售公司的所有销售数据。表中所包含的字段如下:
- Customer - 顾客
- Date - 销售日期
- Manager - 主管人员
- Product - 产品类型
- Amount - 数目
- Balance - 客户余额
- Cost - 销售成本
- Paid - 付款金额
下图是2006年该零售公司的销售数据:
接下来就开始应用开发:
创建一个新的应用程序,并添加一个TPanel Panel1的主窗体中。该面板中包含所需按钮。设置面板与底边对齐(Panel1.Align:= alBottom)。
我们将使用ADO连接来访问数据库-在默认情况下,这些组件包含在Delphi (dbGo组件集)。不过,要是你愿意你可以选择任何其他数据访问引擎。向窗体中添加一个数据库连接组件(ADOConnection1:TADOConnection)和表访问控件(ADOTable1: TADOTable) ,并将它们与 "Salesdb.mdb" 数据库的 "Sales" 表连接起来。设置ADOConnection1.LoginPrompt = False,跳过数据库登录对话框连接。
返回到FastCube组件,首先我们需要下来3个组件:
fcCube1: TfcCube ---用于数据加载和安排,并将数据储存在内存中。
fcSlice1: TfcSlice---用于过滤和储存数据库透视表结构。
fcGrid1: TfcGrid---可视化数据透视表,并允许用户管理结构和过滤器。
将上面的3个组件添加到窗体中:
将fcCube1连接到数据源:fcCube1.DataSet := ADOTable1
将fcSlice1与fcCube1连接起来:fcSlice1.Cube := fcCube1
将fcGrid1与fcSlice1连接起来:fcGrid1. Slice = fcSlice1
设置fcGrid.Align = alClient:
现在我们需要添加一行代码,启动数据加载和激活数据透视表,
procedure Tfm_Article1.FormCreate (Sender: TObject);
begin
fcGrid1.Open;
end;
运行应用程序,并建立一个数据透视表。建立好后,我们会看见一个空的数据表,你需要对表进行定制使其显示为我们所需的形式。要做到这一点,我们需要在行,列,过滤器中放置域,并创建度量值。
打开下拉列表“字段列表”。请注意,列表中包含字段“Day_Date”,“Day_of_week_Date”和其他人在“销售”表没有列出的字段。这些字段被用于自动创建“日期”字段,我们可以用他们来创建日期部分和过滤器部分的片。
假设我们要找出月销售总额(注意,数据源中的数据表只是2006年的数据)。拖动“Month_Date”到行区域, "Cost"字段到数据区域,过滤器中的"Measures" 字段到列区域。我们便会得到所需数据,如下图:
若要讲数据表变得复杂一点,你可以添加有兴趣的字段,如主管人员,以统计每一个月每个主管人员的销售金额。将"Manager" 字段拖动到列区域。注意,"Manager" 放在 "Measures" 字段的前面和后面都可以。
如果要创建每个销售季度的报表呢?拖动“Quarter_Date”到行,将该字段放置到"Month_Date" 字段前。
如果我们不需要按月排列的信息,我们可以将 "Month_Date"字段拖动到过滤器区域,或者将其拖动到"Field List"中完全删除。或者我们可以想象钻取维度“Quarter_Date”。
选中 "Plastic Box":
在数据透视表的数据发生了变化。现在有只塑料盒的销售数据:
在FastCube透视表中即使只进行了一个简单的操作,都会根据不同的设置标准而生成不同的结果,而又不需要开发人员的帮助。如果有需要的话, FastCube还可以允许你保存透视图中预先存在的结构,并在需要的时候加载它们。因此用户可以立即得到所需的数据透视表,无需任何拖动或者过滤.
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:FastReport控件中文网 [https://www.fastreportcn.com/]
本文地址:https://www.fastreportcn.com/post/1104.html