23.06.2017
Эффективная Навигация М2М
Меню сайта
Категории раздела
CyberFleet Скрипты для работы [10]
Приводятся разлинчые скрипты для работы с данной программой.
CyberFleet Работа с программой [24]
Методика работы, принципы, описание
Анализитор CF [13]
Скрипты анализа CyberFleet на наличие ошибок
Форма входа
Вход через Google
Вход через Вконтакте
Вход через Facebook
Партнеры
Реклама

CyberFleet Конструктор Отчетов: основы

Статья №1 "Основы" из Цикла "Конструктор отчетов в CyberFleet"

Статья начинает использовании конструктора отчетов в версии 1.17.2.8

Рассматриваемые вопросы: 
1. Принцип работы конструктора отчетов
2. Запуск в работу конструктора отчетов
3. Создание своего первого отчета в конструкторе отчетов.
Данная статья является 1-ой из цикла статей, посвященных конструктору отчетов.

Не так давно в программе CyberFleet появилась возможность создавать свои отчеты через конструктор отчетов. Данная статья о том, как данной возможностью можно пользоваться.
В статье будет описано/проанализировано как ведется работы с Конструктором в CyberFleet 1.17.2.8

!!!Все приводимые в статье пути к файлам используются при типовой установке CyberFleet. В вашем конкретном случае они могут отличаться.

Конструктор отчетов хоть и упрощает составление запросов, но предполагает, что основы этих запросов вам знакомы. Не имея базовых понятиях об организации хранения данных вы вряд ли сможете осмысленно пользоваться данным инструментом. Однако, это ни как не мешает вам начать такие значения получать.

1. Принцип работы конструктора отчетов.


Работа конструктора построена на подготовке заранее данных сервером флита (за прошлый день) в удобоваримом для анализа виде.

Данные агрегируются (подготавливаются) посредством процедур из базы данных BN_FLEET_ATP. Конструктор отчетов позволяет (полу-)визуальными средствами подготовить запрос из этих данных (указать фильтры, способ группировки данных, сортировки, следования полей). Все данные (уже подготовленные) сохраняются в соответствующих таблицах. Каждому запросу можно сопоставить шаблон отчета (печатную форму). Шаблон (печатная форма) и запрос (выборка данных) вместе составляют "Отчет". Оный отчет и встраивается в КиберФлит (меню Отчеты - Дополнительные отчеты - ...).

Еще раз. Создаем и описываем в конструкторе отчет. После данный отчет можно будет использовать в КиберФлит-е.


Запуск процедур агрегирования (видимо) производится ядром киберфлит, путем запуска процедуры 
[BN_FLEET_ATP].[dbo].[Start_REPORT]
которая в свою очередь запускает уже в работу ЗАДАНИЕ "AllSinchronize"

Так как все задания обрабатываются посредством SQL Agent службы, то автоматически собрать данные в той методике, которая предусмотрена в указанной свыше версии CyberFleet у вас получится только для версий SQL Standart и выше...

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

Список созданных пользователем отчетов читается при запуске Клиент CyberFleet. 

Конструктор отчетов состоит из одного exe файла - M2MTelematics.ReportBuilder.exe

2. Запуск конструктора в работу


2.0. Убедитесь, что на сервере SQL работает служба SQL Agent, при подключении к серверу через Management Studio должна быть ветка Агент SQL (SQL Agent), а в списке задач (Jobs) запись AllSinchronize

2.1. Сначала следует позаботиться о том, что бы у вас были базы данных:
[BN_FLEET_ATP]
[RPTBUILDER]
нужной версии.

2.2. Нужно в таблице SYS_GlobalOption установить параметр с именем ReportBuilderEnabled в 1

можно это сделать скриптом
/****** Скрипт для команды SelectTopNRows из среды SSMS  ******/
declare @ReportBuilderEnabled varchar(8000)

SELECT @ReportBuilderEnabled=[Opt_Value]
  FROM [BN].[dbo].[SYS_GlobalOptions]
  where opt='ReportBuilderEnabled'

  if @ReportBuilderEnabled is null 
  insert into [BN].[dbo].[SYS_GlobalOptions] (Opt,[Opt_Value])
  values ('ReportBuilderEnabled','1')

  else if @ReportBuilderEnabled<>'1'
  update [BN].[dbo].[SYS_GlobalOptions]
  set [Opt_Value]=1
  where opt='ReportBuilderEnabled'

