Фильтрация алармов при выгрузке в отчет (SQL)

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

Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение 169409 » Вт авг 16, 2016 2:01 pm

Столкнулся с проблемой, на сколько я понял, длины запроса SQL.

Сделал форму выгрузки отчетов в эксель, использовал:
wwwGenericDataGrid - для выгрузки
DTPicke - календарь для удобного выбора даты
AlarmTreeViewerCtrl - для удобного выбора названия группы алармов

что получилось:
#Grid3.SQLString = "select * from v_AlarmHistory where (EventStamp >= ' "+AlarmHistory_Start+" ' and EventStamp <= ' "+AlarmHistory_Stop+" ')";
где AlarmHistory_Start и AlarmHistory_Stop стринговые теги с датой и временем, получаемые из DTPicke
все хорошо работает


Alarm_Name = #AlarmTreeViewerCtrl3.GetSelectedElementName (); - выборка имени группы из AlarmTreeViewerCtrl
#Grid3.SQLString = "select * from v_AlarmHistory where v_AlarmHistory.Area = Alarm_Name "; - формирование отчета по имени группы
так же все работает

Но как только я попытался объединить эти запросы, столкнулся с кучей разных ошибок (в зависимости от того, как объединял). В целом я так понял что интачу не нравится слишком большая длина запроса, можно ли это как то обойти?
169409
 
Сообщения: 34
Зарегистрирован: Чт дек 20, 2012 1:46 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение Генератор зла » Вт авг 16, 2016 2:21 pm

InTouch не поддерживает строки более 131 символа.
Длинный запрос надо запихивать либо в хранимую процедуру БД SQL, либо "закопать" в wwGenericDataGrid.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение 169409 » Вт авг 16, 2016 3:17 pm

А нельзя ли как то разделить строки?
Или выполнить процедуру последовательно с сохранением первого результата т.е. сначала фильтруем по дате, а потом произвести выборку только тех строк, где присутствует имя аларма?
169409
 
Сообщения: 34
Зарегистрирован: Чт дек 20, 2012 1:46 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение Генератор зла » Вт авг 16, 2016 3:24 pm

Можно.
Для этой цели в InTouch есть ф-ция SQLAppendStatement()
А в wwGenericSQLGrid есть метод SQLStringAppend()
О чём я и толковал.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение 169409 » Вт авг 16, 2016 3:33 pm

А не подскажите, где можно мануал по синтаксису и использованию найти? А то я по своей документации прошелся, не нашел совпадений.
169409
 
Сообщения: 34
Зарегистрирован: Чт дек 20, 2012 1:46 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение Генератор зла » Вт авг 16, 2016 3:36 pm

169409 писал(а):по синтаксису и использованию

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

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение 169409 » Вт авг 16, 2016 3:38 pm

SQLAppendStatement()
SQLStringAppend()
169409
 
Сообщения: 34
Зарегистрирован: Чт дек 20, 2012 1:46 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение Генератор зла » Вт авг 16, 2016 3:42 pm

SQLAppendStatement() - стд. ф-ция InTouch, см. Help
SQLStringAppend()
https://cloud.mail.ru/public/4jRe/BNBQ5oHxh
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение 169409 » Вт авг 16, 2016 3:43 pm

#Grid1.SQLString = "SELECT EventStamp,TagName,";
#Grid1.SQLStringAppend("Value,Area FROM v_AlarmHistory");
#Grid1.SQLStringAppend("WHERE(EventStamp <= ' "+ StartData +" ' ");
#Grid1.SQLStringAppend("AND EventStamp <= ' "+ EndData +" ' ");
#Grid1.Execute();

поискал по форуму, был подобный вопрос с таким вот синтаксисом. Я правильно понял что SQLStringAppend последовательно подсовывает часть строки и исполняет ее?
169409
 
Сообщения: 34
Зарегистрирован: Чт дек 20, 2012 1:46 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение 169409 » Вт авг 16, 2016 3:46 pm

Генератор зла писал(а):SQLAppendStatement() - стд. ф-ция InTouch, см. Help
SQLStringAppend()
https://cloud.mail.ru/public/4jRe/BNBQ5oHxh


Спасибо.
169409
 
Сообщения: 34
Зарегистрирован: Чт дек 20, 2012 1:46 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение Генератор зла » Вт авг 16, 2016 3:47 pm

169409 писал(а):Я правильно понял что SQLStringAppend последовательно подсовывает часть строки и исполняет ее?

Нет, не правильно. Исполняет строку совсем другой оператор.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение 169409 » Чт авг 18, 2016 3:38 pm

SQLStringAppend() не работает вообще, просто ругается что не знает такого метода. Перепробовал все, начиная с простейших запросов, даже с пустой строкой.
169409
 
Сообщения: 34
Зарегистрирован: Чт дек 20, 2012 1:46 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение Генератор зла » Чт авг 18, 2016 5:06 pm

Для какого эл-та Вы используете этот метод?
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Фильтрация алармов при выгрузке в отчет (SQL)

Сообщение 169409 » Пт авг 19, 2016 1:54 pm

Для датагрида, как вы и написали.

Я уже разобрался как строчки объединять, вчера все получилось.
Спасибо за подсказки :)
169409
 
Сообщения: 34
Зарегистрирован: Чт дек 20, 2012 1:46 pm


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

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

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