|  08.07.2011, 15:55 | #1 | 
| Участник | queryRun метод get 
			
			DAX3 KR3: Обнаружил интересную особенность работы queryRun.  В документации,в примерах и в коде применяется следующая схема работы с QueryRun: X++: // инициализация QueryRun while (queryRun.next()) { <. > = queryRun.get(...); // обработка значений <таб. переменной> } в джобике продемонстрирован пример работы: X++: static void Job_QRGet_test(Args _args) { query q; queryRun qr; queryBuildDataSource qbds; inventTable it; inventTable it1; ; q = new query(); qbds = q.addDataSource(TableNum(inventTable)); qbds.addSelectionField(fieldNum(inventTable,itemName)); qbds.addRange(fieldNum(inventTable,itemId)).value("*"); qr = new queryRun(q); if (qr.next()) { it = qr.get(tableNum(inventTable)); it1 = qr.get(tableNum(inventTable)); do { info(it.itemName); } while (qr.next()); } } 
				__________________ --- SHiSHok | 
|  | |
| За это сообщение автора поблагодарили: Oz (1), Logger (3), gl00mie (2), S.Kuskov (3). | |
|  08.07.2011, 16:00 | #2 | 
| Участник | 
			
			так и есть, в 2009 тоже самое
		 | 
|  | 
|  08.07.2011, 16:00 | #3 | 
| Участник | 
			
			Наверное должно работать даже если присвоение сделать до цикла. Нужно попробовать. В принципе всё логично Common - это же класс, а значит в переменных этого типа хранятся не сами экземпляры, а ссылки. X++: InventTable InventTable1;
InventTable InventTable2;
InventTable2 = InventTable1;
InventTable1.ItemId = "!";
info(InventTable2.ItemId);P.S.: В случае временных таблиц именно из-за этого и появился метод setTmpDate   Последний раз редактировалось S.Kuskov; 08.07.2011 в 16:04. | 
|  | 
|  08.07.2011, 16:17 | #4 | 
| Участник | 
			
			искал в доках - внятного описания так и не нашел   пробовал - не получается. видимо первый next() выделяет память и определяет место хранения записи. 
				__________________ --- SHiSHok | 
|  | 
|  08.07.2011, 16:20 | #5 | 
| Участник | |
|  | 
|  08.07.2011, 16:34 | #6 | 
| Участник | 
			
			А если до вызова next() вызвать что то типа  qr.setRecord(it) или qr.setCurrent(it) ( не помню уже какой из них есть у QueryRun-а ) | 
|  | |
| За это сообщение автора поблагодарили: Oz (1), S.Kuskov (2). | |
|  08.07.2011, 16:46 | #7 | 
| Участник | Цитата:  Так оба и есть setCursor() vs setRecord() Работает X++: qr = new queryRun(q); qr.setRecord(it); if (qr.next()) { info(it.itemName); } | 
|  | 
| Теги | 
| get, query, queryrun | 
|  | 
| 
 |