И снова здравствуйте, коллеги.
Сегодня я бы хотел немного поговорить о переменных. Изначально целью данного поста являлось желание раскрыть принципиальную разницу между объявлениями переменных при помощи операторов SET и LET. Однако, аппетит, что называется, приходит во время еды и изначальные рамки поста были слегка пересмотрены в сторону их увеличения.
И так начинаем наш обзор…
Как же объявить(создать) новую переменную внутри документа?
Это можно сделать несколькими способами:
- Использовать операторы SET и LET в редакторе скрипта загрузки данных;
- Использовать визуальный редактор переменных (Обозреватель переменных);
- Использовать функции API (см. документ APIguide.qvw из стандартной поставки)
Давайте рассмотрим их более подробно…
Первый способ самый простой и понятный. При написании скрипта загрузки мы объявляем необходимые нам переменные посредством использования операторов SET или LET.
Оператор SET обычно используется когда необходимо описать какую либо не вычисляемую переменную, например путь к директории, название файла и т.п.
Оператор LET употребляется для определения переменных, которые необходимо вычислить в ходе выполнения скрипта загрузки.
Как видно из предыдущего примера, переменная str1 объявлена как не вычисляемая. Для того, чтобы все-таки произвести вычисление переменной определенной при помощи оператора SET нам необходимо использовать конструкцию вида: $(varName).
Вот собственно основное отличие этих операторов.
Примечание:
Оператор LET не является обязательным при объявлении вычисляемых переменных внутри скрипта загрузки. Поэтому след. пример скрипта также имеет право на свое существование:
LET Y = 2+3;
Z = Y-1;
Z = Y-1;
Результат переменной Z будет равен 4.
Второй способ не требует каких-либо дополнительных знаний в написании скриптов и представляет из себя работу с обозревателем переменных. Вызывается данный обозреватель через меню Настройки/Обозреватель переменных (или “горячими” клавишами Ctrl + Alt + V).
И третий способ заключается в использовании Automation API функций, в частности функции CreateVariable класса Document (см. APIguide.qvw). Пример:
ActiveDocument.CreateVariable "MyVar"
Важно:
Если первым символом в значении переменной будет стоять символ “=”, то QlikView будет пытаться произвести вычисление значения этой переменной при ее использовании в Edit Expression (Редактор выражения) и вернет результат этого вычисления. Это замечание относится ко всем переменным вне зависимости от способа их создания. Таким образом если мы реализуем скрипт вида:
SET s = ‘=1+2’;
затем откроем Обозреватель переменных, то увидим в качестве значения строку ‘=1+2’ (см. скриншот выше). Однако, если мы используем эту переменную s, например, в объекте Text Object, то в результате мы получим вычисление формулы описанной в переменной s и в Text Object’е мы увидим цифру 3.
Спасибо
ОтветитьУдалитьОбновляйте блог, очень мало информации
согласен, мало. Что-то я совсем забросил это дело. Буду пытаться наверстать упущенное... :) Вот еще бы понять что именно интересно, о чем так сказать в первую очередь хочется почитать.
ОтветитьУдалитьПримерX: Показать...
ОтветитьУдалитьне работают ни в одном из браузеров
пофиксите плиз
не работают ссылки на примеры
ОтветитьУдалитьДа, спасибо. После смены дизайна много чего полетело :( Исправил...
ОтветитьУдалить"Обозреватель переменных, то увидим в качестве значения строку ‘=1+2’ (см. скриншот выше). Однако, если мы используем эту переменную s, например, в объекте Text Object, то в результате мы получим вычисление формулы описанной в переменной s и в Text Object’е мы увидим цифру 3."
ОтветитьУдалитьза это отдельно большое спасибо!
Ищу инструктора по QlikView.
ОтветитьУдалитьНужно с нуля научиться пользоваться программой в сжатые сроки. Обучение возможно по скайпу или стационарно. Цены и условия готов обсуждать.
+79032778572
Добры день. Только начал изучать QlikView, подскажите пожалуйста, как можно переопределить переменную.
ОтветитьУдалитьПример:
Есть переменная, при загрузке полей в зависимости от условий, она должна принимать разные значения.
Приветствую. Не очень понял вопрос... В любом случае, чтобы переопределить значение переменной в скрипте вы можете использовать операторы LET или SET (разница описана в данном посте)
ОтветитьУдалитьНу вот ну например:
УдалитьЕсли я объявлю переменную, а потом при загрузке полей как переопределить?
SET перем = "Текст",
Load
поле1,
поле2,
поле3,
IF (Поле1 = 1, перем = Поле2, перем=Поле3) as Поле4
Ну вот как-то так. Подскажите как это правильно реализовать в QV?
Так делать нельзя. переменная это не массив значений, там можно хранить только одно значение. После выполнения LOAD вы можете рассчитать одно значение, но не для каждой строки таблицы (как вы пытаетесь). Не ясна цель конечная, поэтому сложно что-то подсказать. возможно вам нужно определять значение переменной не в скрипте, а уже в дизайне (Layout) в зависимости от текущей выборке по "поле1".
УдалитьДобрый день. При загрузке данных из текстового файла значения одного из атрибутов указывается со скобкой, из за особенностей текстового файла. Пример:
ОтветитьУдалить123(
2224(
12(
Вопрос. Как можно убрать скобку? Что прописать?
Павел, здравствуйте.
УдалитьВариантов масса...
1) Left(FieldName, Len(FieldName)-1) as FieldName
2) purgechar(FieldName, '(') as FieldName
3)SubField(FieldName, '(', 1) as FieldName
и др...
ВСЕ ПРОЧИТАЙТЕ НАСТОЯЩЕЕ ОТЗЫВ О том, КАК Я ПОЛУЧИЛ СВОЙ КРЕДИТ ОТ КОМПАНИИ LEGIT И ДОВЕРЕННОЙ КРЕДИТНОЙ СРЕДИ Меня зовут Kjerstin Lis, я искал кредит для погашения своих долгов, все, кого я встречал, мошенничали и брали свои деньги, пока я наконец не встретил мистера Бенджамина Брейл Ли Он смог дать мне кредит в размере 450 000 рублей. Он также помог другим моим коллегам. Я говорю как самый счастливый человек во всем мире сегодня, и я сказал себе, что любой кредитор, который спасает мою семью от нашей бедной ситуации, я скажу имя всему миру, и я так счастлив сказать, что моя семья вернулся навсегда, потому что я нуждался в кредите, чтобы начать свою жизнь заново, потому что я одинокая мама с 3 детьми, и весь мир, казалось, висел на мне, пока я не имел в виду, что БОГ послал кредитора, который изменил мою жизнь и член моей семьи, БОЖИЙ кредитор, мистер Бенджамин, он был Спасителем БОГом, посланным для спасения моей семьи, и сначала я подумал, что это будет невозможно, пока я не получу кредит, я пригласил его к себе в семью -все вечеринка, от которой он не отказался, и я посоветую всем, кто действительно нуждается в кредите, связаться с г-ном Бенджамином Брейлом Ли по электронной почте (lfdsloans@outlook.com), потому что он самый понимающий и добрый кредитор. когда-либо встречал с заботливым сердцем. Он не знает, что я делаю это, распространяя свою добрую волю ко мне, но я чувствую, что должен поделиться этим со всеми вами, чтобы освободить себя от мошенников, пожалуйста, остерегайтесь подделок и свяжитесь с правильной кредитной компанией. com или whatsapp + 1-989-394-3740. ,
ОтветитьУдалить