Показать сообщение отдельно
Старый 31.10.2011, 19:14   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,713 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
RecordSet.moveNext() на сервере переходит в конец выборки
Ax2009. По необходимости переписал все классы CCADO...() на работу на стороне сервера, добавив везде

X++:
new InteropPermission(InteropKind::ComInterop).assert();
Однако теперь вполне стандартный код вроде

X++:
ccADORecordSet = ccADOCommand.execute();
while (!ccADORecordSet.EOF())
{
      info(any2str(ccADORecordSet.fields().itemIdx(0).value()));
      ccADORecordSet.moveNext();
}
сканирует только одну (первую) запись выборки. Первая же команда moveNext() переводит RecordSet в состояние EOF() и цикл завершается. В выборке больше одной записи. Это показывает RecordCount()

Метод ccADORecordSet.moveNext() добавил в класс ccADORecordSet по аналогии со старыми версиями Axapta. Т.е. там только собственно команда recordSet.moveNext()

В чем причина подобного поведения и как исправить?

PS: Соединение необходимо устанавливать именно на стороне сервера. Поэтому варианты выполнения на стороне клиента - не годятся.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...