Ещё раз доброе утро.
Появился запрос на приостановление пересчёта данных. Можно ли как-то реализовать такую функцию в QV?
Получается, пользователи задействуют достаточно много выборок для получения необходимых данных, и как вы понимаете, нажимая на выборку, программа тут же их пересчитывает.
Нельзя ли где-нибудь поставить галочку "Отложить обновление макета", например, как в OLAP? Чтобы они задали все условия, а только после программа пересчитала их.
На деле действительно неудобно, когда ты выбираешь одно условие - тут же ждёшь пересчёт, и так подряд раз 7.
Заранее благодарна всем.
Первое,что приходит в голову- создать для пользователей "рычажок", т.е. 2 текстовых объекта, "выборка","расчет" , устанавливающие некую переменную run в позиции ='{1}' и ='{$}', соответственно.
Ну и дальше во всех объектах прописывать выражения ввиде
sum($(run) sales) .
далее пользователь жмет : 'выборка', выставляет все фильтры, при этом выражения не пересчитываются, затем жмет "расчет"
Я правильно понимаю Вас, что создаётся одна переменная? А как ей присвоить 2 значения?
И как прописывать это в объектах? Никаких ассоциаций не возникает в голове, как это будет выглядеть.
Создаем переменную run .
Создаем 2 текстовых объекта. Выбираем свойства/действие/добавить/внешний/установить переменную,
в поле "переменная" пишем run
в поле значение, в первом объекте ='{$}' , во втором ='{1}'.
Далее в каждом выражении дописываем , $(run).
Допустим если у вас в диаграмме считалось выражение Sum(sales) , то теперь вам нужно его переделать в
Sum($(run) sales)
Теперь поняла, благодарю.
Но ругается, когда вписываю эту переменную в поле. К слову, все формулы у меня трёхэтажные.
Ну на то что ругается, внимания обращать не нужно, подсветка синтаксиса в qv кривая, считает правильно главное , только что проверил.
С формулами, ничего не поделать, на будущее советую основные куски выражений, которые часто используете так же загонять в переменные.
В данном случае могу посоветовать только параметры/обозреватель выражений и там поделать что-то вроде : 'заменить всё' Sum( на Sum($(run) , avg( на avg($(run) и т.д.
Спасибо за совет, на досуге нужно будет заняться.
Сделала всё, как Вы сказали. Ничего не изменилось. И ещё хотела спросить, к подобным объектам, как во вложении, нужно что-то дописывать. У меня много конструкций с if, объектов-списков, где прописаны различные условия в выражениях.
Цитата: Софья от 03 декабря 2015, 12:56:05
Сделала всё, как Вы сказали. Ничего не изменилось.
А нажали, хоть на один из созданных текстовых объектов, чтоб переменная инициализировалась?
Какую ошибку выдает?
И создайте текстовый объект с текстом =$(run) , напишите,что он показывает при переключении.
Прописывать нужно в каждой функции аггрегирования (sum,avg,concat,max и т.д.), т.е. если у вас например в выражении считается одна из 2х формул в зависимости от условия if, то прописать нужно в обоих, то же самое и при вложенном аггрегировании с aggr
По-моему, я Вас неправильно понимаю. Создала объект, где прописала переменную, как Вы сказали. Нужен ещё тестовый объект? Или в этом же объекте вместо 1 и 2 что-то нужно написать?
Только сейчас задумалась, а в скрипте её нужно как-то обозначать?
Тестовый, но вообще по скрину - всё правильно.
Попробуйте на какой-нибудь простой формуле отработать, понажимав на созданные объекты, убедившись, что значение считаются, а потом уже в 3 хэтажные аккуратно дописывать.
Цитата: bibis от 03 декабря 2015, 01:04:39
И создайте текстовый объект с текстом =$(run) , напишите,что он показывает при переключении.
А здесь Вы имели в виду что? Нужны ли ещё тестовые объекты? Просто не сталкивалась с подобной конструкцией, поэтому простите моё обилие вопросов.
Ну он нужен,чтоб можно было в живую посмотреть как меняется переменная. Но судя по скринам-всё с ней должно быть в порядке и можно не создавать.
В скрипте задавать не нужно, достаточно в обозревателе переменных В общем наделал скринов, думаю будет понятнее.
Смотрю на Ваши скрины - у меня всё идентично. Прописала в текстовом объекте простую функцию суммирования количества. Оно так же изменяется, как и данные в таблице сводной. Созданные объекты с переменной никак не влияют на выборку.
Не приложу ума, в чём проблема.
Мистика какя-то.
Попробуйте тогда "в лоб" . Установить переменную в 0 и 1 (вместо ='{$}', ='{1}') .
И прописывать в выражении
if( $(run)=1, sum(exp) , sum({1}exp) )
Цитата: bibis от 04 декабря 2015, 10:44:32
Мистика какя-то.
Попробуйте тогда "в лоб" . Установить переменную в 0 и 1 (вместо ='{$}', ='{1}') .
И прописывать в выражении
if( $(run)=1, sum(exp) , sum({1}exp) )
Можете пояснить, что за условия после run? Не сталкивалась с использованием "exp". И что дают фигурные скобки единице?
Exp это я так обозначил произвольный текст ;D
{1} означает игнорирование выборок , {$} наоборот, посчитать с учетом выборок, так же условие {$} предполагается по умолчанию,поэтому его можно опустить, как в предложенном мной примере.
Таким образом выражение будет посчитано 2я способами, без учета выборок при run=1 и с учетом, при run=0 как я понял именно это и требуется.
Bibis, сделала то, что Вы написали. Не работает. Что-то, видимо, я не учитываю.
Не могли бы Вы мне дать источники, где подобная конструкция описывается? Если они есть, конечно. Может, прочитаю и пойму, где допускаю ошибку.
Вряд ли где-то она описывается, учитывая, что я её придумал, прочитав топик :D
Есть предложение, вышлите какой-нибудь документ, где вы пытаетесь проделать описываемые действия, я его скачаю и посмотрю в чем дело.