2 rkrivov:
Развернувшаяся здесь дискуссия по поводу использования массивов полей в Range сама по себе интересна и познавательна... Но позволю себе еще раз обратить Ваше внимание на изначальную постановку задачи. Возможно, что Вы либо ошиблись при построении запроса, либо зря тратите время, ковыряясь в расширенных диапазонах, поскольку в таком виде задача решается стандартным путем.
Процитирую свое сообщение:
Цитата:
Сообщение от
Ruff
...сдается мне, что в Ваш запрос закралась какая-то бяка... Попытка оптимизировать (по правилу поглощения, кажется) условие:
"(%2 != %1) && ((%2 == %1) || (!%1))"
привела к следующему:
"(%2 != %1) && (!%1)"
Что по сути означает "первый параметр всегда пустой, а второй - всегда непустой". Может быть это именно то, что Вам и нужно, но зачем тогда такие сложные сравнения?
Чтобы стало совсем понятно, к чему я прицепился

, последнюю строку можно преобразовать далее:
"(%2) && (!%1)" или "(%2 != "") && (%1 == "")"
Таким образом, остается просто добавить к запросу два
простых Range с условиями (!"") и ("") соответственно (насколько я понимаю, это будут Dimension[i], причем из разных DataSource-ов). В любом случае добавить их "по одиночке" (в разные Range) не составит труда, и эти условия объединятся по И.
Хотя, на самом деле мне кажется, что Вы что-то упустили при построении запроса, вряд ли все так просто