Программа для подготовки, планирования и управления производством

+7 (495) 545-21-83
info@vogbit.ru
Закрыть
Логин:
Пароль:


Забыли свой пароль?
  Войти      Регистрация

Поговорим о QueryViewer

 

Поговорим о QueryViewer

Сегодня я, наконец, нашел время собраться с мыслями и посвятить это сообщение описанию такого передового инструмента системы TCS как QueryViewer. Много раз до этого я отрывочно описывал некоторые возможности на форуме, не один раз обещался выложить полную документацию.
А сегодня вдруг решил, что гораздо оперативнее и удобнее выложить всю информацию в формате блога. Во-первых, здесь же я смогу ответить на возникающие вопросы и подробнее прокомментировать некоторые моменты при необходимости. А во-вторых, появление новой версии QueryViewer, которую мы ожидаем в недалеком будущем, опять же, ознаменуется новым сообщением в блоге.

Итак, что же это такое QueryViewer.
Это компонент системы TCS, предназначенный для отображения на экране (или в печатном документе) любых интересующих данных, в виде таблицы с группировками или в виде диаграмм.

Вот иллюстрации сказанного:

Фактические данные по закрытым работниками нормачасам
Фактические данные по загрузке оборудования
Фактические данные по выявленному браку и его причинам
Плановые данные по необходимым материалам
График производства в виде диаграммы Гантта

Те кто внимательно смотрел видеоматериалы на нашем сайте, наверное, уже догадались, что именно QueryViewer там задействован во многих задачах (особенно в последних роликах) как основной инструмент. smile;)

В общем, инструмент получился хорош со всех сторон: гибко и легко настраивается и удобно пользоваться. smile:D

Далее, изложу подробнее техническую информацию для инженеров тех. поддержки и технических специалистов, настраивающих TCS у себя на предприятиях. smile8)

Чтобы запустить QueryViewer на исполнение в своем макросе, необходимо всего пару строк:
Код
Set comDll = CreateObject("QueryViewer") - Создаем объект

Call comDll.ShowViewer( tcsApp,  QueryText, FormCaption, ShowType, StatusText, 
IsEnabledbtnQueryEditor, RefreshButtonVisible, SaveButtonVisible, 
PrintButtonVisible, SelectButtonVisible, ShowTypeButtonVisible, ShowGroupPanel, View,
dModule, FormWindowState, Width, Height ) - Запускаем QueryViewer

Теперь поясню про множество параметров в строке запуска.

В начале два обязательных параметра:

tcsApp - объект, родительское приложение TCS Производство, т.е. всегда, не задумываясь, пишем здесь TCSApp.

QueryText - строка, содержащая запрос, вытаскивающий нужные данные, например “SELЕCT * FRОM V_SHOPS”. О некоторых фишках, которые можно использовать в запросе для QueryViewer, расскажу подробнее в следующий раз.

Далее, необязательные параметры:

FormCaption - строка, заголовок модального окна QueryViewer.

ShowType - может принимать значения 1 или 2, 1 - для отображения результата в виде таблицы с данными (по умолчанию), 2 - для отображения результатов в виде диаграммы.

StatusText - строка, текст строки статуса (находится внизу окна).

IsEnabledbtnQueryEditor - логический, управляет отображением кнопки “Текст запроса” на панели QueryViewer. Данная команда позволяет в run-time режиме смотреть, редактировать и выполнять запрос. Очень удобно пользоваться в период отладки. После отладки, когда макрос будут использовать простые пользователи, конечно, данную возможность лучше отключить.
Уточнение, данная команда будет оторбражаться, только если параметр ShowTypeButtonVisible также установлен как True.

RefreshButtonVisible - логический, управляет отображением кнопки “Обновить”.

SaveButtonVisible - логический, управляет отображением кнопки “Сохранить”.

PrintButtonVisible - логический, управляет отображением кнопки “Печать”.

SelectButtonVisible - логический, управляет отображением кнопки “Выбрать”. Работает только в режиме отображения данных (т.е. когда ShowType = 1). Команда “Выбрать” нужна для подтверждения пользователем выбора выделенных срок. Данные всех выбранных строк сохраняются в выходной параметр dModule.

ShowTypeButtonVisible - логический, управляет отображением кнопки “Вид”. Данная команда переключает вид отображения данных на форме QueryViewer таблица или диаграмма.

ShowGroupPanel - логический, управляет отображением области группировки в режиме таблицы с данными (т.е. когда ShowType = 1).

