![]() |
#3 |
Участник
|
Проверка предельного количества Range в Query
X++: static void Job_QueryRangeLimit(Args _args) { Query query; QueryRun queryRun; QueryBuildDataSource qbds; QueryBuildRange qbr; int nextI; ; query = new Query(); qbds = query.addDataSource(tablenum(InventTable)); for (nextI = 1; nextI <= 476 ; nextI++) { qbr = qbds.addRange(fieldNum(InventTable, ItemId)); qbr.value(queryValue('1')); } queryRun = new QueryRun(query); queryRun.next(); } 476 условий - берет, а 477 - ошибка "Некоторая часть инструкции SQL имеет слишком глубокую вложенность. Перепишите запрос или разбейте его на запросы меньшего размера." Так что, все зависит от количества ограничивающих значений. Если в пределах нескольких десятков, то можно и через Range. А вот если больше, то может быть имеет смысл сделать обратное - найти значения которые надо не исключать, а наоборот, которые допустимы. Использование временной таблице в запросе по любому физически означает вложенный цикл. Просто, при включении таблицы в запрос этот цикл выполняется не явно. |
|