Кнопка «Назад» с блэкджеком и триггерами
Вступление
Если ты когда-нибудь создавал триггер по событию в QlikView, то обязательно сталкивался с тем, что кнопка «Назад» перестала работать.
Связано это с тем, что кнопка работает не только с выборками, но и с переменными. Если они изменялись, то нажатие на кнопку «Назад» вернет тебя не к предыдущей выборке, как ты этого хочешь, а к предыдущему значению переменной (спойлер - тебе это на хрен не надо).
Что же делать?
Решение, на самом деле, просто как валенок. Достаточно создать несколько альтернативных состояний и по событию копировать выборки из одного в другое...
Алгоритм действий следующий:
- Создаем N альтернативных состояний, где N - это потенциальное количество шагов назад
- Создаем N триггеров «Copy State Contents» на событие «OnAnySelect», которые будут переносить выборки из одного состояния в другое.
- Создаем кнопку «Назад» с триггерами «Copy State Contents», но теперь уже в обратном направлении.
Скачать пример можно тут «Кнопка назад.qvw»
Для тех кто в танке, все подробно и с картинками :)
Создаем альтернативные состояния:
Вешаем триггер на событие «OnAnySelect»:
Важно: первый триггер копирует из предпоследнего в последний, следующий из пред-предпоследнего в предпоследний, ну и так далее...
Дошли до первого, который копирует выборки из состояния «$» (для тех, кто не учил матчасть - дефолтное состояние):
Вся эта ерунда работает вот так (я даже не поленился нарисовать):
Теперь создаем триггер для кнопки «Назад» (все то же самое, только в обратном направлении):
Важно: первый триггер копирует из второго в первый, следующий из третьего во второй, ну и так далее...
Как вся ерунда работает в обратном направлении я уже поленился нарисовать, сорьки :)
Эпилог
Вот ты и научился одному из некоторых вариантов, как сделать кнопку «Назад» если стандартный функционал QlikView не работает.
Есть еще как минимум пара способов как это сделать:
- Описанный случай, но только через переменную (если использовать триггер «Copy State Contents» в несуществующее состояние, то оно создается автоматически - можно с этим что-то придумать)
- Через «$N», где N - это переменная содержащая кол-во шагов назад. В этом случае придется прописывать эту хрень во всех формулах, а еще выборки не будут меняться. Короче так себе способ.
Если вам понравилась статья или у вас есть идеи как сделать это лучше, пишите мне на почту: me@andbel.it
Увидимся в следующих выпусках! :)