|

楼主 |
发表于 2008-7-16 11:47:11
|
显示全部楼层
讲下思路:
把原始数据表 通过透视 可以得出
透视数据集一:统计 S 和A的个数 统计 S和A的总数
透视数据集二:统计S和A的总分数。
两个透视数据集因为前面的班组是固定的,而且加上取值顺序固定,班组字段是查找属性
所以两个透视数据集放在一起行数是一样的。
下面是代码:
procedure TMainForm.BizFormShow(Sender: TObject);
begin
DataSetTotalCount.DataSet.Close;
DataSetTotalSore.DataSet.Close;
end;
procedure TMainForm.btnQueryClick(Sender: TObject);
var
lParam1: TBizParam;
lParam2: TBizParam;
begin
lParam1 := SystemUtils.TContextUtils.GetParam(Context,'Biz:\OPERATION\Run.ParamGroup\lyear.param','lyear');
lParam2 := SystemUtils.TContextUtils.GetParam(Context,'Biz:\OPERATION\Run.ParamGroup\lmonth.param','lmonth');
lParam1.Value := deDept.Text;
lParam2.Value := DataEdit1.text;
DataSetTotalCount.DataSet.open;
DataSetTotalSore.DataSet.open;
TPivotDataSet(DataSetTotalCount.dataSet).Close;
TPivotDataSet(DataSetTotalSore.DataSet).Close;
TPivotDataSet(DataSetTotalCount.dataSet).DecisionDef.SQL := 'SELECT * FROM ANALYSRECORD ' + ' WHERE year =&[Biz:\OPERATION\Run.ParamGroup\lyear.param] and month =&[Biz:\OPERATION\Run.ParamGroup\lmonth.param]';
TPivotDataSet(DataSetTotalSore.DataSet).DecisionDef.SQL := 'SELECT * FROM ANALYSRECORD ' + ' WHERE year =&[Biz:\OPERATION\Run.ParamGroup\lyear.param] and month =&[Biz:\OPERATION\Run.ParamGroup\lmonth.param]';
TPivotDataSet(DataSetTotalCount.dataSet).Open;
TPivotDataSet(DataSetTotalSore.dataSet).Open;
end; |
|