Для выявления подобных ошибок
я писал НЕ УНИВЕРСАЛЬНУЮ програмку.
У вас работать не будет ( специфику надо учесть)
Но если поймете общий смысл - допишите
Код |
---|
set deleted on
delete file c:\temp\q1.dbf
delete file c:\temp\q2.dbf
delete file c:\temp\q3.dbf
delete file c:\temp\sravnen.dbf
delete file c:\temp\sravnen.xls
delete file c:\temp\all1.dbf
USE N:\BEST2009\DP_2009\SCLAD\Mdocm.DBF NOUPDATE SHARED in 1
USE N:\BEST2009\DP_2009\Main.DBF NOUPDATE SHARED in 2
SEL ECT MAIN.DATAOPER as date, MAIN.DT_SCHET as SCHET, SUM(MAIN.SUMMA) as DSUM ;
FR OM MAIN;
WHERE MAIN.DT_SCHET = "40" or MAIN.DT_SCHET = "410";
GROUP BY MAIN.DATAOPER, MAIN.DT_SCHET;
INTO TABLE c:\temp\Q1.DBF
SEL ECT MAIN.DATAOPER as date, MAIN.KT_SCHET as SCHET, SUM(MAIN.SUMMA) as KSUM;
FR OM MAIN;
WH ERE MAIN.KT_SCHET = "40" or MAIN.kT_SCHET = "410";
GROUP BY MAIN.DATAOPER, MAIN.KT_SCHET;
INTO TABLE c:\temp\Q2.DBF
SEL ECT MDOCM.DATE, MDOCM.SCHET,;
sum(iif(MDOCM.vid="1".and.codeoper<>"7",MDOCM.SUM,0)) as prihod, ;
sum(iif(MDOCM.vid="2",MDOCM.SUM,iif((MDOCM.vid="1".and.codeoper="7"),0-MDOCM.SUM,0))) as rashod ;
FROM MDOCM;
WH ERE (MDOCM.SCHET = "40" or MDOCM.SCHET = "410") and year(MDOCM.DATE)>=2008;
GROUP BY MDOCM.DATE, MDOCM.SCHET;
INTO TABLE c:\temp\Q3.DBF
CRE ATE TABLE c:\temp\all1;
(date D, schet n(5), dsum n(10,2), ksum n(10,2), prihod N(10,2), rashod n(10,2))
append from c:\temp\q1.dbf
append fr om c:\temp\q2.dbf
append fr om c:\temp\q3.dbf
SELECT all1.DATE, all1.SCHET,;
sum (all1.dsum) as dsum,;
sum (all1.ksum) as ksum,;
sum (all1.prihod) as prihod,;
sum (all1.rashod) as rashod,;
sum (all1.dsum - all1.prihod) as luft1,;
sum (all1.ksum - all1.rashod) as luft2;
FR OM c:\temp\all1;
GROUP BY all1.DATE, all1.SCHET;
INTO TABLE c:\temp\sravnen.DBF
delete all for (abs(dsum-prihod)<1 and abs(ksum-rashod)<1)
delete all for (abs(luft1-luft2)<1)
delete all for year(date)<2009
pack
COPY TO C:\TEMP\sravnen.XLS XLS
close all
quit |