Приостановление пересчёта данных

Автор Софья, 03 декабря 2015, 06:24:05

« назад - далее »

Софья

Ещё раз доброе утро.

Появился запрос на приостановление пересчёта данных. Можно ли как-то реализовать такую функцию в QV?

Получается, пользователи задействуют достаточно много выборок для получения необходимых данных, и как вы понимаете, нажимая на выборку, программа тут же их пересчитывает.

Нельзя ли где-нибудь поставить галочку "Отложить обновление макета", например, как в OLAP? Чтобы они задали все условия, а только после программа пересчитала их.

На деле действительно неудобно, когда ты выбираешь одно условие - тут же ждёшь пересчёт, и так подряд раз 7.

Заранее благодарна всем.


bibis

Первое,что приходит в голову- создать для пользователей  "рычажок", т.е. 2 текстовых объекта, "выборка","расчет" , устанавливающие некую переменную run в позиции ='{1}' и ='{$}', соответственно.
Ну и дальше во всех объектах прописывать  выражения ввиде
sum($(run) sales) .

далее пользователь жмет : 'выборка', выставляет все фильтры, при этом выражения не пересчитываются, затем жмет "расчет"

Софья

Я правильно понимаю Вас, что создаётся одна переменная? А как ей присвоить 2 значения?

И как прописывать это в объектах? Никаких ассоциаций не возникает в голове, как это будет выглядеть.

bibis

#3
 Создаем переменную run .
Создаем 2 текстовых объекта. Выбираем свойства/действие/добавить/внешний/установить переменную,
в поле "переменная" пишем run
в поле значение, в первом объекте ='{$}'  , во втором ='{1}'.

Далее в каждом  выражении дописываем , $(run).
Допустим если у вас в диаграмме считалось выражение Sum(sales) , то теперь вам нужно его переделать в
Sum($(run) sales)

Софья

Теперь поняла, благодарю.

Но ругается, когда вписываю эту переменную в поле. К слову, все формулы у меня трёхэтажные.


bibis

Ну на то что ругается, внимания обращать не нужно, подсветка синтаксиса в qv кривая, считает правильно главное , только что проверил.

С формулами, ничего не поделать, на будущее советую основные куски выражений, которые часто используете так же загонять в переменные.
В данном случае могу посоветовать только параметры/обозреватель выражений и там поделать что-то вроде : 'заменить всё' Sum(  на Sum($(run) , avg( на avg($(run) и т.д.

Софья

Спасибо за совет, на досуге нужно будет заняться.

Сделала всё, как Вы сказали. Ничего не изменилось. И ещё хотела спросить, к подобным объектам, как во вложении, нужно что-то дописывать. У меня много конструкций с if, объектов-списков, где прописаны различные условия в выражениях.

bibis

Цитата: Софья от 03 декабря  2015, 12:56:05  
Сделала всё, как Вы сказали. Ничего не изменилось.
А нажали, хоть на один из созданных текстовых объектов, чтоб переменная инициализировалась?
Какую ошибку выдает?
И создайте текстовый объект с текстом =$(run) , напишите,что он показывает при переключении.

Прописывать нужно в каждой функции аггрегирования (sum,avg,concat,max и т.д.), т.е. если у вас например в выражении  считается одна из 2х формул в зависимости от условия if, то прописать нужно в обоих, то же самое и при вложенном аггрегировании с aggr

Софья

По-моему, я Вас неправильно понимаю. Создала объект, где прописала переменную, как Вы сказали. Нужен ещё тестовый объект? Или в этом же объекте вместо 1 и 2 что-то нужно написать?

Только сейчас задумалась, а в скрипте её нужно как-то обозначать?

bibis

Тестовый, но вообще по скрину - всё правильно.
Попробуйте на какой-нибудь простой формуле отработать, понажимав на созданные объекты, убедившись, что значение считаются, а потом уже в 3 хэтажные аккуратно дописывать.

Софья

Цитата: bibis от 03 декабря  2015, 01:04:39  
И создайте текстовый объект с текстом =$(run) , напишите,что он показывает при переключении.

А здесь Вы имели в виду что? Нужны ли ещё тестовые объекты? Просто не сталкивалась с подобной конструкцией, поэтому простите моё обилие вопросов.

bibis

#11
Ну он нужен,чтоб можно было в живую посмотреть как меняется переменная. Но судя по скринам-всё с ней должно быть в порядке и можно не создавать.

В скрипте задавать не нужно, достаточно в обозревателе переменных В общем наделал скринов, думаю будет понятнее.

Софья

Смотрю на Ваши скрины - у меня всё идентично. Прописала в текстовом объекте простую функцию суммирования количества. Оно так же изменяется, как и данные в таблице сводной. Созданные объекты с переменной никак не влияют на выборку.

Не приложу ума, в чём проблема.

bibis

Мистика какя-то.
Попробуйте тогда "в лоб" . Установить переменную в 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". И что дают фигурные скобки единице?

Яндекс.Метрика