Почему не работает?

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

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

Ответить
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Почему не работает?

Сообщение Sheinina »

Может быть, кто-нибудь подскажет, что я пишу неправильно:

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

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'а получаю нормальную табличку, а при запуске интерфейса сообщение об отсутствии данных... :oops:
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

интересно
catalogs.nrec чему тут равен?
а не пробовали
styler объявить var c типом comp и присвоить ему значение?
в select то у вас уж точно не константа стоит.
хотя сам запрос будет крайне тормознутый.
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение Sheinina »

Ну, поставила я в запрос вместо константы comp(....) - результат тот же. Нет, причина не в этом :cry:
Корифеи, нужна ваша помощь :!:
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

1.попробуйте убрать порядок.
2.в любом случае getfirst по persons здесь смысла не имеет наверное
попробуйте просто getfirst
3.снимите ваше условие
4.попробуйте перестроить select
вообще надежней и быстрее снять условие
заполнить времянку(с нужной сортировкой) и работать уже с нею.
DarkAngel27
Местный житель
Сообщения: 228
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Сообщение DarkAngel27 »

Попробуй убрать order... Очень часто это является причиной получения не полной информации в интерфейсе.
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение Sheinina »

Если убираю, все работает. Но без order конкретно хреново и неудобно. Заполнила времянку и строю browse по ней. Не слишком мне это нравится, но работает...
У меня есть еще одна проблема: в вызываемом интерфейсе идет такой кусок:

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

HandleEvent 
...
cmCancel: {
   if Message('Отменить сделанные изменения?',YesNo) = cmYes then {
      ....
   }
}
...
Опция EscClose в заголовке интерфейса не стоит. Но вот никак не придумаю, что надо написать, чтобы остаться в интерфейсе, если на запрос ответят "Нет". Может, посоветуете что-нибудь?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

{
abort

}
можно еще в cmdone попробовать запихать.
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение Sheinina »

Спасибо. Я как-то самого этого слова опасаюсь :wink:
Ответить