2.3. Так же надо добавить в DLLFleet.ini (хранится в папке .\DLLApp каталога серверной части CyberFleet, обычно это C:\Program Files\M2M\Cyber Fleet\Server\DLLApp) параметр AGREGATE, с указанием после равно времени запуска агрегирования для вчерашнего дня. Рекомендует запускать таки не в 00:00:00, а чуть отступив (читаем уже change_server файл для в блоке 1.17.2.6). Я поставил
AGREGATE=02:00:00
По умолчанию - AGREGATE=00:05:00 (если значение не найдено - оно будет именно таким)

Скорость обработки зависит от многих параметров, и может прилично колебаться от секунд, до десятков минут (например для 600 ТС, с малым количеством зон, с примерно 400 ДУТ это составило для меня порядка 10-20 минут на 1-и обрабатываемые сутки).

2.4. Сам конструктор для своей работы использует файл connect.udl, размещенный в каталоге клиента киберФлита. Посему его запуск возможен и на отдельном компьютере (без установленного клиента CyberFleet). Я разместил два файла (M2MTelematics.ReportBuilder.exe, Connect.udl) в отдельном каталоге на другом компьютере, изменил файл Connect.UDL (в части адреса сервера SQL) и смог пользоваться конструктором. По умолчанию файл конструктора находится в каталоге Клиента CyberFleet (C:\Program Files\M2M\Cyber Fleet\Client).

3. Создание своего первого отчета

В качестве первого отчета мы построим свой отчет о стоянках всех ТС за период.

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


Окно состоит из списка доступных для редактирования отчетов, и действий с ними (меню).

Начинаем с "Создать отчет".

При этом открывается новое окно.
Окно содержит несколько закладок для работы: 

Свойства  - тут описывается название отчета, как отчет будет представляться в CyberFleet, и описываются параметры. В нижней части закладки "Свойства" приводится список Параметров ("Параметры")- то что будет указывать пользователь перед запуском отчета (например период работы, выбирать ТС и так далее).

Так как отчет оперирует Запросами, то на каждый запрос выводится отдельная закладка. В нашем случае запрос будет один, потому закладка тоже одна ("Новый запрос"). 


Данное окно основное при редактировании отчета. Заполните данные поля, как указано на рисунке ниже


Так как программа до сих пор находится в разработке, то не все функции работают корректно, потому лучше периодически нажимать "Сохранить изменения" - это позволит вам, если что-то пойдет не так закрыть все окна, переподключиться к КО заново, и начать с места последнего сохранения.

Перейдите на закладку "Новый запрос".
Если у вас будет несколько запросов, то лучше каждому запросу давать вменяемое имя (Вменяемые и понятные названия - это вообще хорошая привычка при программировании), посему мы назовем наш запрос (впишите в поле Заголовок) "Запрос стоянок" (как на рисунке ниже).

Каждый запрос содержит внутри себя настройку:
1. Источники данных - это таблицы (может быть и результатом работы процедуры какой-либо) из которых вы выбираете данные
2. Условия запроса - это ограничение выборки данных (например обычно вам нужны данные не за весь период, а за конкретную дату/время, да и список ТС можно ограничить)
3. Дополнительное условия группировки - позволяет уточнить группировочный запрос (в данной статье не описывается).
4. Закладка Поля - позволяет настроить выводимые из таблицы данных (запроса) колонки, управлять их порядком вывода, указывать в какой последовательности выводить данные вам требуется.

Для начала, добавим в "Источники данных" таблицу.
Отметьте таблицу "Стоянки ТС и СТ", нажмите ОК под описанием таблицы

Сохраните изменения.
Таблица была добавлена в список источников данных, и получила имя table1


Теперь перейдем на закладку "Поля", и укажем, какую именно информацию из нашей таблицы мы хотим получить.

Я добавил поля:
1. Гаражный номер
2. Дата и время начала стоянки
3. Дата и время конца стоянки
4. Продолжительность стоянки, сек
5. Описание местоположения

То что получилось приводится на рисунке ниже


Сохраняем изменения.
Что бы проверить, что наш отчет способен уже работать, нажмем кнопку SQL, и в появившемся окне нажмем "Получить первые 1000 результатов"
В результате, у вас должна появиться закладка "Результат", содержащая какой-то (не более 1000) количество строк с вашими данными.


