07.07.2011, 16:38 | #1 |
Участник
|
Если select на сервере а next на клиенте...
Таким незамысловатым способом я хотел было вернуть выборку на клиента и там её перебрать.
X++: static server InventTable getCursor() //static client InventTable getCursor() { InventTable InventTable; select InventTable; return InventTable; } X++: static void jobTest() { InventTable InventTable = testClass::getCursor(); int cnt = 10; ; while (InventTable) { info(InventTable.ItemId); next InventTable; cnt--; if (!cnt) break; } } |
|
|
За это сообщение автора поблагодарили: titov (3). |
07.07.2011, 17:08 | #2 |
Участник
|
Попробовал сделать так:
X++: static void jobTest() { InventTable InventTable = Class1::getCursor(); int cnt = 10; ; while(cnt)//Заменил InventTable на cnt { info(InventTable.ItemId); next InventTable; cnt--; if (!cnt) break; } } Цитата:
Ошибка времени выполнения. : В данном контексте команду NEXT выполнить нельзя. Возможные причины: (a) буфер инициализирован на сервере, (b)не вызван запрос SELECT, (c) SELECT вызван, но строк не найдено, или (d) данные переданы с помощью метода DATA().
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 07.07.2011 в 17:13. |
|
|
За это сообщение автора поблагодарили: titov (3), S.Kuskov (3). |
07.07.2011, 17:16 | #3 |
Участник
|
Ошибку вы получили на второй итерации, ккогда выполнение до инструкции Next дошло уже во второй раз. В этот момент значение курсора уже было NULL, из-за того что на первой итерации Next не выбрал нужной записи.
Вопрос. Почему он её не выбрал? Цитата:
Возможные причины: (a) буфер инициализирован на сервере...
Последний раз редактировалось S.Kuskov; 07.07.2011 в 17:18. |
|
08.07.2011, 12:00 | #4 |
Участник
|
Интересно, что если на сервере курсор сделать временным и наполнить теми же данными, то next на клиенте отработает отлично.
|
|
|
За это сообщение автора поблагодарили: samolalex (2). |