|
![]() |
#1 |
Мрачный тип
|
Поможет, класс SysQuery именно так реализует всякие сервисные подсчеты для передаваемых запросов ...
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
![]() |
#2 |
Участник
|
полезный класс, если нужно, например, пересобрать запрос, объеденить. Но заметьте, работает он все равно с классом Query, а не QueryRun. Поэтому вести речь о клонировании именно QueryRun, со всем его контекстом - вообще говоря нельзя.
|
|
![]() |
#3 |
Мрачный тип
|
S.Kuskov, неправда Ваша - всякие count<Всякое>() в нем работают именно с объектом типа QueryRun и именно его клонируют через контейнер, производя вычисления.
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
![]() |
#4 |
Участник
|
Цитата:
Вот небольшой пример: X++: static void JobTEST_QueryRunPack(Args _args) { Query query; QueryRun queryRun1, queryRun2; TmpABC TmpABC1; ; query = new Query(); query.addDataSource(tableNum(TmpABC)); TmpABC1.clear(); TmpABC1.Amount = 123.45; TmpABC1.doInsert(); queryRun1 = new QueryRun(query); queryRun1.setCursor(TmpABC1); info(strfmt("SysQuery::countTotal(queryRun1): %1", SysQuery::countTotal(queryRun1))); // 0 info(""); queryRun2 = new QueryRun(queryRun1.pack()); // "клонируем" QueryRun info("queryRun2:"); info("{"); while (queryRun2.next()) // {} { TmpABC1 = queryRun2.get(tableNum(TmpABC)); info(strfmt("%1", TmpABC1.Amount)); } info("}"); info(""); info("queryRun1:"); info("{"); while (queryRun1.next()) // {123,45} { TmpABC1 = queryRun1.get(tableNum(TmpABC)); info(strfmt("%1", TmpABC1.Amount)); } info("}"); } |
|
![]() |
#5 |
Мрачный тип
|
Угу, про времянки, читая ответ по диагонали, я как-то пролетел мимо
![]()
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
|
|