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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.02.2006, 11:41   #1  
korvin is offline
korvin
Участник
Аватар для korvin
 
29 / 10 (1) +
Регистрация: 16.01.2006
Адрес: Липецк
! Установка Grid на нужную строку при открытии формы
X++:
void run()
{
    FormDataSource _Browse_Grid_ds = (  ).dataSource();
    Common record;

    // так работает
    if( _Browse_Grid_ds.first() ){
        do {
            record = _Browse_Grid_ds.cursor();
            if( record.(eField_Id_Id_) == 10 ) break;
        } while( _Browse_Grid_ds.next() );
    }
    // а так нет
    _finded = _Browse_Grid_ds.findValue( eField_Id_Id_, QueryValue(10)  );
}
А теперь внимание господа гуру Аксапты - вопрос: почему?
Старый 17.02.2006, 11:48   #2  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
встречный вопрос, korvin, Вы знаете, что делает предложенный метод?
Цитата:
Сообщение от korvin
void run()
{

_finded = _Browse_Grid_ds.findValue( eField_Id_Id_, QueryValue(10) );
}
Старый 17.02.2006, 12:11   #3  
korvin is offline
korvin
Участник
Аватар для korvin
 
29 / 10 (1) +
Регистрация: 16.01.2006
Адрес: Липецк
Судя по иронии mit`a метод не смещает курсор, а только устанавливает наличие значения в выборке. Но я бы не стал писать сюда просто так, потому что findRecord то же не устанавливает. К сожалению мои скромные познания ограничиваются только этими методами по поиску и установке курсора, поэтому прошу меня просто ткнуть носом а не упражняться в остроумии.
Старый 17.02.2006, 12:17   #4  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
дело не в иронии, и тем более форум не для острот.
Вы вызываете findValue(), значит ожидаете получить какой то результат от метода?
Старый 17.02.2006, 12:26   #5  
korvin is offline
korvin
Участник
Аватар для korvin
 
29 / 10 (1) +
Регистрация: 16.01.2006
Адрес: Липецк
Я не вызываю findValue а использую цикл, потому что findValue не устанавливает Grid на нужную запись, findValue всё время возвращает false и Grid остаётся на первой записи, хотя запись с таким значением есть в выборке.
Старый 17.02.2006, 12:55   #6  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Данные в источнике получены через query c группировкой?
Если да, то findValue или findRecord не работают.
Старый 17.02.2006, 13:03   #7  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Попробуй другой механизм:
Код:
 element.args().lookupField(eField_Id_Id_); 
element.args().lookupValue(QueryValue(10)); 
Browse_Grid_ds.research();
За это сообщение автора поблагодарили: kashperuk (5).
Старый 17.02.2006, 13:06   #8  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
привожу метод, который написал для формы SalesTable.
вызов повесил на кнопку в форме.
отрабатывает прекрасно и по выборке и без выборки
Код:
void MyFindRec()
{
	SalesTable _sales;
	;
	_sales = SalesTable::find("MySalesId");
	SalesTable_ds.findRecord(_sales);
}
Старый 17.02.2006, 13:11   #9  
korvin is offline
korvin
Участник
Аватар для korvin
 
29 / 10 (1) +
Регистрация: 16.01.2006
Адрес: Липецк
Вопрос к dn
Что ты имееш в виду под словом группировка?
Есть только пара range по тому полю по которому вызываю findValue
Старый 17.02.2006, 13:15   #10  
korvin is offline
korvin
Участник
Аватар для korvin
 
29 / 10 (1) +
Регистрация: 16.01.2006
Адрес: Липецк
Вопрос к mit
Ваш метод SalesTable::find выполняет дополнительный запрос к таблице? Если да, то это не то что мне нужно.
Старый 17.02.2006, 13:20   #11  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
Цитата:
Сообщение от korvin
Ваш метод SalesTable::find выполняет дополнительный запрос к таблице? Если да, то это не то что мне нужно.
Наверное Вам лучше остановиться на переборе значений
Старый 17.02.2006, 13:20   #12  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
2 dn
Ну тогда уж
X++:
Browse_Grid_ds.ExecuteQuery();
При этом датасоурс должен быть отсортирован по этому полю.

А правильнее выставлять в Init() формы или перед super() в Run() - тогда QueryExecute() не нужен.

По поводу FindValue() и FindRecord() - они ищут в кэше на клиенте и если нужной записи в нем нет - то фетчает записи с сервера пока не получат удовлетворяющую условию или все записи.
__________________
Axapta v.3.0 sp5 kr2
Старый 17.02.2006, 13:28   #13  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Еще такой момент.

Если при вызове формы заполнены lookupField() и lookupValue(), то поиск по findValue(), findRecord() может не найти запись, если значение в lookupValue() больше искомого
__________________
Axapta v.3.0 sp5 kr2
Старый 17.02.2006, 13:46   #14  
korvin is offline
korvin
Участник
Аватар для korvin
 
29 / 10 (1) +
Регистрация: 16.01.2006
Адрес: Липецк
Вопрос к dn и AndyD
element.args().lookupField(eField_Id_Id_);
element.args().lookupValue(QueryValue(10));
А если у меня на форме несколько датасорсов с одной и той же таблицей, лукапить будет в каком?
Старый 17.02.2006, 13:48   #15  
korvin is offline
korvin
Участник
Аватар для korvin
 
29 / 10 (1) +
Регистрация: 16.01.2006
Адрес: Липецк
Спасибо за согласие mit`у, я всё больше склоняюсь к перебору в цикле, если никто не предложит лучшее решение.
Старый 17.02.2006, 13:48   #16  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
в главном (тот, который был создан первым)
Старый 17.02.2006, 13:56   #18  
korvin is offline
korvin
Участник
Аватар для korvin
 
29 / 10 (1) +
Регистрация: 16.01.2006
Адрес: Липецк
Ответ belugin'у
Спасибо за ссылку. Но мне кажется я показал выше что мне надо позиционироваться из кода а не пользователю из меню. К тому же если мне надо позиционировать несколько датасорсов с одинаковой таблицей на разные значения, то это не поможет. Вот так вот.
Старый 17.02.2006, 13:59   #19  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от korvin
Спасибо за согласие mit`у, я всё больше склоняюсь к перебору в цикле, если никто не предложит лучшее решение.
У вас много записей в выборке? Если да, то ваша форма будет открываться очень долго если нужная вам запись в конце выборки
__________________
Axapta v.3.0 sp5 kr2
Старый 17.02.2006, 14:02   #20  
korvin is offline
korvin
Участник
Аватар для korvin
 
29 / 10 (1) +
Регистрация: 16.01.2006
Адрес: Липецк
Цитата:
Сообщение от AndyD
У вас много записей в выборке? Если да, то ваша форма будет открываться очень долго если нужная вам запись в конце выборки
Согласен, но IMHO от этого лечения нет если нужно видеть всю выборку.
Теги
ax3.0, курсор, позиционирование, программно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Подставлять "ранее использованный запрос" при открытии формы Plushy DAX: Функционал 4 16.01.2006 16:23
Как заполнить StringEdit при открытии формы SSlavon DAX: Программирование 11 13.04.2005 17:02
Изменяемые столбцы в Grid'e Lookup-формы Shirmin Oleg DAX: Программирование 0 29.06.2004 19:08
Добавить строку в Grid не из таблицы Mechanizm DAX: Программирование 3 18.04.2004 11:52
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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