Такая проверка (через SQL и получение данные) позволяет проверить и предварительно посмотреть результат отчета. Ее рекомендуется производить перед пробой запуска отчета при его настройке. Это практически единственный быстрой способ проверить, а нет ли ни где ошибки в вашем запросе.
 
На данном этапе вы УЖЕ можете попробовать запустить отчет на выполнение, однако, можете не дождаться результатов. Потому как мы ни где не ограничили период выборки данных (то, что в предыдущем окне выглядело быстро, при попытке построить вывести в excel выдало данные в размере нескольких десятков тысяч строк).

Все дело в том, что мы нигде не поставили условие выборки данных за период - т.е. наш отчет пытается получить все возможные данные, накопленные при агрегации за все дни. Количество этих данных для разных исходных таблицах может сильно различаться.

Как уже говорилось выше, дабы пользователь что-то указал в отчете используются Параметры. Нужно добавить два параметра типа "Дата и время", где пользователь укажет время начала и окончания для выборки.
На закладке "Свойства" добавьте два параметра:
ДатаС, ДатаПо, укажите их обязательность, укажите в "Отображать как" нужный текст (данное поле отображается пользователю перед формированием запроса). Так же укажите в "Начальное значение" даты - они нам помогут при тестировании, да и пользователю понятнее, если что-то в поле ввода сразу введено.


Теперь нам нужно уже запросу объяснить, что делать с данными параметрами, т.е. как данные параметры использовать при формировании запроса. Для этого вернемся в запрос, и укажем в "Условиях запроса" для поля "Дата и время начала", что оно больше чем ДатаС (>=) и меньше чем ДатаПо (<=). Должно получиться как на рисунке.


Последовательность нажатий: Поле - выбрать table1.Дата и время начала стоянки, Операции - выбрать >=, Параметр - выбрать ДатаС, Поле - выбрать table1.Дата и время начала стоянки, Операции - выбрать <=, Параметр - выбрать ДатаПо.

Сохраните изменения в отчете.

Перейдем на закладку SQL и снова проверим работу.


Обратите внимание, что скрипт запроса теперь изменился - туда введены переменные @ДатаС, @ДатаПо, которым указано значение по умолчанию. Вы можете указывать свои значения для тестового получения данных.

В принципе можно пробовать формировать отчет в CyberFleet (перезапустите клиента) - смотреть что получилось.
Если вы все делали правильно, то у вас должна появиться таблица Excel, примерно такого содержания:
Отчет о стоянках в Excel - проблема с датой


Как вы заметили, вместо даты и времени стоит число (это представление excel о нашем дате и времени в виде числа). Для перевода в понятные нам нужно через формат ячейки изменить формат на время. Для этого выделяем колонку, правкой кнопкой вызываем Формат Ячейки, указываем время, указываем формат (как на рисунке)

Повторяем для второй колонки то же самое действие.

Теперь данные отображаются почти как надо. Еще бы уменьшить размеры названия колонок, и почти шоколадно все будет.
Для того, что бы решить обе проблемы (не указывать каждый раз формат даты, и изменить названия колонок) вернемся в наш Конструктор Отчетов.

Перейдем в закладку запроса:


Самое простое действие - это изменить название колонок, для этого нужно в графе "Название" на закладке "Поля" указать нужные вам названия. Так же можно поменять с помощью стрелок последовательность следования колонок, или добавить/удалить колонки (список колонок из которых можно добавлять определяется опять же "Источниками").

Переименуйте колонки как указано на рисунке (порядок полей я не менял):

Сохраните изменения, перезапустите отчет в Excel - как видите, проблему с длинными названия колонок мы решили.


Теперь надо разобраться с отображением даты. Для этого:
1. Щелкните на поле "Начало"
2. В нижней части в блоке "Выражение поля" нужно ввести следующую строку

Для этого, 
2.1. щелкните на table1.Дата и время начала стоянки два раза мышкой, в появившемся окне измените тип на Текст, введите строку 
' '+convert (varchar(100),
Обратите внимание, что между одинарными кавычками в начале строки стоит пробел, к кончаетяс строка запятой!!!

После нажатия ОК получиться вот так
2.2. Параметр - выбрать "table1.Дата и время начала стоянки"
2.3. Текст - ввести 
,120)
Обратите внимание, что строка должна начаться с запятой...

