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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.08.2007, 18:13   #1  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
? Запрос на форме.
Такая проблема. Есть класс, там запрос, например по Номенклатурному справочнику.
X++:
If(qweryRun.changedNo(1))
{
inventTable = getRun(1);
}
вот выбрали мы например группу номенклатур и какое то свойство ном-ры.
И как запомнить эти два поля ?
Дальше заполняется временная таблица и формируется форма, на основе запросов.
И вот сама проблема...параметры запроса в виде отдельных полей нужно вывести на форму. Чтобы пользователь мог видеть с какими параметрами запустил форму.
в каком направлении плыть .. не подскажете?
Старый 15.08.2007, 18:17   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
У Query есть ряд параметров - фильтров.

Можно в цикле их перебрать все.

Только будьте аккуратны - их может быть больше, чем Вы предусмотрели

Поищите по "Query" и "фильтр"

С Уважением,
Георгий
Старый 15.08.2007, 18:41   #3  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от George Nordic Посмотреть сообщение

Только будьте аккуратны - их может быть больше, чем Вы предусмотрели
Это -то понятно.. но надеюсь, всё-таки не больше 5
Старый 15.08.2007, 18:46   #4  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Посмотрите tutorialRunBase - класс и форму. Там автоматом в определенную группу добавляются все поля, по которым стоит фильтр. Я бы так поступил.

Удачи!

Георгий
За это сообщение автора поблагодарили: fialka (1).
Старый 15.08.2007, 18:52   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
X++:
static void tutorial_ListQueryBuildRange(Args _args)
{
    Query   query = new Query();
    QueryBuildDataSource    qbdsInventTable = query.addDataSource(tableNum(InventTable));
    Counter qbrCount;
    QueryBuildRange qbrItem;
    ;
    qbdsInventTable.addRange(fieldNum(InventTable, ItemGroupId)).value("Something");
    qbdsInventTable.addRange(fieldNum(InventTable, ItemType)).value(queryValue(ItemType::Item));

    for (qbrCount = 1; qbrCount <= qbdsInventTable.rangeCount(); qbrCount++)
    {
        qbrItem = qbdsInventTable.range(qbrCount);
        info(strFmt("%1 (FieldId = %2) = %3", qbrItem.name(), qbrItem.field(), qbrItem.value()));
    }
}
А про RunBase хороший совет.
Также обрати внимание, что там кол-во полей там тоже ограничено. По-моему 7ью полями. Или 11. не помню точно, надо смотреть.
За это сообщение автора поблагодарили: fialka (1).
Старый 15.08.2007, 18:58   #6  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Спасибо... большое...
Пойду пилить ))
Старый 15.08.2007, 19:00   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Таки не угадал 6 полей одновременно только

MAXRANGES(6)

AxPath://AOT/Classes/RunBaseDialogMo...line=30&pos=30
Старый 22.08.2007, 18:28   #8  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от George Nordic Посмотреть сообщение
Посмотрите tutorialRunBase - класс и форму. Там автоматом в определенную группу добавляются все поля, по которым стоит фильтр. Я бы так поступил.

Удачи!

Георгий
Копошилась долго в классе.
И всё равно до меня не дошло..
С датой и клиентом понятно на форме и в классе.
А как вот "выцепить из запроса Номенклатуру?
и сохранить значение для передачи например на другую форму?
Старый 22.08.2007, 22:30   #9  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
решила проблему вот так... может кому понадобится..
X++:
// 22.08.2007, {}, , KiurOl
void addQueryControl()
{
    Query                   query           = purchForecast.queryRun().query();
    QueryBuildDataSource    qbdsInventTable = query.dataSourceTable(tablenum(InventTable));
    Counter qbrCount;
    QueryBuildRange qbrItem;
    FormBuildDesign             formBuilddesign = form.design();
    FormBuildGroupControl       formBuildGroupControl;
    formStringControl           c;
    DictTable       dictTable;
    DictField       dictField;
    ;
    dictTable = new DictTable(tablenum(InventTable));
    for (qbrCount = 1; qbrCount <= qbdsInventTable.rangeCount(); qbrCount++)
    {
        qbrItem = qbdsInventTable.range(qbrCount);
        dictField = new DictField(dictTable.id(), qbrItem.field());
        // create control
        // info(strFmt("%1 (FieldId = %2) = %3", qbrItem.name(), qbrItem.field(), qbrItem.value()));
        c = ParametersGroup.addControl(FormControlType::STRING,'RunTimeControl');
        c.label(dictField.label());
        c.extendedDataType(dictField.typeId());
        c.allowEdit(false);
        c.text(qbrItem.value());
        formBuildGroupControl = formBuildDesign.control( ParametersGroup.id() );
    }
}
То что указываю в запросе, создаю поле на форме и заполняю значением из запроса.
Спасибо за помощь .
Старый 23.08.2007, 10:31   #10  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
закрыта тема
решила так.

X++:
    c.label(strlen(dictField.label()) > 15 ? substr(dictField.label(), 1, 14) + '.' : dictField.label());
а кто подскажет?
Вот создаются программно поля на форме, на основе запроса.
А вот если задают в запросе длинное название поля, то само поле с значением вываливаются за край формы..
Вообщем, вопрос такой .. как тут можно программно размер названия поля, при автоматическом создании...?
Ведь получается берём системное название поля...Например, Номенклатурная группа, название поля видно, а вот значения его нет ((
А вот как его обрезать, сделать например , не больше 15 символов?

Последний раз редактировалось fialka; 23.08.2007 в 10:55.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
executeQuery на Форме Arahnid DAX: Программирование 12 03.11.2007 23:25
Плохой запрос в форме заказов DPO DAX: Программирование 4 25.09.2007 08:44
Почему на форме "Пользовательские настройки", когда я перехожу в нее из формы, отсутствует закладка "Запрос"? Hans DAX: Администрирование 0 05.07.2007 13:52
Почему join запрос разбивается на подзапросы!? 3oppo DAX: Программирование 59 28.06.2007 11:52
Запрос на форме как Select или готовая выборка в форму? rohlenko DAX: Программирование 9 23.06.2005 13:38

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

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

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