Код: Выделить всё
Const
xlColorBlack = 0;
End;
interface _enb_srok_godnosti_otchet 'Наличие препаратов с ограниченным сроком годности' escclose, show at(,,65,6);
table struct t_alltovar
(
nrec:comp,
name:string[81],
nomer:string[31],
party:string[81],
kol:double,
dgod:Date,
prodcen:double
)
with index (idx1=nomer+party, idx2=name, idx3=nomer,idx4=prodcen);
var ListAptek: array [0..1] of String;
var i: integer;
create view
var
Apteka:word;
ToNrec:comp;
dat1,date1:date;
as
select * from
katpodr,
RZKUTPRIH,
KATMC,
KATPARTY,
t_alltovar
//, barcode
where
((
word(2) == katpodr.sklad (noindex) and
katpodr.nrec == RZKUTPRIH.CPODR(noindex) and
double(0.009) << RZKUTPRIH.OSTATOK and
RZKUTPRIH.CMC==KATMC.NREC and
RZKUTPRIH.CPARTY==KATPARTY.NREC
));
screen srok_godnosti_Scr 'Наличие препаратов с ограниченным сроком годности' show at(,,,5);
fields
dat1: noprotect;
Apteka: [List ''],Protect;
buttons
cmOk,default;
cmCancel;
<<
до .@@@@@@@@@
.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<. Отчёт о наличие препаратов с ограниченным сроком годности .>
<. Закрыть .>
>>
end;
Handleevent
cmInit:
{
dat1:=cur_date;
SetLimit(ListAptek,RecordsInTable(#katpodr));
i:=0;
_loop katpodr {
ListAptek[i]:=katpodr.name;
i:=i+1;
}
SetEnumList(srok_godnosti_Scr, 0 , ListAptek);
Apteka:=0;
getfirst katpodr where ((ListAptek[Apteka]==katpodr.name));
}
cmOk:
{
var XlRes : Boolean;
var aFileName : String;
var i,n:integer;
date1:=dat1;
StartNewVisual( vtNumericVisual, vfTimer+vfBreak+vfConfirm,''#3'Подготовка отчета к печати', 1);
delete all from t_alltovar;
_loop RZKUTPRIH {
if getfirst t_alltovar where (( KATMC.barkod==t_alltovar.nomer and KATPARTY.name==t_alltovar.party ))=tsOk then {
update current t_alltovar set t_alltovar.kol := t_alltovar.kol + RZKUTPRIH.ostatok;
} else {
insert into t_alltovar set
t_alltovar.nrec:=RZKUTPRIH.nrec,
t_alltovar.name:=KATMC.name,
t_alltovar.nomer:=KATMC.barkod,
t_alltovar.party:=KATPARTY.name,
t_alltovar.kol:=RZKUTPRIH.ostatok,
t_alltovar.dgod:=KATPARTY.dgodn;
t_alltovar.prodcen:=RZKUTPRIH.PPRICE;
}
if (not NextVisual) {
StopVisual('',0);
Message('Формирование отчета прервано пользователем.',OKButton)
xlKillExcel;
Exit;
}
}
StopVisual('',0);
aFileName := GetStringParameter('Files','OutputFilesDirectory',0) +'invent'+datetostr(cur_date,'YYYYMMDD')+'.xls';
DeleteFile(aFileName);
XlRes := xlCreateExcel((aFileName), True);
if (XlRes) XlRes := xlIsExcelValid;
If (not XlRes) Exit;
xlCreateMatrix ( 10000, 7 );
xlSTWriteToMatrix (1,2,'Наличие препаратов с ограниченным сроком годности до '+DateToStr(date1,'DD/MM/YYYY'));
i:=3;
n:=1;
xlSTWriteToMatrix (i,1,'N');
xlSTWriteToMatrix (i,2,'Наименование МЦ');
xlSTWriteToMatrix (i,3,'Н.Номер');
xlSTWriteToMatrix (i,4,'Партия');
xlSTWriteToMatrix (i,5,'Количество');
xlSTWriteToMatrix (i,6,'Годен до');
xlSTWriteToMatrix (i,7,'Прод. цена');
_loop t_alltovar {
if (t_alltovar.dgod <= date1) {
i:=i+1;
xlDOWriteToMatrix (i,1,n);
xlSTWriteToMatrix (i,2,t_alltovar.name);
xlSTWriteToMatrix (i,3,t_alltovar.nomer);
xlSTWriteToMatrix (i,4,t_alltovar.party);
xlDOWriteToMatrix (i,5,t_alltovar.kol);
xlSTWriteToMatrix (i,6,if(t_alltovar.dgod>date(01,01,1980),DateToStr(t_alltovar.dgod,'DD.MM.YYYY'),''));
xlSTWriteToMatrix (i,7,t_alltovar.prodcen);
if(t_alltovar.prodcen>0)then message(t_alltovar.name+' '+t_alltovar.prodcen);
n:=n+1;
}
}
i:=i+2;
xlWriteMatrixToExcel ( 1, 1 );
xlFreeMatrix;
//xlSetFontSize ( 10 , 1 , 1 , MaxExcelRow , MaxExcelCol ); // по всему файлу - шрифт "10"
xlFrameCells ( xlBorderL, xlThin, xlLineStyleNone, xlColorBlack, 3, 1, i-2, 7 );
xlFrameCells ( xlBorderR, xlThin, xlLineStyleNone, xlColorBlack, 3, 1, i-2, 7 );
xlFrameCells ( xlBorderT, xlThin, xlLineStyleNone, xlColorBlack, 3, 1, i-2, 7 );
xlFrameCells ( xlBorderB, xlThin, xlLineStyleNone, xlColorBlack, 3, 1, i-2, 7 );
xlFrameCells ( xlInsideV, xlThin, xlLineStyleNone, xlColorBlack, 3, 1, i-2, 7 );
xlFrameCells ( xlInsideH, xlThin, xlLineStyleNone, xlColorBlack, 3, 1, i-2, 7 );
//xlSetNumberFormat ( '# ##0,00', 2, 3, i, 5 );
//xlSetNumberFormat ( '# ##0', 2, 5, i, 7 );
//xlSetFontStyle ( xlBold, 1 , 1 , 1 , 6);
//xlSetFontStyle ( xlBold, i , 1 , i , 6);
//xlAlignCells(xlCenter, 1, 1, 1, 6);
xlAutoFit(3,1,MaxExcelRow , MaxExcelCol);
DeleteFile('c:\Macro.bas');
LogStrToFile('c:\Macro.bas', ShortStrToWin('Sub Макрос1()'));
LogStrToFile('c:\Macro.bas', ShortStrToWin('ActiveSheet.PageSetup.Zoom = 80'));
LogStrToFile('c:\Macro.bas', ShortStrToWin('ActiveSheet.PageSetup.CenterHorizontally = True'));
LogStrToFile('c:\Macro.bas', ShortStrToWin('End Sub'));
xlImportModule('c:\Macro.bas');
xlRunMacro(ShortStrToWin('Макрос1'));
xlKillExcel;
delete all from t_alltovar;
}
cmCancel:
{
Closeinterface(cmdone);
}
end;
end.
так вот t_alltovar.prodcen у меня выдает 0 и все (...
где я что не так то сделала?
хотя вот тут t_alltovar.prodcen:=RZKUTPRIH.PPRICE; все отлично.