注意 如果先读数据报表教程(从创建一个简单数据报表开始),会更好的理解这一主题。
创建一个数据报表的一种方法是:
在检索结构之后,将创建适当数目的分组标头和注脚,而且每一标头/注脚对被指定一个对应于一个 Command 对象的名字。
Command 对象包含的所有数据字段,都作为 Command 对象被放下的部分中的 TextBox 控件,被自动创建在数据报表上。每一 TextBox 的 DataMember 属性和 DataField 属性都按照 Command 对象及其数据字段设置。
当数据报表被绑定到一个数据环境时,报表上控件的放置规则就不再是立即显现。该主题解释了在数据环境中创建的层次结构是如何与在数据报表中构造的分组标头和注脚系统相关联的。
除两个例外情况,数据环境中的每一个 Command 对象或对应于一对分组标头和注脚部分,或对应于细节部分。例外的情况在该主题稍后部分讨论。
下面的插图显示包含四个 Command 对象(每一对象都至少与一个其它的对象有父/子关系)的数据环境设计器的一个图解视图。属于表的数据字段未显示。
另一方面,数据报表设计器被构造为一系列的部分。并且每一部分可以按照如下四种类型归类:报表标头/注脚、页标头/注脚、分组标头/注脚和细节部分。为便于指导,可以不管报表和页标头/注脚对。这就剩下了分组标头/注脚和细节部分。
细节部分,设计器的最内层部分,对应于最低层次的 Command 对象。当在层次结构中逐渐向上时,细节部分则由成对的部分括起来,每一对与一个单个的 Command 对象相关联。下面的插图使 Command 对象和部分相互关联:
对应于 Command 对象的部分
这样插图显示了数据环境的层次结构实际上对应于一系列括号的扩展,最内层的(细节)部分对应于层次结构中的最低层次,最外层部分对应于最高层次的 Command 对象。
控件的放置由它从属的部分(或部分对)管理。简言之,控件可以放置在产生它的部分和比它自身更低层次的所有部分中。例如,如果一个控件属于 Command1 部分对,它也可以被放置在 Commands2、3 和 4 的部分对中。第二个示例是:在部分3中产生的控件也能放置在部分4中,但不能放置在部分1和2中。总而言之,在 Command 4(细节部分)部分中产生的控件不能被放置在除细节部分以外的任何其它位置。
对于以上有关控件位置的指南,Function 控件有三点例外。Function 控件不象 TextBox 控件那样直接绑定到记录集上。相反,Function 控件在报表生成时计算自己的值。因此,Function 控件只能被放置在报表的注脚部分中。
Function 控件的第二个例外是:它只能被放置在比自身层次高一级的任何部分对中。例如,如果Command 3 对象包含一个 Quantity 字段,可以把一个合计 Quantity 值的 Function 控件放置到Command 2的注脚部分上,或放置到 Command 1 的注脚部分上。
关于 Function 控件的第三个例外是:不象其它的数据绑定控件(TextBox 控件),Function 控件可以被放置在报表注脚部分中。当这样做时,控件的计算范围将扩大到整个报表。例如,放置在报表注脚中用来计算 Quantity 字段合计值的 Function 控件,将计算报表上每一个 Quantity 控件的合计值。
有两个例外,数据环境中的每一个 Command 对象对应于一对分组标头和注脚。当您使用数据环境设计器的分组特征时第一个例外发生。
当创建分组字段时,数据环境设计器在一个单个的 Command 对象下创建两个文件夹。第一个包含分组字段,另一个包含细节字段。尽管没有为分组字段创建一个新的 Command 对象,必须在数据报表上创建一个新的分组标头/注脚对,并且对这一需要使其成为一个例外。
当在数据环境中创建一个总计合计字段时发生第二个例外。如同当创建一个分组字段一样,将为 Command 对象创建一个新的文件夹。新文件夹包含任何创建的总计合计字段,并且必须将一个新的分组标头/注脚添加到数据报表。
详细信息 有关创建合计字段的详细信息,请参阅“使用 Data Environment 设计器”中的“创建合计”。
如果对于数据环境 Command 对象的层次结构存有疑问,有两种方法确保数据报表有正确的分组标头/注脚结构:
检索结构——如果还没有在数据报表设计器上放置很多控件,并且可以重新组织报表,可以使用 Retrieve Structure Command 自动创建正确数目的分组标头和注脚。
ADO层次结构信息——在数据环境设计器中右键单击最顶层的 Command 对象,并单击“层次结构信息...”显示“层次结构信息”对话框。单击“查看 ADO 层次结构”选项卡查看 Command 对象的层次结构的图形表示。