Получить SQL запрос AlarmDBLogger'a

Интегрованная среда разработки (IDE) промышленных приложений.

Получить SQL запрос AlarmDBLogger'a

Сообщение Diogen » Вт сен 06, 2016 2:42 pm

Здравствуйте! Такой вопрос у меня возник. Отфильтровал я, по дате и приоритету записи об алармах. Получил вывод в AlarmDBLogger, могу ли я как то получить SQL запрос, которым AlarmDBLogger получил эти записи? Может функция какая то есть или еще что?
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Получить SQL запрос AlarmDBLogger'a

Сообщение Генератор зла » Вт сен 06, 2016 3:50 pm

Diogen писал(а):Получил вывод в AlarmDBLogger

Наверное, всё-аки в AlarmDBView Control.
Diogen писал(а):могу ли я как то получить SQL запрос, которым AlarmDBLogger получил эти записи?

AlarmDBView Control запрашивает БД. Посмотреть запрос можно попробовать по ПКМ на контроле и там что-нибудь связанное с Query. Либо ср-вами MSSQL
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Получить SQL запрос AlarmDBLogger'a

Сообщение Diogen » Вт сен 06, 2016 6:54 pm

Генератор зла писал(а):Наверное, всё-аки в AlarmDBView Control.

Да, конечно вы правы.
Генератор зла писал(а):AlarmDBView Control запрашивает БД. Посмотреть запрос можно попробовать по ПКМ на контроле и там что-нибудь связанное с Query. Либо ср-вами MSSQL

Не, мне не одноразово посмотреть надо, а чтобы в автоматическом режиме, нажал кнопку - применить фильтр, увидел записи и запрос, который эти записи выдергивает.
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Получить SQL запрос AlarmDBLogger'a

Сообщение Генератор зла » Вт сен 06, 2016 9:01 pm

Diogen писал(а):е, мне не одноразово посмотреть надо, а чтобы в автоматическом режиме, нажал кнопку - применить фильтр, увидел записи и запрос, который эти записи выдергивает.

Пишите свой контрол.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Получить SQL запрос AlarmDBLogger'a

Сообщение LexSL » Чт сен 08, 2016 2:53 pm

Diogen писал(а):Получил вывод в AlarmDBLogger, могу ли я как то получить SQL запрос, которым AlarmDBLogger получил эти записи?

Сам в свое время задавался этим вопросом, на сервере запустил MS SQL Profiler и отловил запрос, итого:
1. Если AlarmDBView Control настроен на отображение только алармов, то запрос в базу WWALMDB идет следующий (запрос из представления (View) v_AlarmHistory2):
Код: Выделить всё
SELECT *,
DATEPART(yyyy, EventStamp) AS 'Year',
DATEPART(mm, EventStamp) AS 'Month',
DATEPART(dd, EventStamp) AS 'Day',
DATEPART(hh, EventStamp) AS 'Hour',
DATEPART(n, EventStamp) AS 'Minute',
DATEPART(s, EventStamp) AS 'Second' ,
DATEPART(yyyy, EventStampUTC) AS 'UTCYear',
DATEPART(mm, EventStampUTC) AS 'UTCMonth',
DATEPART(dd, EventStampUTC) AS 'UTCDay',
DATEPART(hh, EventStampUTC) AS 'UTCHour',
DATEPART(n, EventStampUTC) AS 'UTCMinute',
DATEPART(s, EventStamp) AS 'UTCSecond',
MilliSec AS 'UTCMilliSecond'
from  dbo.v_AlarmHistory2
WHERE ( EventStamp >='{0}' and EventStamp <= '{1}')
ORDER BY EventStampUTC DESC ,MilliSec DESC
   

{0} и {1} - это соответственно дата начала периода и дата конца (формат такой = 2001-01-31 00:00:01)

2. Если AlarmDBView Control настроен и на алармы и на события, то запрос идет в том же виде, только уже из представления v_AlarmEventHistory2.
3. Соответственно, события -> v_EventHistory

Фильтрация по группам алармов, соответственно в условие where пишется:
Код: Выделить всё
where (Area like N'%Группа%' and EventStamp >='{0}' and EventStamp <= '{1}')
LexSL
 
Сообщения: 80
Зарегистрирован: Вт дек 14, 2010 2:53 pm

Re: Получить SQL запрос AlarmDBLogger'a

Сообщение Diogen » Чт сен 08, 2016 2:57 pm

О, спасибо большое!
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Получить SQL запрос AlarmDBLogger'a

Сообщение LexSL » Чт сен 08, 2016 5:23 pm