т.е. должно в результате получиться вот это

Сохраните изменения.

Аналогичным образом меняем и поле "Окончание", но выбираем в шаге 2.2-а Параметр "table1.Дата и время конца стоянки"

Должно получиться вот так (выделено рамкой):


Сохраним изменения.

Нажмем SQL и проверим работу скрипта - все должно быть ОК. Обратите внимание, что формат записи даты сменился на ГГГГ-ММ-ДД ЧЧ:ММ:СС

Это произошло по тому, что мы принудительно изменили отображение даты на указанный формат. Более подробно вы можете почитать про функцию convert на MSDN. А пробел в начале строки (в кавычках) нам потребовался для того, что бы принудительно задать формат "строка" для передачи даты в Excel (иначе оно обратно в число конвертируется)

В результате у Вас должен получиться вот такой скрипт в окне SQL:
declare @ДатаС DateTime
/*Дата с*/ select @ДатаС = '10.02.2013'
declare @ДатаПо DateTime
/*Дата по*/ select @ДатаПо = '11.02.2013'
-- *** >>>>>> Секция специальных пользовательских переменных >>>>>> *** --
DECLARE @TimeZoneDifference INT; 
SET @TimeZoneDifference = 0; -- Разница в часах между часовым поясом выбранным пользователем и часовым поясом сервера
-- *** <<<<<< Секция специальных пользовательских переменных <<<<<< *** --


SELECT  table1.[ObjectGarNum] as [Гаражный номер]
, ' '+convert(varchar(100), table1.[TeleTimeBegin] ,120) as [Начало]
, ' '+convert(varchar(100), table1.[TeleTimeEnd] ,120) as [Окончание]
, table1.[Duration] as [Длит, сек]
, table1.[Location] as [Место]
FROM BN_FLEET_ATP.dbo.REPORT_Stops  table1
WHERE  table1.[TeleTimeBegin] >= @ДатаС AND table1.[TeleTimeBegin] <= @ДатаПо

Если все вы сделали так же, как я, то в результате у вас отчет должен принять удобоваримый вид.

Читать следующую статью >> "Описание источников данных"


Напишите, о чем по вашему мнению следует писать дальше, например мне видятся темы в продолжение:

1. Несколько таблиц в одном запросе (как их объединять)
2. Добавление своих таблиц как источников данных
3. Описание структуры базы данных используемой Конструктором отчетов (как оно работает).
4. Использование параметров как фильтров
5. Ваши предложения....

Для обсуждения данного цикла статей и работы с конструктором отчетов создана тема на форуме работа с Конструктором отчетов на форуме

Рекомендуется к изучению: Цикл статей "SQL - Учимся работать" - описываются базовые приемы работы с SQL.

Писать более глубокие отчеты без специфичных знаний у вас вряд ли получится. На изучение базовых моментов времени потребуется не много.




Источник: CyberFleet, отчеты, конструктор, свои отчеты,запросы, КО
Похожие материалы
Категория: CyberFleet Работа с программой | Добавил: logoff (12.02.2013) | Автор: Бондарь Михаил W
Просмотров: 2562 | Теги: отчеты, конструктор, CyberFleet | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
TOP 10 Популярное
1 Оборудование> Гранит-Навигатор 4.14
2 Оборудование> Абонентский терминал M2M Cyber GLX
3 Оборудование> Гранит-Навигатор 4.14: Настройка терминала
4 Прочее> "Красные" против "Синих" - статистка космических запусков России (СССР) и США
5 CyberFleet, CrossPoint> КиберФлит: Учет топлива при помощи датчиков
6 CyberFleet, CrossPoint> CyberFleet: Переустановка CyberFleet
7 Оборудование> M2M Cyber GLX: отправка команд
8 Прочее> SQL: CyberFleet: Занятие №3 Объединение таблиц Часть 1/2 (теория, inner join)
9 CyberFleet, CrossPoint> КиберФлит: Причины расхождения пробега по данным одометра и карте
10 CyberFleet, CrossPoint> КиберФлит: Подключаем карту Google
Наш опрос
Что вы используете чаще всего для удаленного доступа к рабочему столу?
Всего ответов: 20
LogOff © 2017
Сайт создан в системе uCoz Рейтинг GPS Клуба. GPS навигаторы. GPS мониториг. GPS трекеры. ГЛОНАСС