View - числовой, определяет тип диаграммы в режиме отображения диаграмма (т.е. когда ShowType = 2). Подробнее про отображение данных в виде диаграммы расскажу в следующих сообщениях.
Этот параметр может принимать следующие значения:
0 - Столбцы (Bar);
1 - Столбцы с накоплением (StackedBar);
2 - Столбцы с накоплением отнормированные (FullStackedBar);
3 - Объёмные столбцы (Bar3D);
4 - Объёмные стольцы с накоплением (StackedBar3D);
5 - Объёмные столбцы с накоплением отнормированные FullStackedBar3D
6 - Манхэттенская диаграмма (ManhattanBar);
7 - Точечный график (Point);
8 - Линейный график (Line);
9 - Шаговая линия (StepLine);
10 - Сплайн (Spline);
11 - Объёмный график (Line3D);
12 - Объёмный шаговый график (StepLine3D);
13 - Объёмный сплайн (Spline3D);
14 - Области (Area);
15 - Области с накоплением (StackedArea);
16 - Области с накоплением отнормированные (FullStackedArea);
17 - Сплайн области (SplineArea);
18 - Сплайн области с накоплением (StackedSplineArea);
19 - Сплайн области с накоплением отнормированные (FullStackedSplineArea);
20 - Объёмные области (Area3D);
21 - Объёмные области с накоплением (StackedArea3D);
22 - Объёмные области с накоплением отнормированные (FullStackedArea3D);
23 - Объёмные сплайн области (SplineArea3D);
24 - Объёмные сплайн области с накоплением (StackedSplineArea3D);
25 - Объёмные сплайн области с накоплением отнормированные (FullStackedSplineArea3D);
26 - Круговая диаграмма (Pie);
27 - Кольцевая диаграмма (Doughnut);
28 - Объёмная круговая диаграмма (Pie3D);
29 - Объёмная кольцевая диаграмма (Doughnut3D);
30 - Биржевая диаграмма (Stock);
31 - Биржевая диаграмма с курсами (CandleStick);
32 - Гистограмма (RangeBar);
33 - Двусторонняя гистограмма (SideBySideRangeBar);
34 - Диаграмма Ганта (Gantt);
35 - Двусторонняя диаграмма Гантта (SideBySideGantt);
36 - Точечный график в радарной системе координат (RadarPoint);
37 - Линейный график в радарной системе координат (RadarLine);
38 - Области в радарной системе координат (RadarArea);
39 - Точечный график в полярной системе координат (PolarPoint);
40 - Линейный график в полярной системе координат (PolarLine);
41 - Области в полярной системе координат (PolarArea);

dModule - объект TCS класса DModule, по умолчанию Nothing. Если при запуске QueryViewer dModule уже ссылается на какой-то объект, тогда QueryViewer игнорирует запрос, прописанный в строке QueryText, а на форме выводится содержание dModule. Если dModule = Nothing, тогда QueryViewer выполняет запрос из строки QueryText.
После закрытия формы QueryViewer с помощью кнопки “Выбрать” (т.е. на выходе), в объект dModule сохраняются данные выбранных пользователем строк. Далее, в коде скрипта dModule можно обрабатывать обычными средствами.

FormWindowState - может принимать значения “Normal” или “Maximaze”, управляет способом отображения на экране формы QueryViewer при запуске: максимально на весь экран или окно с заданными размерами.

Width - числовой, определяет ширину формы QueryViewer на экране в пикселях, если FormWindowState = “Normal”, по умолчанию 600.

Height - числовой, определяет высоту формы QueryViewer на экране в пикселях, если FormWindowState = “Normal”, по умолчанию 400.

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

Код
Sub FormMacro_Example1(TCSActiveModule) ' Пример 1

Dim QueryText

Call TCSApp.HideProgressMessage 

QueryText = "SELECT * FRОM V_SHOPS; "

LogObject.ScriptTimeOut = 0        

    Const FormCaption = "Пример 1 (Подразделения)"
    Const ShowType = 1
    Const StatusText = "Пример 1"
    Const IsEnabledbtnQueryEditor = True          
    Const RefreshButtonVisible = True
    Const SaveButtonVisible = True
    Const PrintButtonVisible = True
    Const SelectButtonVisible = True  
    Const ShowTypeButtonVisible = True   
    Const ShowGroupPanel = True
    Const View = 0
    Const dModule = Nothing
    Const FormWindowState = "Normal"
    Const Width = 800
    Const Height = 600

    Dim comDll  
    Set comDll = CreateObject("QueryViewer")
    If comDll Is Nothing Then
        Call TCSApp.ShowErrorMessage("Отсутствует или не зарегистрирована библиотека QueryViewer.dll")
    Else
        Call comDll.ShowViewer( tcsApp,  QueryText, FormCaption, ShowType, StatusText, IsEnabledbtnQueryEditor, RefreshButtonVisible, SaveButtonVisible, _
         PrintButtonVisible, SelectButtonVisible, ShowTypeButtonVisible, ShowGroupPanel, View, dModule, FormWindowState, Width, Height )
    End If
    Set comDll = Nothing

End Sub


Думаю, на сегодня хватит, и так пост получился довольно большой. В следующий раз обязательно продолжу, так как рассказано далеко не всё. А для тех, кому нетерпиться smile;), могу порекомендовать познакомиться с примерами в демонстрационной БД. Там, в режимах Работа с ПСП - Список ПСП, План производства - Отчёт о трудоёмкости, План производства - План изготовления, План производства - Фактическое изготовление есть много примеров и образцов для подражания.
Неудобно
Нет возможности использования скриптов, которые есть в атавизме UserGmodule
30.12.2010 14:03:48
Согласен
Касаемо использования скриптов и своих команд - хорошее направление для развития, тут есть над чем поработать. Мы тоже над этим думали, только пока не так просто это всё осуществить.
07.02.2011 13:59:03
Не срабатывает пример
Копирую ваш пример("Пример 1") один в один. В результате запуска выдается вот такая ошибка:
Код
Недопустимое число аргументов или присвоение значения свойства: 'comDll.ShowViewer'
Ошибка выполнения Microsoft VBScript
07.02.2011 16:03:31
Может быть дело в версии библиотеки?
14.07.2011 10:24:06
Таже ошибка на сробатывает пример 1
Пишет:
Недопустимое число аргументов или присвоение значения свойства: 'FormMacro_Example1'
Ошибка выполнения Microsoft VBScript
Подскажите в чем причина.
Префиксы.
Не плохо было бы написать все префиксы которые можно использовать в запросах и что они означают. (пример *SUM* - сумма)