Не отрабатывает условие

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

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

Ответить
Gameus_
Местный житель
Сообщения: 209
Зарегистрирован: 18 окт 2006, 17:03
Откуда: Ростов на Дону Новочеркасск Новороссийск
Контактная информация:

Не отрабатывает условие

Сообщение Gameus_ »

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

interface nerasch_sotr 'nerasch_sotr' EscClose;
show at (3, 3, 63, 13);

form nerasch_sotr ('nerasch_sotr') with novisual;

var
 datotch : date;
 lschet_nrec : comp;
 sum_nashicl : double;
podrnrec : comp;
		podrnames:string;
		podrmarker,mid : longint;

create view vpodr_pick
as select *
from pick
where((
  word(11)/==pick.wlist
)); 

function podrCount: string;
 var cnt: integer;
begin
  cnt:= 0;
  if vpodr_pick.getfirst pick=tsok
  vpodr_pick._loop pick
  {
    cnt:=cnt+1;
  }
  case cnt of
  1: podrCount:= '1 Ї®¤а §¤Ґ«Ґ­ЁҐ';
  2,3,4: podrCount:= cnt+' Ї®¤а §¤Ґ«Ґ­Ёп';
  else podrCount:= cnt+' Ї®¤а §¤Ґ«Ґ­Ё©';
 end;
end;

table struct tmain_nach
(
 lschet_nrec: comp,
 tabn: string,
 fio: string
)
with index
(
 i0 = lschet_nrec
)
;

create view vmain
as
from tmain_nach (memory);

create view vsotr
as select lschet.nrec,lschet.tabn,persons.fio
from lschet,persons,katpodr,pick
where((
  lschet.tperson==persons.nrec
  and lschet.cex==katpodr.nrec
  and word(11)==pick.wlist
  and katpodr.nrec==pick.crec
))
  and (lschet.datuv=0 or lschet.datuv>datotch)
; 

create view vnachisl
as select *
from nachisl
where((
  lschet_nrec/==nachisl.clsch
)); 



screen smain;
show at (1, 1, 59, 9);
fields
podrnames:pickbutton,protect;
buttons
 cmPrint;
<<
Подразделение .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 <. Сформировать .>
>>
end;

handleevent
cmDelOnProtect:
{
}

cmpick:
		{
			 if curfield=#podrnames
			 {
			  delete from PICK where word(11)=pick.wlist; 
			  runinterface('Z_KATPODR::GETSOMEPODR')
			  Set podrNames:= podrCount;
			 }		
		}


cmprint:
{
	StartNewVisual(vtRotateVisual, vfThread or vfTimer, '‘Сбор и обработка данных', 1);

	datotch:=dgettune('UP.DATOTCH');
	vmain.delete all tmain_nach;

	if vsotr.getfirst lschet=tsok
	vsotr._loop lschet
	{
		vmain.insert tmain_nach
		set
			lschet_nrec:=vsotr.lschet.nrec,
			tabn:=vsotr.lschet.tabn,
			fio:=vsotr.persons.fio
	}
	if vmain.getfirst tmain_nach=tsok
	vmain._loop tmain_nach
	{
		lschet_nrec:=vmain.tmain_nach.lschet_nrec;
		sum_nashicl:=0;
		if vnachisl.getfirst nachisl=tsok
		vnachisl._loop nachisl
		{
			sum_nashicl:=sum_nashicl+vnachisl.nachisl.summa;
		}
		if (sum_nashicl=0)
		{
			nerasch_sotr.write(vmain.tmain_nach.tabn);
			nerasch_sotr.write(vmain.tmain_nach.fio);
		}
	}
	nerasch_sotr.putevent(feBreak);
	StopVisual('', 0);
	nerasch_sotr.showfile('');
}
end;
end.
При выборе подразделения все отрабатывает нормально.
Нормально считает сколько подразделений выбрано,
но при формировании попадают записи по всем подразделениям, не пойму в чем проблема.
Такое впечатление, что and word(11)==pick.wlist and katpodr.nrec==pick.crec вообще не отрабатывает.
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

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

Where
(( 
  word(11)==pick.wlist 
  And pick.crec  == katpodr.nrec
  And katpodr.nrec == lschet.cex
  And lschet.tperson == persons.nrec 
))
а, ну да - еще необходимо будет организовать цикл по Pick перед циклом по Lschet
Gameus_
Местный житель
Сообщения: 209
Зарегистрирован: 18 окт 2006, 17:03
Откуда: Ростов на Дону Новочеркасск Новороссийск
Контактная информация:

Сообщение Gameus_ »

Спасибо ! понедельник день тяжелый :)
Ответить