Interface Main_Int 'Формирование накладных по гонорарам' EscClose, Cyan;
view
as select * from persons(readonly), lschet (readonly), catalogs (readonly), gonorar
where ((
persons.nrec /== lschet.tperson
and persons.nrec /== gonorar.cpers
and lschet.cappoint /== catalogs.nrec
)) and catalogs.nrec <> cstyler
order o1 by catalogs.name, persons.tabnmb;
panel p1 table persons;
browse b1;
persons.tabnmb 'Таб.№' : [6], protect;
persons.fio 'Сотрудник' : [20], protect;
catalogs.name 'Должность' : [10], protect;
end;
HandleEvent
cmInit: {
setorder(tiO1);
if getfirst persons <> tsOK then {
message('Отсутствуют данные по гонорарам');
CloseInterface(cmCancel);
}
}
cmDefault:{
...
}
cmCancel: CloseInterface(cmCancel);
end;
end;
end.
cstyler - некая константа, описанная в файле проекта, Gonorar - добавленная в БД табличка.
При запуске аналогичного запроса из Support'а получаю нормальную табличку, а при запуске интерфейса сообщение об отсутствии данных...
интересно
catalogs.nrec чему тут равен?
а не пробовали
styler объявить var c типом comp и присвоить ему значение?
в select то у вас уж точно не константа стоит.
хотя сам запрос будет крайне тормознутый.
1.попробуйте убрать порядок.
2.в любом случае getfirst по persons здесь смысла не имеет наверное
попробуйте просто getfirst
3.снимите ваше условие
4.попробуйте перестроить select
вообще надежней и быстрее снять условие
заполнить времянку(с нужной сортировкой) и работать уже с нею.
Если убираю, все работает. Но без order конкретно хреново и неудобно. Заполнила времянку и строю browse по ней. Не слишком мне это нравится, но работает...
У меня есть еще одна проблема: в вызываемом интерфейсе идет такой кусок:
HandleEvent
...
cmCancel: {
if Message('Отменить сделанные изменения?',YesNo) = cmYes then {
....
}
}
...
Опция EscClose в заголовке интерфейса не стоит. Но вот никак не придумаю, что надо написать, чтобы остаться в интерфейсе, если на запрос ответят "Нет". Может, посоветуете что-нибудь?