//在初始化時統計工作的完成
procedure TSumAccountforinitial;
begin
//根據不同的狀態設置SQL代碼以計算不同的平衡情況
adoqueryClose;
adoquerySQLClear;
adoquerySQLAdd(select 科目代碼 科目名稱);
adoquerySQLAdd((case when 余額方向=借方 then 期初余額 else end 累計借方));
adoquerySQLAdd(as 期初借方);
adoquerySQLAdd((case when 余額方向=貸方 then 期初余額 else end 累計貸方));
adoquerySQLAdd( as 期初貸方);
adoquerySQLAdd(累計借方 as 本期發生借方累計貸方 as 本期發生貸方);
adoquerySQLAdd( case when 余額方向=借方 then 期初余額 else end as 期末借方);
adoquerySQLAdd( case when 余額方向=貸方 then 期初余額 else end as 期末貸方);
adoquerySQLAdd( from 帳簿初始化表 where 累計借方<> or 累計貸方<> or 期初余額<>);
adoqueryOpen;
//統計數據
sumtable;
end;
//在正式使用時統計工作的完成
procedure TSumAccountforuse;
begin
//根據不同的狀態設置SQL代碼以計算不同的平衡情況
adoqueryClose;
adoquerySQLClear;
adoquerySQLAdd(select a科目代碼 b科目名稱);
adoquerySQLAdd((case when a余額方向=借方 then 期初余額 else end ));
adoquerySQLAdd( as 期初借方);
adoquerySQLAdd((case when a余額方向=貸方 then 期初余額 else end));
adoquerySQLAdd(as 期初貸方);
adoquerySQLAdd(本期借方合計 as 本期發生借方 本期貸方合計 as 本期發生貸方);
adoquerySQLAdd(case when a余額方向=借方 then 余額 else end as 期末借方);
adoquerySQLAdd(case when a余額方向=貸方 then 余額 else end as 期末貸方);
adoquerySQLAdd( from 本期匯總帳簿 as a 科目表 as b );
adoquerySQLAdd( where a科目代碼 = b科目代碼 and (本期借方合計<> );
adoquerySQLAdd( or 本期貸方合計<> or 期初余額<> or 余額<>));
adoqueryOpen;
//統計數據
sumtable;
end;
//對數據進行統計
procedure TSumAccountsumtable;
var
counti:integer;
valvalvalvalvalval:double;
begin
//計算平衡表中的記錄數
count:=datasourceDataSetRecordCount;
//統計信息判斷是否試算平衡
val:=;
val:=;
val:=;
val:=;
val:=;
val:=;
while not datasourceDataSetEof do
begin
val:=strtofloat(dbgridFields[]Text)+val;
val:=strtofloat(dbgridFields[]Text)+val;
val:=strtofloat(dbgridFields[]Text)+val;
val:=strtofloat(dbgridFields[]Text)+val;
val:=strtofloat(dbgridFields[]Text)+val;
val:=strtofloat(dbgridFields[]Text)+val;
datasourceDataSetNext;
end;
[] [] [] [] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/25050.html