Вернуться   Андрей Панько. Заметки про Dynamics NAV > Dynamics NAV (Navision)
Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

Dynamics NAV (Navision) Заметки про Dynamics NAV (ранее Navision) и аддон LS Retail

Ответ
 
Опции темы Поиск в этой теме
  #1  
Старый 05.02.2008, 12:19
apanko apanko вне форума
Администратор
 
Регистрация: 15.08.2006
Сообщения: 1,629
Как отображать только часть записей при работе с формой [Programming].

Поступил вопрос:
Цитата:

Есть форма, она связана с таблицей через: Form - Properties -> SourceTable = МояТаблица.

При открытии формы, я хочу отфильтровать таблицу. Для этого я создал переменную rMyTable типа record.МояТаблица. Что дальше?

Ответ на поставленный вопрос
Переменную заводить никакую не нужно. Дело в том, что для работы с таблицей из C/AL кода формы уже есть специальная переменная - REC. Ее поля и доступные функции можно увидеть в C/AL Symbol Menu.
При написании кода эту переменную можно не указывать. Т.е. для решения поставленной задачи в триггере onOpenForm достаточно написать:
SETRANGE("No.",'1000','2000');


Дополнительная информация:
Если фильтры при открытии формы должны быть постоянными, то можно вместо кода использовать свойство формы SourceTableView. Плюс от использования этого свойства в том, что фильтр установленный таким способом пользователь отменить не может(CTRL+SHIFT+F7).

Если вызов формы происходит с помощью функции FORM.RUN или FORM.RUNMODAL, то можно поступить следующим образом:
Код:
rItem.SETRANGE("No.",'3500','3520'); FORM.RUNMODAL(50009,rItem);

Если работа с формой осуществляется с помощью переменной типа form.MyForm, то предварительную фильтрацию и запуск формы выполняют так:
Код:
rItem.SETRANGE("No.",'3500','3520'); fMyForm.SETTABLEVIEW(rItem); fMyForm.RUNMODAL
Если нужно накладывать фильтры из кода и при этом запретить их изменение пользователем, то следует использовать функцию FILTERGROUP.

Модификация примера 1.
Код:
onOpenForm FILTERGROUP(2); SETRANGE("No.",'1000','2000'); FILTERGROUP(0);
Модификация примера 2.
Код:
rItem.FILTERGROUP(2); rItem.SETRANGE("No.",'3500','3520'); FORM.RUNMODAL(50009,rItem); rItem.FILTERGROUP(0);
Модификация примера 3.
Код:
rItem.FILTERGROUP(2); rItem.SETRANGE("No.",'3500','3520'); fMyForm.SETTABLEVIEW(rItem); fMyForm.RUNMODAL

PS. Про формы на основе временных таблиц можно почитать тут: http://apanko.ru/showthread.php?t=104
Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 07:30.

Контакты: e-mail, телефон: +7(926)1805967 - Архив - Вверх

Microsoft Most Valuable Professional
vBulletin v3.5.4, Copyright ©2000-2018, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co
Права на все материалы, опубликованные на блогофоруме принадлежат Андрею Панько, если в самом материале не указано иное.
Рейтинг@Mail.ru Rambler's Top100