Неофициальный форум разработчиков QlikView и Qlik Sense

Форум разработчиков QlikView и Qlik Sense. Получи любые ответы на вопросы по QlikView и Qlik Sense в течении нескольких часов!

Вы не вошли.

#1 Re: Программирование QlikView » Кнопка с действиями » 2017-04-11 13:13:57

kek пишет:

Есть 2 кнопки. А и Б
как сделать так чтобы когда нажата кнопка А  она бы меняла свой цвет?

Вам необходимо завести переменную, значение которой будет меняться при каждом нажатии кнопки. (в действия кнопки - изменить переменную)
Затем в настройках кнопки установить экспрешн в поле "Base Color" :
Bezimyanni_3739231_25844306.png

#2 Re: Программирование QlikView » Как реализовать QlikView аналог SQL запроса работая с таблицами из QVD » 2017-01-23 12:37:07

Можно сделать так:

order_client:
LOAD
  code_order,
  id_workplace,
  code_shop,
  date_receipt,
  number_receipt,
  date_order,
  sum_order,
  code_client
FROM [order_client.qvd];

NoConcatenate
wares_order:
LOAD
  code_order,
  id_workplace,
  code_shop,
  RowNo() as номерСтроки
FROM [wares_order.qvd];

LEFT JOIN(order_client)
LOAD
 code_order,
 id_workplace,
 code_shop,
 Count(номерСтроки) as "Кол-во позиций"
Resident wares_order
Group by
 code_order,
 id_workplace,
 code_shop;

DROP TABLE wares_order;

#3 Re: Программирование QlikView » Ошибка в функции Month() - Помогите! » 2017-01-20 18:25:27

Вероятно, Вы используете функции QlikView в запросе SQL. Так делать нельзя.
В запросе SQL используется синтаксис БД.

#4 Re: Программирование QlikView » Значение по-умолчанию » 2017-01-20 18:23:42

Yulia пишет:

Добрый день! спасибо за ответ, теперь другая проблема: я правильно понимаю, что в приложении, запущенном на сервере клика, НЕ будут работать ни макросы, ни триггеры?

Вы имеете ввиду, когда пользователь просматривает отчёт через Access Point?
Большинство триггеров должно работать в любом случае. (если в триггере задано управление приложением, а не запуск макроса или перезагрузка отчёта)
А вот макросы...да, в ajax не все работают. (это если без плагина пользоваться)

#5 Re: Программирование QlikView » Значение по-умолчанию » 2016-12-20 12:39:16

Yulia пишет:

Добрый день!
Устанавливаю значения по-умолчанию через макрос вида:
Sub setDefaultParamsUB
    ActiveDocument.Fields("УБ_Год").select Year(Date())
End Sub

У меня в приложении несколько листов и для показа пользователю выборок только текущего листа я для всех элементов листа указала состояние. То есть на листе-1 состояние "Лист1", на листе-2 состояние "Лист2" для всех элементов.

Собственно вопрос: как в макросе задать состояние, потому что приведенный выше пример состояние не обрабатывает.
Спасибо!


ActiveDocument.Fields("УБ_Год","Альтернативное состояние").select Year(Date())

Также, можно сделать аналогичное действие с помощью триггера на открытие листа/приложения. (там можно выбрать альтернативное состояние поля)

#6 Re: Программирование QlikView » Значение по-умолчанию » 2016-09-05 17:09:52

Yulia пишет:

Добрый день!
Подскажите, пожалуйста, можно ли для элемента управления Список задать значение по-умолчанию?
Каким образом?
Заранее спасибо!

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

#7 Re: Программирование QlikView » Экспорт в Excel через макрос » 2016-07-28 20:10:47

Yulia пишет:

Добрый день!
подскажите, пожалуйста, я использую ваш макрос:
sub ExportToExcel(ObjectId, FilePath)
    dim FileName
    Set FileName = ActiveDocument.GetSheetObject(ObjectId)
    FileName.ExportBiff FilePath
    Set FileName = nothing
end sub

но он НЕ перезаписывает файл FilePath, если последний уже был ранее сформирован.
Нельзя ли добавить (как?) флаг перезаписи?
Заранее спасибо!

Получилось ли наладить выгрузку? Возможно файл занят иным процессом, поэтому пересохранить не получается.

#8 Re: Программирование QlikView » Остановить макрос » 2016-03-24 13:27:02

Yulia пишет:

Добрый день!
а если макрос не возвращает значение, то есть не функция, в процедура - тогда не получится?

Да, должна возвращать значение.

#9 Re: Программирование QlikView » Остановить макрос » 2016-03-21 13:57:38

Да, можно вызвать.
Пример:

Создаём функцию на vbscript:

function test(a1,a2)
    test = a1+a2
end function

В скрипте пишем:
let result = test(1,2);

Получаем, result = 3.

#10 Re: Программирование QlikView » Экспорт в Excel через макрос » 2016-02-29 12:22:46

Можете таким макросом проверить открыт файл только для чтения или нет.

sub test

set XLApp = CreateObject("Excel.Application")

set XLDOC = XLApp.Workbooks.Open ("C:\Tasks\1.xlsx")

IF XLApp.ActiveWorkbook.ReadOnly THEN

    MSGBOX "READ_ONLY MODE"
    XLApp.Quit 

END IF

end sub

#11 Re: Программирование QlikView » Экспорт в Excel через макрос » 2016-02-26 13:44:27

Попробуйте через "ExportBiff"

Пример:

Function SaveToExcel
   
    call ExportToExcel("CH02", "D:\Files\Отчёт_по_вакансиям_за_" & ActiveDocument.Evaluate("date(today(1))") & ".xls")

end Function

sub ExportToExcel(ObjectId, FilePath)

    dim FileName
    Set FileName = ActiveDocument.GetSheetObject(ObjectId)
    FileName.ExportBiff FilePath
    Set FileName = nothing

end sub

#12 Re: Программирование QlikView » Кнопка с действиями » 2016-02-18 14:46:27

Yulia пишет:

Однако, возник вопрос: как вместо условия '>3' написать выбор конкретных значений, то есть {4,6}?

Заранее спасибо!

Попробуйте "4"|"6"  или (4|6)

#13 Re: Программирование QlikView » Кнопка с действиями » 2016-02-16 12:50:07

Можно так:
1. Добавить под номером 2 - действие по запуску макроса.
2. В первом действии, при перезагрузке добавить в скрипт сохранение файла - флага перезагрузки.
3. В самом макросе проверять наличие файла-флага в директории. Пока его там нет, не завершать макрос (зациклить)
4.Как только файл появился - удалить его, и перед тем, как макрос завершит работу открыть документ QliKView через макрос.

Для поиска в API используйте приложение APIguide.qvw (устанавливается вместе с QliKView)

Второй вариант -  можно повесить действие (по открытию стороннего qvw) после перезагрузки приложения из action #1.

#14 Re: Программирование QlikView » Автомасштабирование приложения под экран » 2016-02-12 14:48:56

Yulia пишет:

Добрый день!
Не подскажите, что написать (или галку поставить?), чтобы и сам QlikView открывался при открытии приложения всегда на весь экран?

а то получается, что приложение открылось на весь экран, но в это время сам Qlik был не на весь экран...
Заранее спасибо!

Думаю, что придётся сделать .bat файл для запуска приложения. Перед стандартным вызовом из консоли нужно написать "START /MAX"
START /MAX "c:\program files\qlikview\qv.exe"

Параметры командной строки можно посмотреть в руководстве:

7.1 Синтаксис командной строки
Вызов командной строки QlikView можно описать с помощью следующего синтаксиса (описание
синтаксиса см. в разделе Форма Бэкуса-Наура (стр. 1043)):
[ path ]Qv.exe[ { switch } documentfile ]
путь — это путь к файлу, абсолютный или относительный для текущего каталога.
файл_документа::= [ path ] имя_файла_документа
имя_файла_документа — имя файла документа.
Ключ используется для отметки разных параметров:
/r
Ключ перезагрузки Выполняется открытие документа и перезагрузка скрипта. Затем документ можно
сохранить, при этом QlikView закроется.
/rp
То же, что и выше, но с выполнением частичной перезагрузки.
/l
Загрузка новых данных Выполняется открытие документа и перезагрузка скрипта. Документ не
сохраняется и QlikView остается в открытом состоянии.
/lp
То же, что и выше, но с выполнением частичной перезагрузки.
/v
Если за этим переключателем следует имя переменной и оператор назначения, то переменная получит
назначенное значение до начала выполнения скрипта.
/nodata
Открывает документ без переменных, таблиц или данных полей. Эта функция также доступна для
открытых документов на Начальная страница (стр. 43).
/NoSecurity
Переопределяет меры защиты QlikView от вредных макросов и скриптов, встроенных в документ
QlikView. После этого сообщения о потенциально вредоносном содержимом больше не будут
выводиться. Используйте этот переключатель с осторожностью и только при работе с хорошо
знакомыми документами.
Пример:
qv.exe /r/vMyvar=123 abc.qvw

