Задача немного изменилась.
Теперь из таблицы Arxshtrf надо выбрать записи по одному сотруднику, показать их в порядке возрастания datan (ключа по этому полю нет).
Показать все это на экране и дать возможность редактировать.
Не смогла добиться сортировки по datan, решила сделать вспомогательную табличку, ее структура:
Table Struct tArxSotr
( dataR : date,
nrec_arx : comp
)
with index
( ind1 = dataR
);
Сделала ее в запросе главной, отображается все красиво, только не редактируется(((
собственно текст:
Код: Выделить всё
interface CorrectReserveSotr 'Просмотр/корректировка резерва по сотруднику' cyan;
var ...
create view
as select arx.*, tArxSotr.*, arxshtrf.*
from tArxSotr, arxshtrf, arxshtrf arx
where ((tArxSotr.nrec_arx/==arxshtrf.nrec and
ltabn==arx.tabn
))
;
browse b_resView (,,sci14esc);
show at (,,,);
table tArxSotr;
fields
tArxSotr.DataR 'Дата'#13'резерва': protect, centered;
arxshtrf.namepl2 'Категория': [15], skip, centered;
arxshtrf.Procpsb 'Норма'#13'дн.': [5.0,#IntSumformat], protect, centered;
arxshtrf.koldn #3'Заработ.'#13#3'дн.': [9.2,#Sumformat], protect;
arxshtrf.Summa0 #3'Использ.'#13#3'дн.': [7.0,#IntSumformat], protect;
arxshtrf.sumnach #3'СДЗ': [9.2,#Sumformat], protect;
arxshtrf.ostatpr #3'Всего'#13#3'отпускых': [12.2,#BigSumformat], protect;
arxshtrf.dat1 'Дата'#13'приема': protect, centered;
arxshtrf.dat2 'Дата ув.': protect, centered;
end;
tableevent table tArxSotr
cmUpdateRecord:
{ kdpo:=arxshtrf.koldn-arxshtrf.summa0; _sdz:=arxshtrf.sumnach;
arxshtrf.summa1:=kdpo; arxshtrf.summa2:=kdpo*_sdz;
if message('Вы уверены?',YesNo) = cmYes then update current arxshtrf;
}
cmSetDefault:
{ message('cmSetDefault')
}
end;
HandleEvent
cmInit:
{ var famio: string;
Disablecommand(cmInsert);
Disablecommand(cmDelete);
delete all from tArxSotr;
runinterface(Pick_OnePerson_AnyDate,nrec_pers,ltabn);
if getfirst persons where ((nrec_pers==persons.nrec)) = tsOk then famio:=persons.fio;
SetTitle('Ввод/корректировка резерва по сотруднику '+famio);
_loop arx { insert tArxSotr set dataR:=arx.datan, nrec_arx:=arx.nrec; }
}
cmEdit:
{ _prizEdit:=1;
enablecommand(cmInsert);
enablecommand(cmDelete);
cfsSetProp(cfsGetCurrentContainerSelf,'Palette',0) //Изменение цвета окна: был cyan(1), стал blue(0), 2-серый
ClearFieldOption(#arxshtrf.Procpsb, ofProtected);
ClearFieldOption(#arxshtrf.koldn, ofProtected);
ClearFieldOption(#arxshtrf.Summa0, ofProtected);
ClearFieldOption(#arxshtrf.sumnach, ofProtected);
ClearFieldOption(#arxshtrf.ostatpr, ofProtected);
rescanpanel(b_resView);
}
cmCancel:
{ if _prizEdit=1
{ cfsSetProp(cfsGetCurrentContainerSelf,'Palette',1) //Изменение цвета окна: был cyan(1), стал blue(0), 2-серый
SetFieldOption(#arxshtrf.Procpsb, ofProtected);
SetFieldOption(#arxshtrf.koldn, ofProtected);
SetFieldOption(#arxshtrf.Summa0, ofProtected);
SetFieldOption(#arxshtrf.sumnach, ofProtected);
SetFieldOption(#arxshtrf.ostatpr, ofProtected);
Disablecommand(cmInsert);
Disablecommand(cmDelete); rescanpanel(b_resView);
_prizEdit:=0; abort();
}
}
cmClose:
{ closeinterface(cmClose);
}
end;
end.
Редактировать мне нужно значения из Arxshtrf.
Менять значения на экране получается, но ничего при этом не сохраняется.
Какое событие ловит такие изменения?