Прайсы и выгрузка из них

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Прайсы и выгрузка из них

Сообщение korvanakorvana »

Ребята привет ) делаю выгрузку из прайсов . с одним прайсом все ОК. а подскажите почему когда я выбираю несколько Складов(Katpodr) выгружается только по последнему( :? Как правильно построить цепочку доступа к моим таблицам я думаю у меня тут где-то проблемка((

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

interface _kor_astifarm  escclose;


Table struct tKatPodr
(
nrec:comp,
name:string[40]
)
with index
(idx1=nrec, idx2=name);

create view as
select * from 
klprice
,prices
, teksaldo
, katmc
, klreshr
, exclassname
,katotped
,grnal
,SPGRNAL
, tkatpodr _katpodr
, katpodr
, tkatpodr 


where
((
    klprice.nrec==prices.cklprice
and prices.cthing==teksaldo.cmc

and KatPodr.nrec==teksaldo.cpodr
and katpodr.nrec==_katpodr.nrec
and teksaldo.cmc==katmc.nrec
and katmc.creshr==klreshr.nrec
and katmc.nrec==katotped.cmcusl
and teksaldo.cparty==katparty.nrec
and katmc.cgrnal==grnal.nrec
and Grnal.nrec==SPGRNAL.cGrNal

and 'Страна происхождения'==exclassname.name
and word(1430)==exclassname.wtable

and katparty.nrec==exclassval.crec

and exclassname.classcode==exclassval.classcode
and exclassval.cclassseg==exclassseg.nrec

));



File F;

WIndow wPriceSel escclose;
show(1,1,50,30)

panel P1                                  
 show at(,,,);
 browse Bro1 ;
  table klprice;                       
  fields                                  
  klprice.name 'Прайс-листы':[30],protect;
  end;
end;

handleevent
cminit:
{
getfirst klprice;
}

cmDefault: 
{
CloseWindow(wPriceSel);
}	

end;
end;

WIndow wScladSel (,,sci178InsPM) escclose;
show(1,1,50,30)

panel P3                                  
 show at(,,,);
 browse Bro3 ;
  table katpodr;                       
  fields                                  
 if (isValid(#_katpodr), 'v', ''):[1],skip, {FONT = { Italic = IF( isvalid(tn_katpodr),True, false)}}, {FONT = { COLOR = IF( isvalid(tn_katpodr), 3, 0)}};
 katpodr.name 'Наименование склада':[30],protect, {FONT = { COLOR = IF( isvalid(tn_katpodr), 3, 0)}};                                                       
  end;
end;

handleevent

cmInit:
{
getfirst katpodr;

}

cmMarkUnMark: 
  	{    // message ('cmMarkUnMark');
	if not isValid(#_katpodr)
		{
                insert in tkatpodr set 
				nrec:=katpodr.nrec,
			    	name:=katpodr.name;

                if getnext katpodr = tsOk {}
        	}
        else
               {
                delete from tkatpodr where ((katpodr.nrec==tkatpodr.nrec));
                if getnext katpodr = tsOk {}
               }
	RescanPanel (#katpodr);
	}

  cmSelectAll: //message ('cmSelectAll');
	{
	PushPos(tnkatpodr);
	_loop katpodr if not isValid(#_katpodr) insert in tkatpodr set tkatpodr.nrec:=katpodr.nrec,
			    name:=katpodr.name;
	PopPos(tnkatpodr);
        RescanPanel (#katpodr);
	}

  cmUnSelectAll:// message ('cmUnSelectAll');
  	{
	  PushPos(tnkatpodr);
// 	  _loop katpodr if isValid(#_katpodr) delete from _katpodr where ((katpodr.nrec==nrec));
	  delete all from tkatpodr;
	  PopPos(tnkatpodr);
          RescanPanel (#katpodr);
	}
  cmInvertAll: //message ('cmInvertAll');
	{ // Обработка клавиши "Gray *"
	  PushPos(tnkatpodr);
  	  _loop katpodr
	  if not isValid(#_katpodr)
               {
                 insert in tkatpodr set nrec:=katpodr.nrec,
			    name:=katpodr.name;
               }
          else
               {
                 delete from tkatpodr where ((katpodr.nrec==tkatpodr.nrec));
               }

	  PopPos(tnkatpodr);
          RescanPanel (#katpodr);
	};

cmDefault: 
{
CloseWindow(wScladSel);
}	

end;

end;



handleevent 

cminit:
{
Var filename, filenamemail:string;
var hDBFh, hDBFhmail:longint;

filename:=GetStringParameter('Files','OutputFilesDirectory',0) + 'price_ASTI'+DatetoStr(cur_date,'YYYYMMDD')+'.dbf';


hDBFh:=DBFOpen(filename, stCreate)


if hDBFh<1 then message ('Ошибка создания файла выгрузки!');
	   else
{

DBFAddField(hDBFh,'KOD'    ,dbNum,   15 ,0);
DBFAddField(hDBFh,'NAME'   ,dbChar,  20 ,0);
DBFAddField(hDBFh,'PROIZ'  ,dbChar,  30 ,0);
DBFAddField(hDBFh,'PACK'   ,dbChar,  5 ,0);
DBFAddField(hDBFh,'PRICE'  ,dbNum,   15 ,2);
DBFAddField(hDBFh,'OSTAT'  ,dbNum,   15 ,2);
DBFAddField(hDBFh,'GODN'   ,dbDate,  10 ,0);
DBFAddField(hDBFh,'ISK'   ,dbChar,   15 ,2);
DBFAddField(hDBFh,'PRICEN'  ,dbNum,   15 ,2);


RunWindowModal(wPriceSel);
RunWindowModal(wScladSel);

StartNewVisual(vtRotateVisual, vfTimer+vfBreak+vfConfirm,'Подождите, идет выгрузка ...', 100000);

_loop prices
// КАК ТУТ ПОСТРОИТЬ ЦЕПОЧКУ
_loop teksaldo
_loop katparty {
getfirst katmc;

	DBFPutFieldValue(hDBFh,'KOD'    ,katmc.barkod);
	DBFPutFieldValue(hDBFh,'NAME'   ,katmc.name);
	DBFPutFieldValue(hDBFh,'PROIZ' ,katmc.remmc);
        DBFPutFieldValue(hDBFh,'PACK'   ,katotped.name);
   	DBFPutFieldValue(hDBFh,'PRICE' ,string(round(prices.price,2)));
	DBFPutFieldValue(hDBFh,'OSTAT'   ,string(round(teksaldo.kol,2)));
	DBFPutFieldValue(hDBFh,'GODN' ,DateToStr(KATPARTY.DGODN, 'YYYYMMDD'));
       	DBFPutFieldValue(hDBFh,'ISK' ,string(KATMC.BARKOD2));
       	DBFPutFieldValue(hDBFh,'PRICEN' ,(prices.price+(prices.price*Spgrnal.nalog/100)));         
	DBFInsertRecord (hDBFh);

	if (not nextvisual)  break;
}

StopVisual('Выгрузка произведена',0);

DBFClose(hDBFh);
message('Прайс успешно выгружен в файл '+FileName);

//ProcessText(FileName,vfDefault Or vfEscable Or vfNewTitle Or vfMacroSize,'Отчет о проданных в розницу товарах');
}
abort;
}

cmdefault:
{
CloseInterface ( cmDefault );
}


end;
end.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Прайсы и выгрузка из них

Сообщение m0p3e »

Как вариант:
1. Подцепить teksaldo к tKatPodr или его синониму во вью.

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

TekSaldo.cPodr == tKatPodr.nrec
2. В

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

_loop prices
// КАК ТУТ ПОСТРОИТЬ ЦЕПОЧКУ
_loop teksaldo
 { If not IsValid(tnTKatPodr)
    continue;
  _loop katparty {
..............
Ответить