как вызвать cmInsertRecord в 8.1
Добавлено: 09 ноя 2007, 11:32
Всем доброго времени суток.
Помогите люди добрые кто чем может.
Ситуация следующая.
Галя версии 8.1.
Сделан browse по определенной таблице например table1.
Нажимаем F7 - создаем новую запись.
1. Генериться событие cmInsert - на него прикладного обработчика не делал - система сама создает новую запись с пометкой isNew.
2. Генериться событие cmSetDefault - там выставляю значения полей по умолчаниию. Тут же делаю PutCommand(cmEdit). В cmEdit запускаю window к котором в верхней части скрин для редактирования данных таблицы table1 а во второй броузе со спецификацие документа - table2.
цитата из доки по описанию события cmDefault: после модификации пользователем значений полей при попытке любым путем уйти с записи возникнет событие cmInsertRecord, в котором необходимо запрограммировать оператор добавления записи SQL
Я в cmSetDefault по table1 уже все значения какие надо выставил. Юзеру после нажатия кнопки F7 надо сразу начинать заполнять спецификацию. А так как он руками полей table1 не правил, то значит и cmInsertRecord не вызывался и потому галя не дает перейти на спецификацию и ругается "Переход не возможен, текущий документ не заполнен".
А теперь вопрос. Как же это вылечить? Что же лишать пользователя части автоматизации и заставлять какие то поля заполнять руками?
Вот для наглядности часть кода
Помогите люди добрые кто чем может.
Ситуация следующая.
Галя версии 8.1.
Сделан browse по определенной таблице например table1.
Нажимаем F7 - создаем новую запись.
1. Генериться событие cmInsert - на него прикладного обработчика не делал - система сама создает новую запись с пометкой isNew.
2. Генериться событие cmSetDefault - там выставляю значения полей по умолчаниию. Тут же делаю PutCommand(cmEdit). В cmEdit запускаю window к котором в верхней части скрин для редактирования данных таблицы table1 а во второй броузе со спецификацие документа - table2.
цитата из доки по описанию события cmDefault: после модификации пользователем значений полей при попытке любым путем уйти с записи возникнет событие cmInsertRecord, в котором необходимо запрограммировать оператор добавления записи SQL
Я в cmSetDefault по table1 уже все значения какие надо выставил. Юзеру после нажатия кнопки F7 надо сразу начинать заполнять спецификацию. А так как он руками полей table1 не правил, то значит и cmInsertRecord не вызывался и потому галя не дает перейти на спецификацию и ругается "Переход не возможен, текущий документ не заполнен".
А теперь вопрос. Как же это вылечить? Что же лишать пользователя части автоматизации и заставлять какие то поля заполнять руками?
Вот для наглядности часть кода
Код: Выделить всё
..................................
browse brPricaz (,,sci1478EnEsc);
Table PrCalcZar;
fields
PrCalcZar.Nomer 'Приказ №' : [10], protect;
end; // browse brPricaz
window winEditPricaz 'Редактирование приказа' EscClose;
panel pPricaz;
screen scrPricaz (,,);
Show at (,,,6);
table PrCalcZar;
fields
PrCalcZar.Descr ('дескриптор'): Protect;
PrCalcZar.Nomer ('номер приказа'): noProtect;
<<
`Дескриптор` .@@@@@ `Номер` .@@@@@@@
>>
end; // scrPricaz
end; // pPricaz
panel pPrCalcSpLS;
browse brPrCalcSpLS (,,sci1478EnEsc);
Show at (,7,,18);
table PrCalcSpLS;
PrCalcSpLS.TabN #3'Таб.н.' : [5], protect;
PrCalcSpLS.Fio #3'ФИО' : [15], protect;
end; // scrPrCalcSpLS
end; // pPrCalcSpLS
end;
TableEvent Table PrCalcZar;
cmSetDefault:
{
SetDefaultValuePricaz;
PutCommand(cmEdit);
}
cmInsertRecord:
{
insert current PrCalcZar;
}
cmUpdateRecord:
{
update current PrCalcZar;
}
cmDeleteRecord:
{
delete all from PrCalcSpLS where ((PrCalcZar.Nrec == PrCalcSpLS.cPrCalcZar));
delete current PrCalcZar;
}
cmEdit:
{
RunWindow(winEditPricaz);
}
end;
.................................