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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.10.2005, 10:53   #1  
Vitaly_K is offline
Vitaly_K
Участник
 
34 / 10 (1) +
Регистрация: 16.09.2004
Адрес: Москва
? ADOrs.EOF
Привет всем!!!


while (!ADOrs.EOF())
{
i++;
info(strfmt("%1",i));
ADOrs.moveNext();
}

Если так делать, то считывание идет с первой записи и до конца.

Вопрос, а есть ли механизм, который считывает начиная с последней записи?
Старый 11.10.2005, 11:15   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,325 / 3548 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Конечно есть.
PHP код:
ADOrs.MoveLast();
while (!
ADOrs.BOF())
{
i++;
info(strfmt("%1",i));
ADOrs.movePrevious();

Вот только для этого эти методы (прям так, как они есть) нужно дописать в класс CCADORecordset
Например:
PHP код:
public boolean movePrevious()
{
       return 
recordSet.movePrevious();

__________________
Возможно сделать все. Вопрос времени
Старый 11.10.2005, 11:18   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Можно добавить методы MoveFirst() MoveLast(), MovePrevious().
PHP код:
void MoveFirst()
{
    
recordSet.MoveFirst();
}

void MoveLast()
{
    
recordSet.MoveLast();
}

void MovePrevious()
{
    
recordSet.MovePrevious();

Для того, чтобы пользоваться MovePrevious() CursorType не должен быть adOpenForwardOnly.

Кроме того, можно открыть запрос с ORDER BY DESC и пройти по нему ч/з moveNext(), тогда можно использовать быстрый курсор adOpenForwardOnly
__________________
Axapta v.3.0 sp5 kr2
Старый 11.10.2005, 11:39   #4  
Vitaly_K is offline
Vitaly_K
Участник
 
34 / 10 (1) +
Регистрация: 16.09.2004
Адрес: Москва
:)
Спасибки так и сделаю
Старый 11.10.2005, 12:10   #5  
Vitaly_K is offline
Vitaly_K
Участник
 
34 / 10 (1) +
Регистрация: 16.09.2004
Адрес: Москва
А если на методе MoveLast вот так ругается, значит не получится?

Метод 'MoveLast' в COM-объекте класса '_Recordset' возвратил код ошибки 0x80040E24 (<unknown>), который означает: Набор строк не поддерживает обратную передачу.
Старый 11.10.2005, 12:26   #6  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,325 / 3548 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
А вот если он так ругается - значит нужно получать объект CCADORecordset не через CCADOCommand.execute(), а открывать его через метод CCADORecordset .open(), в котором и задаются все параметры - в т.ч. и можно ли по набору данных бежать в обратном порядке.
Константы, задаваемые в аргументах метода open() описаны в макросе #CCADO
__________________
Возможно сделать все. Вопрос времени
Старый 11.10.2005, 12:30   #7  
Vitaly_K is offline
Vitaly_K
Участник
 
34 / 10 (1) +
Регистрация: 16.09.2004
Адрес: Москва
:)
Ок спасибо
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Можно ли узнать Eof внутри while select ? Damn DAX: Программирование 13 04.03.2004 19:57

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

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

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