Хочу разложить деврево по полям временной таблицы, для того чтобы потом построить сводную таблицу, но у меня почемуто при удаление записи в pick не отражается в логической таблице. Вот код:
create view
from pick, GROUPSCH, synonym GROUPSCH GROUPSCH1
where ((root==GROUPSCH.nrec and pick.crec==GROUPSCH.nrec and 4==pick.wlist));
.....
Runinterface('L_GRSCH::GetGroupsch',2,2,2,true,1,false);
delete all from DereboTMP;
type StekArray=array[1..2] of comp;
var StekNrec: StekArray;
var StekName:array[1..8] of string;
var i:integer;
i:=1;
if (getFirst GROUPSCH where (GROUPSCH.nrec<>GROUPSCH.cnode) )=tsOK
{
StekNrec[i]:=GROUPSCH.nrec;
StekName[i]:=GROUPSCH.name;
message('Верх: '+StekName[i]);
}
while count(StekNrec)<>0
{
if (getfirst GROUPSCH where ((comp(StekNrec[i])==GROUPSCH.cnode)))=tsok
{
i:=i+1;
StekNrec[i]:=GROUPSCH.nrec;
StekName[i]:=GROUPSCH.name;
message('Добавили в стек:'+StekName[i]+' - '+StekNrec[i]);
//удалим из табл pick
if (getfirst GROUPSCH1 where ((GROUPSCH.nrec==GROUPSCH1.nrec)) )=tsOK
if (getfirst pick where ((GROUPSCH1.nrec==pick.crec(noindex))) )=tsOk
{
delete current pick;
}
}
else
{
message('Не нашел...записываем в таблицу');
StekName[i]:='';
ArrAtDelete(StekNrec,i);
i:=i-1;
message('Вернулись к '+StekName[i]+' - '+StekNrec[i]);
}
}
Насколько я понял, позиционирование от удаления вообще никак не зависит?
Т.е. позиционирование происходит по сцепке из какого-то массива по индексу, а удаление само по себе.
Может тогда имеет смысл перед циклом распечатать содержимое массива и в цикле печатать текущее значение?
Но логическая таблица ограничена же: pick.crec==GROUPSCH.nrec and 4==pick.wlist, потом в я удаляю строку из pick. А она все равно встает тут: if (getfirst GROUPSCH where ((comp(StekNrec)==GROUPSCH.cnode)))=tsok
В том то и проблема, что мне не нужно тут выводить в отчет...а разбить по полям. Или я чего-то не понимаю
в основной вьюшке действительно есть ограничние на groupsch, но когда делаете getfirst where, вы перестраиваете логическую таблицу с нуля.
если хотите, чтобы осталось и основное и добавилось новое ограничение, либо повторите основное заново в условиях либо опишите требуемое дополнительное органичение при помощи bounds или condition, сделайте addbounds или pushcondition и потом просто if getfirst groupsch {...}
кстати, перед первым позиционированием по этой таблице по условию - стоит поступить аналогично, если нужно ограничение из логической таблицы сохранить