Страница 1 из 1

Не верно выводится отчет

Добавлено: 15 мар 2010, 12:36
korvanakorvana
Ребята привет) Что то я опять подтормаживаю(....,,

Код: Выделить всё

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; все отлично.

Добавлено: 15 мар 2010, 12:50
KATZ
Если проблема только в этом, то вместо
...
t_alltovar.dgod:=KATPARTY.dgodn;
t_alltovar.prodcen:=RZKUTPRIH.PPRICE;
...
надо
...
t_alltovar.dgod:=KATPARTY.dgodn,
t_alltovar.prodcen:=RZKUTPRIH.PPRICE;
...

Добавлено: 15 мар 2010, 14:10
korvanakorvana
ой я дурочка))) точно .... точка с запятой , как всегда по мелочи ..