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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.04.2004, 18:29   #1  
Alex_V is offline
Alex_V
Участник
 
159 / 10 (1) +
Регистрация: 19.02.2003
триггер OnLookup поля формы
добавил в таблицу Item поле "Manufacturer Name" - flowfield - показывает название производителя (Lookup(Manufacturer.Name WHERE (Code=FIELD(Manufacturer Code))))

клиент захотел чтоб на форме товаров (Item Card) показывалось поле именна Название Производителя а не его код и выбор соответстенно осуществлять при проваливании в список производителей из этого поля.

1 способ - реаллизовал через триггер OnLookup поля "Manufacturer Name" формы товара: код следующий

IF Manufacturer.GET("Manufacturer Code") THEN
Manufacturers.SETRECORD(Manufacturer);
Manufacturers.LOOKUPMODE(TRUE);
IF Manufacturers.RUNMODAL = ACTION::LookupOK THEN BEGIN
Manufacturers.GETRECORD(Manufacturer);
VALIDATE("Manufacturer Code", Manufacturer.Code);
//Text := Manufacturer.Name;
EXIT(TRUE);
END;

EXIT(FALSE);
//триггре OnValidate поля Manufacturer Code таблицы Item
//имеет строку CALCFIELDS("Manufacturer Name")

в этом способе при последующем переходе на другое поле выдается ошибка "формула вычисления для вычисляемого поля Название Производителя в таблице товар должна начинаться с Sum(..."


2 способ - реаллизовал через триггер OnAssistEdit поля "Manufacturer Name" формы товара: код следующий

IF Manufacturer.GET("Manufacturer Code") THEN
Manufacturers.SETRECORD(Manufacturer);
Manufacturers.LOOKUPMODE(TRUE);
IF Manufacturers.RUNMODAL = ACTION::LookupOK THEN BEGIN
Manufacturers.GETRECORD(Manufacturer);
VALIDATE("Manufacturer Code", Manufacturer.Code);
END;

3 способ написать OnLookup триггер поля Manufacturer Name" таблицы Item

во 2-м и 3- м случаях не работает в том случае если руками стираем знаение из поля Manufacturer Name - выдается тажже самая ошибка что и первом случае при переходе на следующее поле


в чем может быть причина появления ошибки?
Старый 20.04.2004, 10:33   #2  
skripka is offline
skripka
Участник
 
19 / 10 (1) +
Регистрация: 28.05.2003
А нельзя два поля завести в таблице Item?
1. "Manufacturer Code" - Normal, в св-ве этого поля "TableRelation" указать таблицу Manufacturer;
2. "Manufacturer Name" - flowfield, Lookup(Manufacturer.Name WHERE (Code=FIELD(Manufacturer Code)))

Выбор осуществляется по первому полю.
Старый 20.04.2004, 17:09   #3  
Alex_V is offline
Alex_V
Участник
 
159 / 10 (1) +
Регистрация: 19.02.2003
два этих поля уже есть. и требование клиента было такое чтоб выбор производителя осуществлялся из поля Manufacturer Name
Старый 22.04.2004, 10:21   #4  
Pasha is offline
Pasha
Участник
 
14 / 10 (1) +
Регистрация: 03.12.2003
Была похожая ситуация: нужно искать поставщика не по коду, а по имени
Есть поля в некой таблице "Vendor No." - код, "Vendor Name" - имя
делаем следующее:
на "Vendor Name" в таблице прописываем OnLookup
/////////////////
vendList.LOOKUPMODE:=TRUE;
IF vendList.RUNMODAL=ACTION::LookupOK THEN
BEGIN
vendList.GETRECORD(VENDOR);
"Vendor Name":=VENDOR.Name;
"Vendor No.":=VENDOR."No.";
VALIDATE("Vendor No.");
END;
//////////////////
Далее из какой-либо формы, отображающей нашу таблицу, выставляем значение "Vendor Name",а "Vendor No." выставляется автоматически. Причем если попытаться выполнить Lookup не из формы, а напрямую из таблицы, он не сработает.
Если нужно осуществлять контроль вводимых значений, можно попробовать прописать OnValidate.
Старый 14.07.2004, 15:12   #5  
Svalik is offline
Svalik
Участник
 
20 / 10 (1) +
Регистрация: 10.09.2002
Адрес: Москва
Talking
Я бы сделал так -
в таблице поле только с кодом, на форму вывести его же, но на
OnFormat написать типа
IF Manufacturer.GET("Manufacturer Code") THEN
Text := Manufacturer.Name;

И все. И лукап работает, и клиент видит что хочет.
Как вам? На мой взгляд изящно
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Именение значений поля в очень большом кол-ве записей TeHb NAV: Программирование 3 07.12.2006 00:36
Как автоматически вставить значения в поля arseniy NAV: Программирование 5 07.04.2004 14:30
триггер OnLookup полей таблиц Alex_V NAV: Программирование 0 14.01.2004 15:23
Проверка при закрытии формы Nataly NAV: Программирование 5 21.10.2003 13:01
редактирование поля option Alex_V NAV: Программирование 2 19.09.2003 13:33

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

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

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