странно все это

Changed перекрывать не надо, его надо вызывать

Хочу уточнить... В query у вас один датасорс и queryRun несколько раз выбирает одну и ту же запись?
Попробуйте перед выполненим всего что вложено в основной цикл проверить с помощью changed изменение записи то есть если queryRunPosition.changed(tableNum(RAssetTable)) == true, то выполнем, если нет, то не выполняем цикл.