Мне не понравился стандартный компонент AlarmDBView Control - имеется в виду, что у него настройка цветов для алармов и событий для меня была недостаточной
Вот пример, разбивка алармов по приоритетам:
150 - аварийные
300 - предупредительные
600 - нет связи
601 - неисправность устройства
602 - неисправность канала
Так вот, для ушедших алармов (UNACK_RTN, ACK_RTN) цвет текста и фона задается для всех приоритетов одновременно, т.е. непонятно - ушедший аларм было аварийным или предупредительным или каким другим. Конечно, в базу данных пишется поле Type = (HiHi, Hi и проч.), но отображать оператору эти "непонятные буковки" :) я не стал.
Поэтому написал приложение на WPF (использовал DataGrid и стили для отображения алармов разных приоритетов), а также отдельную хранимую процедуру в базе данных WWALMDB.

Код: Выделить всё
CREATE PROC [dbo].sp_AlarmsView
@StartDate datetime, @EndDate datetime
AS
 SET NOCOUNT ON;
SELECT wwAlmDb.*,
   TypeRus =
        case
        when (wwAlmDb.Priority >=1 AND wwAlmDb.Priority <=150) then N'Нарушение аварийной уставки'
        when (wwAlmDb.Priority >150 AND wwAlmDb.Priority <=300) then N'Нарушение предупредительной уставки'
        when (wwAlmDb.Priority = 600 ) then N'Нет связи'
        when (wwAlmDb.Priority = 601 ) then N'Неисправность устройства'
        when (wwAlmDb.Priority = 602 ) then N'Неисправность в измерительном канале'       
        when (wwAlmDb.Priority = 700 ) then N'Оборудование'               
        else type
        END,
        StateRus =
        case
        when (wwAlmDb.AlarmState = N'UNACK_ALM') then N'Пришло'
        when (wwAlmDb.AlarmState = N'UNACK_RTN') then N'Ушло (не снятым)'
         when (wwAlmDb.AlarmState = N'ACK_ALM') then N'Снятие тревоги'
         when (wwAlmDb.AlarmState = N'ACK_RTN') then N'Ушло (снятым)'
        else AlarmState
        end
FROM
  dbo.v_AlarmEventHistory2 wwAlmDb
where
wwAlmDb.EventStamp >= @StartDate and wwAlmDb.EventStamp < @EndDate
order by EventStamp desc
LexSL
 
Сообщения: 80
Зарегистрирован: Вт дек 14, 2010 2:53 pm

Re: Получить SQL запрос AlarmDBLogger'a

Сообщение Diogen » Пт сен 09, 2016 12:39 am

LexSL писал(а):Поэтому написал приложение на WPF (использовал DataGrid и стили для отображения алармов разных приоритетов)

А можно немного подробнее, с этого момента? Сам изучал ради интереса WPF, дошел до паттерна MVVM, вроде разобрался, что там и куда, для простых приложений, но для более сложного пришлось изучать фреймворки, на этом бросил. Объясните, хоть в двух словах примерно, как пишутся контролы для InTouch?
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Получить SQL запрос AlarmDBLogger'a

Сообщение LexSL » Пт сен 09, 2016 4:42 pm

Diogen писал(а):А можно немного подробнее, с этого момента?

Приложение написано на C# по технологии WPF, выглядит вот так:
AppAlarmDbView.png
(64.61 КБ) Скачиваний: 0

Как я уже писал, применены разные стили для разных алармов с разбивкой по приоритетам и статусу сообщения (пришло, ушло, ушло квитированным, ушло не квитированным)
Это достаточно просто делается в xaml - надо просто применять селектор шаблонов для строк в DataGrid.
Приложение использует данные, полученные из хранимой процедуры , текст которой я уже приводил...у меня правда она немного модифицирована, она дополнительно делает выборку из справочника тегов и выдает дополнительную информацию: где размещено устройство в "поле", описание параметра и проч.
Приложение как я сказал, совершенно отдельная сущность от Интача, запускается оператором по кнопке.

Свои контролы для Интача можно писать, мной проверено неоднократно, писать можно хоть на C++, C# под .Net 3.5.
вот ссылка , где я делился опытом создания
тынц
LexSL
 
Сообщения: 80
Зарегистрирован: Вт дек 14, 2010 2:53 pm

Re: Получить SQL запрос AlarmDBLogger'a

Сообщение Diogen » Пт сен 09, 2016 8:25 pm

Спасибо! Буду изучать.
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm


Вернуться в Development Studio & FactorySuite A&#178;

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3