Форум разработчиков QlikView и Qlik Sense. Получи любые ответы на вопросы по QlikView и Qlik Sense в течении нескольких часов!
Вы не вошли.
Есть 2 кнопки. А и Б
как сделать так чтобы когда нажата кнопка А она бы меняла свой цвет?
Вам необходимо завести переменную, значение которой будет меняться при каждом нажатии кнопки. (в действия кнопки - изменить переменную)
Затем в настройках кнопки установить экспрешн в поле "Base Color" :
Можно сделать так:
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;
Вероятно, Вы используете функции QlikView в запросе SQL. Так делать нельзя.
В запросе SQL используется синтаксис БД.
Добрый день! спасибо за ответ, теперь другая проблема: я правильно понимаю, что в приложении, запущенном на сервере клика, НЕ будут работать ни макросы, ни триггеры?
Вы имеете ввиду, когда пользователь просматривает отчёт через Access Point?
Большинство триггеров должно работать в любом случае. (если в триггере задано управление приложением, а не запуск макроса или перезагрузка отчёта)
А вот макросы...да, в ajax не все работают. (это если без плагина пользоваться)
Добрый день!
Устанавливаю значения по-умолчанию через макрос вида:
Sub setDefaultParamsUB
ActiveDocument.Fields("УБ_Год").select Year(Date())
End SubУ меня в приложении несколько листов и для показа пользователю выборок только текущего листа я для всех элементов листа указала состояние. То есть на листе-1 состояние "Лист1", на листе-2 состояние "Лист2" для всех элементов.
Собственно вопрос: как в макросе задать состояние, потому что приведенный выше пример состояние не обрабатывает.
Спасибо!
ActiveDocument.Fields("УБ_Год","Альтернативное состояние").select Year(Date())
Также, можно сделать аналогичное действие с помощью триггера на открытие листа/приложения. (там можно выбрать альтернативное состояние поля)
Добрый день!
Подскажите, пожалуйста, можно ли для элемента управления Список задать значение по-умолчанию?
Каким образом?
Заранее спасибо!
Для этого необходимо в триггере на открытие приложения(либо листа) добавить действие по выборке в поле. (в поле нужного вам значения по умолчанию)
Добрый день!
подскажите, пожалуйста, я использую ваш макрос:
sub ExportToExcel(ObjectId, FilePath)
dim FileName
Set FileName = ActiveDocument.GetSheetObject(ObjectId)
FileName.ExportBiff FilePath
Set FileName = nothing
end subно он НЕ перезаписывает файл FilePath, если последний уже был ранее сформирован.
Нельзя ли добавить (как?) флаг перезаписи?
Заранее спасибо!
Получилось ли наладить выгрузку? Возможно файл занят иным процессом, поэтому пересохранить не получается.
Добрый день!
а если макрос не возвращает значение, то есть не функция, в процедура - тогда не получится?
Да, должна возвращать значение.
Да, можно вызвать.
Пример:
Создаём функцию на vbscript:
function test(a1,a2)
test = a1+a2
end function
В скрипте пишем:
let result = test(1,2);
Получаем, result = 3.
Можете таким макросом проверить открыт файл только для чтения или нет.
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
Попробуйте через "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
Однако, возник вопрос: как вместо условия '>3' написать выбор конкретных значений, то есть {4,6}?
Заранее спасибо!
Попробуйте "4"|"6" или (4|6)
Можно так:
1. Добавить под номером 2 - действие по запуску макроса.
2. В первом действии, при перезагрузке добавить в скрипт сохранение файла - флага перезагрузки.
3. В самом макросе проверять наличие файла-флага в директории. Пока его там нет, не завершать макрос (зациклить)
4.Как только файл появился - удалить его, и перед тем, как макрос завершит работу открыть документ QliKView через макрос.
Для поиска в API используйте приложение APIguide.qvw (устанавливается вместе с QliKView)
Второй вариант - можно повесить действие (по открытию стороннего qvw) после перезагрузки приложения из action #1.
Добрый день!
Не подскажите, что написать (или галку поставить?), чтобы и сам 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
Попробуйте открыть приложение с нажатой клавишей "Shift" . (запуск без макросов)
Пользователи используют плагин для IE? В таком случае можно использовать макрос "зуммирования" (установить триггер запуска макроса на открытие приложения):
Sub Zoom
ActiveDocument.GetApplication.WaitforIdle
ActiveDocument.ActiveSheet.FitZoomToWindow
ActiveDocument.GetApplication.WaitforIdle
ActiveDocument.ActiveSheet.ApplyZoomToAllSheets
End Sub
Можно переместить скрипт в скрытый с паролем. Тогда системный TRACE не будет выводить в окно перезагрузки информацию.
Подскажи пожалуйста как перенести файловую лицензию с одного компьютера на другой?
Вы имеете ввиду ограничение персональной версии на кол-во открытий не собственных файлов?
Можете использовать Binary для открытия чужих файлов. (правда в таком случае заберутся только данные)
Нужно в свойствах документа на вкладке "General" поменять Styling Mode на "Advanced".
Спасибо, попробую.
А чего-нибудь наподобие
try
drop table Tbl1;
except
TRACE Таблица не существует;
endв QV нет?
Нет, обработки исключений в таком виде нет.
Можно отключить реагирование на ошибки, попытаться удалить таблицу, затем опять включить реагирование на ошибки. Почитайте про ErrorMode в руководстве.
(также можно вернуть код ошибки)
Второй способ - через количество строк в таблице:
let ehhh = NoOfRows('ll');
if ehhh > 0 then
TRACE Таблица существует;
Else
TRACE Таблица не существует;
Спасибо, отлично!
а что-нибудь наподобие ShowMessage/MsgBox или print есть?
Можно в самом скрипте воспользоваться оператором TRACE и вывести нужную фразу/значение переменной в окне выполнения.
Чтобы вывести message box при выполнении кода, необходимо в нужном месте скрипта заранее обьявить и инициализировать переменную (название можно любое): let showMB = msgbox('Привет');
Значения всех переменных выводятся в нижнем блоке отладчика.
В скрипте рядом с кнопкой Reload есть Debug. При нажатии откроется отладчик.
Горячие клавиши можно посмотреть в настройках Settings - User Preference - Design. (например F8 - шаг , F5 - выполнение скрипта до точки останова/конца скрипта)
Если кликнуть левой кнопкой мыши чуть левее строки скрипта, появится красная кнопка - это точка останова.
Добрый день!
Подскажите, пожалуйста, как объявить (например, через set) переменную-массив?
Заранее спасибо!
Можно создать таблицу с 2 полями, и дальше обращаться к записям это таблицы по fieldvalue().
Также можно обьявить переменную с делимитером (например, '|' - '1|2|3|4') и дальше обращаться к каждому "элементу" через subfield().
[ Сгенерировано за 0.019 сек, 9 запросов выполнено - Использовано памяти: 1.52 Мбайт (Пик: 1.63 Мбайт) ]