AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.01.2005, 14:07   #1  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
Мне надо из таблицы вызвать форму и присвоить значение полю таблице = значению поля из формы.


WT_RECORD.SETFILTER(WT_RECORD.Code,s_res);
CLEAR(WT_FORM);
WT_FORM.LOOKUPMODE := TRUE;
WT_FORM.SETTABLEVIEW(WT_RECORD);
WT_FORM.SETRECORD(WT_RECORD);
IF WT_FORM.RUNMODAL = ACTION::LookupOK THEN
BEGIN
WT_CODE := WT_FORM.GetCurrCode;
MODIFY;
END;

И ничего не получается - в чем моя ошибке?
Старый 25.01.2005, 10:41   #2  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
так уж прям и ничего совсем не работает?
форма-то со списком наверное вызывается...
Если поле WT_CODE на форму бросить - тоже не работает? Глючок есть один с этим делом - переписаным лукапом - не отрабатывает при просмотре таблицы из дизайнера.
Однако... Что ж так сложно-то всё?
Есть несколько способов заставить работать эту лукапную кнопку:
1. TableRelation у поля определить. На мой взгляд, это покрывает процентов 80 потребностей. Приведенный в вопросе пример имхо тоже.
2. Переписать таки триггер. Причины, побуждающие к этому, могут быть разными, однако это всегда должно быть обусловлено требованиями, превышающими возможности п. 1. Ну, например - сложная комбинация фильтров или потребность перед их наложением слазить в настроечные таблицы и т.п. Если решились на это - не забудьте также и триггер OnValidate правильно оборудовать соответствующими проверками (реализуя тем самым функциональность свойства ValidateTableRelation, доступное в способе 1)
Пример кода, в тех же переменных:
Код:
WT_RECORD.FILTERGROUP(2); //весьма полезная функция, не позволяет пользователю сбросить накладываемые супер фильтры)
WT_RECORD.SETFILTER(WT_RECORD.Code,s_res);
WT_RECORD.FILTERGROUP(0); 
IF FORM.RUNMODAL(0, WT_RECORD) = ACTION::LookupOK THEN
    VALIDATE(WT_CODE,  WT_RECORD.CurrCode); //VALIDATE!!
В данном случае вызывается форма, прописанная в свойстве LookupTable справочной таблицы (WT_RECORD)
3. Если надо вызвать специальную форму, отличную от лукапной по умолчанию. Тогда вроде так:
Код:
IF FORM.RUNMODAL(FORM::"My LookupForm Nane", WT_RECORD) = ACTION::LookupOK THEN
    VALIDATE(WT_CODE,  WT_RECORD.CurrCode);
PS. Потребности в SETRECORD, GETRECORD, SETTABLEVIEW и т.п. в данном случае я не вижу.
И MODIFY там лишнее слово, имхо.
Старый 25.01.2005, 11:06   #3  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
Способ 1 в моем случае не получится так как фильтр формируется динамически путем некоторых вычислений.
Старый 25.01.2005, 11:07   #4  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
Да кстати а по поводу ошибки - правда когда таблицу из дизайнера открываешь этот код не работает а когда в форме то все ОК - неприятный глюк
Старый 25.01.2005, 12:33   #5  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
Ага, есть такая ошибочка.
Так что придется под таблицу формочку написать.
Старый 25.01.2005, 15:21   #6  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Greggy
IF WT_FORM.RUNMODAL = ACTION::LookupOK THEN
BEGIN
    WT_CODE := WT_FORM.GetCurrCode;
    MODIFY;
END;

И ничего не получается - в чем моя ошибке?
Попробуйте вместо "WT_CODE := WT_FORM.GetCurrCode" следующий код:

WT_FORM.GETRECORD(WT_RECORD);
WT_CODE := WT_RECORD.WT_CODE;

Но естественно этот код не подойдет, если источником для поля в форме является переменная.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:22.