![]() |
#5 |
Участник
|
Пока удалось выяснить, что MoveNext() не корректно интерпретирует "точку отсчета". Предположительно, он начинает отсчет с последней записи.
Однако если заменить MoveNext() на просто Move() с явным указанием отсчитывать строки от начала курсора, то все проходит корректно. Т.е. код получается примерно такой X++: #define.adBookmarkCurrent(0) // от текущей записи (вот это умолчание не работает) #define.adBookmarkFirst(1) // от первой записи #define.adBookmarkLast(2) // от последней записи ccADORecordSet = ccADOCommand.execute(); while (!ccADORecordSet.EOF()) { info(any2str(ccADORecordSet.fields().itemIdx(0).value())); i++; ccADORecordSet.move(i, #adBookmarkFirst); } Правда, не понимаю причину данной проблемы. Ощущение такое, что вместо MoveNext() выполняется Move(1, 2). Ну, или "текущая" запись интерпретируется как "последняя" запись. PS: Кстати, замечу, что при выполнении на стороне клиента ситуация получается обратная. Приведенный код приводит к тому, что цикл выполняется только один раз. Т.е. на стороне клиента надо снова использовать MoveNext(). Цитата:
Сообщение от raz
У нас все работает. Сделаны серверные копии классов CCADOCommand, CCADOConnection, CCADOField, CCADOFields, CCADORecordSet. Во всех методах, где есть взаимодествие с COM добавлен new InteropPermission(InteropKind::ComInterop).assert(). Все статические методы сделаны серверными.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 01.11.2011 в 17:51. |
|
Теги |
ado, ax2009, movenext, recordset |
|
![]() |
||||
Тема | Ответов | |||
Отладка на сервере | 6 | |||
update_recordset. Бага или фича? | 7 | |||
Вопрос по update_recordset | 5 | |||
Затраты учет\списание | 9 | |||
Формат даты на сервере и клиенте | 2 |
|