#15 Re: Программирование QlikView » Остановить макрос » 2016-02-12 11:47:27

Попробуйте открыть приложение с нажатой клавишей "Shift" . (запуск без макросов)

#16 Re: Программирование QlikView » Автомасштабирование приложения под экран » 2016-02-10 18:52:36

Пользователи используют плагин для IE? В таком случае можно использовать макрос "зуммирования" (установить триггер запуска макроса на открытие приложения):

Sub Zoom

ActiveDocument.GetApplication.WaitforIdle
ActiveDocument.ActiveSheet.FitZoomToWindow
ActiveDocument.GetApplication.WaitforIdle
ActiveDocument.ActiveSheet.ApplyZoomToAllSheets

End Sub 

#17 Re: Программирование QlikView » Отключить системный TRACE » 2016-02-10 12:11:05

Можно переместить скрипт в скрытый с паролем. Тогда системный TRACE не будет выводить в окно перезагрузки информацию.

#18 Re: Программирование QlikView » Перенос лицензии » 2016-02-10 12:06:08

Nikolay1994 пишет:

Подскажи пожалуйста как перенести файловую лицензию с одного компьютера на другой?

Вы имеете ввиду ограничение персональной версии на кол-во открытий не собственных файлов?
Можете использовать Binary для открытия чужих файлов. (правда в таком случае заберутся только данные)

#19 Re: Программирование QlikView » Текстовый объект » 2016-02-01 12:36:15

Необходимо добавить хотя бы одно "альтернативное состояние" :

d5ec1ddf1fdd017f09d2ef13fd8fbab6.png

#20 Re: Программирование QlikView » Текстовый объект » 2016-01-28 12:37:36

Нужно в свойствах документа на вкладке "General" поменять Styling Mode на "Advanced".
Screenshot_5968815_20436356.png

#21 Re: Программирование QlikView » Удаление временных таблиц » 2016-01-20 17:43:54

Yulia пишет:

Спасибо, попробую.

А чего-нибудь наподобие
try
   drop table Tbl1;
except
   TRACE Таблица не существует;
end

в QV нет?

Нет, обработки исключений в таком виде нет.

#22 Re: Программирование QlikView » Удаление временных таблиц » 2016-01-20 15:36:51

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

Второй способ - через количество строк в таблице:

let ehhh  = NoOfRows('ll');
if ehhh > 0 then
    TRACE Таблица существует;
Else
    TRACE Таблица не существует;

#23 Re: Программирование QlikView » Отладчик в QlikView » 2016-01-19 14:57:41

Yulia пишет:

Спасибо, отлично!
а что-нибудь наподобие ShowMessage/MsgBox или print есть?

     Можно в самом скрипте воспользоваться оператором TRACE  и вывести нужную фразу/значение переменной в окне выполнения.
Чтобы вывести message box при выполнении кода, необходимо в нужном месте скрипта заранее обьявить и инициализировать переменную (название можно любое):  let showMB = msgbox('Привет');
Значения всех переменных выводятся в нижнем блоке отладчика.

#24 Re: Программирование QlikView » Отладчик в QlikView » 2016-01-19 13:07:57

В скрипте рядом с кнопкой Reload есть Debug. При нажатии откроется отладчик.
Горячие клавиши можно посмотреть в настройках Settings - User Preference - Design.  (например F8 - шаг , F5 - выполнение скрипта до точки останова/конца скрипта)
Если кликнуть левой кнопкой мыши чуть левее строки скрипта, появится красная кнопка - это точка останова.

#25 Re: Программирование QlikView » Как реализовать функцию ВПР или поиск в массиве в Qlikview » 2016-01-13 12:20:53

Yulia пишет:

Добрый день!

Подскажите, пожалуйста, как объявить (например, через set) переменную-массив?

Заранее спасибо!

Можно создать таблицу с 2 полями, и дальше обращаться к записям это таблицы по fieldvalue().
Также можно обьявить переменную с делимитером (например, '|' - '1|2|3|4') и дальше обращаться к каждому "элементу" через subfield().

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.019 сек, 9 запросов выполнено - Использовано памяти: 1.52 Мбайт (Пик: 1.63 Мбайт) ]