23.01.2005, 14:07 | #1 |
Участник
|
Мне надо из таблицы вызвать форму и присвоить значение полю таблице = значению поля из формы.
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 |
Участник
|
так уж прям и ничего совсем не работает?
форма-то со списком наверное вызывается... Если поле 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!! 3. Если надо вызвать специальную форму, отличную от лукапной по умолчанию. Тогда вроде так: Код: IF FORM.RUNMODAL(FORM::"My LookupForm Nane", WT_RECORD) = ACTION::LookupOK THEN VALIDATE(WT_CODE, WT_RECORD.CurrCode); И MODIFY там лишнее слово, имхо. |
|
25.01.2005, 11:06 | #3 |
Участник
|
Способ 1 в моем случае не получится так как фильтр формируется динамически путем некоторых вычислений.
|
|
25.01.2005, 11:07 | #4 |
Участник
|
Да кстати а по поводу ошибки - правда когда таблицу из дизайнера открываешь этот код не работает а когда в форме то все ОК - неприятный глюк
|
|
25.01.2005, 12:33 | #5 |
Moderator
|
Ага, есть такая ошибочка.
Так что придется под таблицу формочку написать. |
|
25.01.2005, 15:21 | #6 |
Участник
|
Цитата:
Сообщение от Greggy
IF WT_FORM.RUNMODAL = ACTION::LookupOK THEN
BEGIN WT_CODE := WT_FORM.GetCurrCode; MODIFY; END; И ничего не получается - в чем моя ошибке? WT_FORM.GETRECORD(WT_RECORD); WT_CODE := WT_RECORD.WT_CODE; Но естественно этот код не подойдет, если источником для поля в форме является переменная. |
|