为了在多个关联的表中查询数据,通常需要使用crosstab风格的数据窗口。
下面是一个crosstab风格的数据窗口,使用了三个数据表:course,score,student。course表保存课程编号及名称,score表保存成绩,student保存学生编号及学生姓名。(您可用table_student_course_score.sql建立这三个表,用score-course-student.data.sql来输入测试用数据。)
下面来建立数据窗口。
1、选择数据源。使用sql select类型的数据源。
2、选择下图所示的三个表:
3、为数据窗口选择相应的数据列:
4、定义交叉表:
5、下面是默认的数据窗口:
6、我们需要修改它以适应我们的需要:
7、为计算每个学生的平均分,我们需要在deltail区的最后一列加上一个计算列,来计算平均成绩。
8、该计算列的表达式如下:
9、在数据窗口的head[1]区加入一个文本标签来显示标题,按下图修改其属性值。
10、注意设置该标签的position属性组中的layer属性为foreground。这样才可以跨多列显示。
11、我们希望score列的数据小于60时用红色显示,在该列的expressions属性组中设置其color属性。
12、为显示每个班级各课程的平均分,需要设置trailer group classname中的计算控件的表达式为
avg(score for group 1)。如下图所示:
13、下图是最后设置完成后的数据窗口。
建立w_stu_report窗口,其上放置数据窗口dw_1,其子数据窗口为d_score_report。
在窗口的open事件为dw_1设置事务对象及检索数据。
数据空间