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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.04.2003, 12:57   #1  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
очистка полей. простой вопрос
в форме есть два датасорса. Есть по одной группе полей из каждого датасорса.
как по некоему событию очистить все(!) поля(например id, name) из одной группы полей(в смысле очистить соотв. текстбоксы в форме)..

пытаюсь сделать так:
Цитата:
fDS.query.dataSourceNo(1).clearRanges();
fDS.executeQuery();
тогда в соотв. группе полей значения первой записи в таблице
затем пытаюсь сделать так:

Цитата:
fDS.query.dataSourceNo(1).clearRanges();
criteriaRecId = query.dataSourceNo(1).addRange(fieldName2Id(fDS.table(),'RecId'));
criteriaRecId.value(strFmt('%1',0));
fDS.executeQuery();
тогда для группы полей одного датасорса - значения остаются прежними..
если это же самое сделать для другого датасорса - id сбрасывается, name остается старым(повторяю, имеются в виду textbox-ы).
any ideas?

P.S.: сорри, что не волшебник, а только учусь
Старый 04.04.2003, 00:39   #2  
Vladislav Yushakov is offline
Vladislav Yushakov
Участник
 
47 / 10 (1) +
Регистрация: 10.01.2003
Вообще-то clearRanges относятся к Ranges - условиям диапазонов для работы с фильтрами и никакого отношения к группам полей не имеет.
Задача очистки всех полей в группе несколько надуманная - я думаю логичней зоздать метод типа init...(...) на таблице и инициализировать и стирать то и так как нужно и потом вызывать метод для текущей записи на соурсе
Старый 04.04.2003, 05:06   #3  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
Цитата:
Изначально опубликовано Vladislav Yushakov
Вообще-то clearRanges относятся к Ranges - условиям диапазонов для работы с фильтрами и никакого отношения к группам полей не имеет.
Задача очистки всех полей в группе несколько надуманная - я думаю логичней зоздать метод типа init...(...) на таблице и инициализировать и стирать то и так как нужно и потом вызывать метод для текущей записи на соурсе
понял, подумаю. а про clearRanges Вы зря так.. Query имеет отношение к тому что отображается в группах полей. причем самое прямое.

Цитата:
"X++ Advanced"
The data contents of a table can be influenced using a query linked to the relevant form. Forms that are linked to one or more tables also contain queries. While they may not be as visible as in a report when you are looking at the tree structure of a form, but that it is actually the same.
If you expand the three structure of a form in the AOT, you will see that you don’t see the query but you can see the data source.
см: FormTreeDatasource.selectionChanged и пример использования этого класса Forms/tutorial_form_treeDatasource. я пытаюсь сделать нечто подобное FormTreeDatasource, только дерево строится по двум датасорсам: категория и объект, вернее уже сделал - проблема лишь за "сбросом" значений полей при смене фокуса с одного типа элементов дерева на другой. ничего надуманного.
Старый 04.04.2003, 05:27   #4  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
Цитата:
Изначально опубликовано Vladislav Yushakov
я думаю логичней зоздать метод типа init...(...) на таблице и инициализировать и стирать то и так как нужно и потом вызывать метод для текущей записи на соурсе
не прокатит... класс, который работает с датасорсами(назовем его TreeBuilder), не знает вообще о том какие поля в таблицах есть... его интересуют лишь id, parentId и name, в таблицах обьекта и категории. по ним он строит дерево.. тем не менее на форме, помимо дерева могут отображаться любые поля этих таблиц. При событии selectionChanged значения, которых надо менять. Значения меняются. все ок. за исключением ситуации описанной ранее.
Привязку к конкретной таблице осуществлять не хочется - смысла тогда в этом TreeBuilder не будет. это ж у каждой таблицы, по которой строится дерево, нужно определять какой-то дополнительный метод, а это плохо...
Если я описал все слишком сумбурно - посмотрите tutorial_form_treeDatasource.
Старый 04.04.2003, 10:28   #5  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
проблему решил, но криво. сделал след. образом:
Цитата:
query = fDS.query();
criteriaRecId = query.dataSourceNo(1).findRange(fieldName2Id(fDS.table(),'RecId'));
if (!criteriaRecId)
criteriaRecId = query.dataSourceNo(1).addRange(fieldName2Id(fDS.table(),'RecId'));
criteriaRecId.value(strFmt('%1',0));
fDS.executeQuery();
fDS.cursor().clear();
fDS.refresh();
плюс к этому: на таблицах, которые обрабатываются,
построил индекс по RecId, иначе на форме остаются старые значения.

конечно, лучше бы было посмотреть, как реализован executeQuery и не делать
ничего-не-возвращающий select, а взять какой нибудь iterator полей в форме, и обнулить их... но исходники FormDataSource похоже спрятаны, и как это делать я не знаю - поэтому и постил в форум.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Банковский перевод. Простой вопрос LEM DAX: Функционал 0 27.03.2008 14:41
Простой вопрос Rect DAX: Программирование 3 16.06.2006 18:38
Очень-очень простой вопрос AKIS-Falcon DAX: Программирование 23 06.07.2005 19:29
Еще 1 простой вопрос по пакетной обработке Smith DAX: Функционал 1 26.10.2004 17:55
Простой вопрос Novice DAX: Программирование 2 17.06.2003 14:54

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

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

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