Выборка

Вопросы, не попадающие в другие разделы.

Выборка

Сообщение Blaze » Пн окт 06, 2008 6:57 pm

Требуется, чтобы Табло исторических алармов (AlmDbViewCtrl) отображал только данные за конкретный промежуток времени. Щелкать мышью на табло и вызывать контекстно меню нельзя.
Промежутки времени задаем вручную.
Подскажите кто-нибудь текст запроса (выдавать все алармы из базы от дата/время 1 до дата/время 2).
Blaze
 
Сообщения: 66
Зарегистрирован: Пн июн 23, 2008 6:34 pm

Re: Выборка

Сообщение FreeMan42 » Вт окт 07, 2008 7:49 am

Blaze писал(а):Требуется, чтобы Табло исторических алармов (AlmDbViewCtrl) отображал только данные за конкретный промежуток времени. Щелкать мышью на табло и вызывать контекстно меню нельзя.
Промежутки времени задаем вручную.
Подскажите кто-нибудь текст запроса (выдавать все алармы из базы от дата/время 1 до дата/время 2).


Нужно просто поглядеть в свойства AlmDbViewCtrl (закладка Properties) там есть поля EndTime и StartTime (тип данных message) просто в поле Associated Tag укажи на переменные в базе, и потом просто ложи дату и время начала и конца.
FreeMan42
 
Сообщения: 26
Зарегистрирован: Пн дек 24, 2007 2:48 pm

Re: Выборка

Сообщение Blaze » Вт окт 07, 2008 1:08 pm

Ок, все работает.
Интересно, а нет ли в InTouch компонента, позволяющего удобно визуально выбирать время и число?
Blaze
 
Сообщения: 66
Зарегистрирован: Пн июн 23, 2008 6:34 pm

Сообщение DoTT » Вт окт 07, 2008 2:25 pm

Интересно, а нет ли в InTouch компонента, позволяющего удобно визуально выбирать время и число?
Компонента стандартного нет, но очень удобно использовать Актив-Х, называется он DateTimePicker или DateAndTimePicker.
DoTT
 
Сообщения: 12
Зарегистрирован: Пн июн 09, 2008 6:15 pm

Сообщение Blaze » Вт окт 07, 2008 4:09 pm

Не совсем удобно. Т.к. формат дат в компонентах не совпадает. Если же Piсker изменить формат, то отображаться он будет верно, а вот свойство Value не изменится (а ведь именно это свойство мы ассоциируем с тегом).
Если же изменить формат в AlmDbViewCtrl, то выборки вообще некорректно выполняются.
Blaze
 
Сообщения: 66
Зарегистрирован: Пн июн 23, 2008 6:34 pm

Сообщение Blaze » Вт окт 07, 2008 5:35 pm

Все, я написал скрипт, решающий проблему.
Blaze
 
Сообщения: 66
Зарегистрирован: Пн июн 23, 2008 6:34 pm

Сообщение FreeMan42 » Ср окт 08, 2008 7:46 am

Blaze писал(а):Все, я написал скрипт, решающий проблему.

Ну поделись если нежалко.. может кому пригодится!
FreeMan42
 
Сообщения: 26
Зарегистрирован: Пн дек 24, 2007 2:48 pm

Сообщение Blaze » Чт окт 09, 2008 8:10 pm

В DTPicker выбираю формат Custom MM:dd:yyyy HH:mm:ss.
Time по умолчанию ставлю 00:00:01, иначе его сразу не будет видно.
Value в обоих компонентах присваиваю теги типа message (TimeBefore и TimeAfter).

В AlmDbViewCtrl ставлю галочку Use Specific Time, для EndTime и StartTime также присваиваю теги (TimeBefore_end и TimeAfter_end).

Для кнопки, выполняющей выбор пишу скрипт Action (сначала разбиваю строки на части и соединяю в другом порядке)
TimeB_1 = StringMid(TimeBefore, 1, 2);
TimeB_2 = StringMid(TimeBefore, 4, 2);
TimeB_3 = StringMid(TimeBefore, 7, 4);
IF StringLen(TimeBefore) == 19 THEN {* если кол-во часов - 2 цифры*}
TimeB_4 = StringMid(TimeBefore, 12, 2);
TimeB_5 = StringMid(TimeBefore, 15, 2);
TimeB_6 = StringMid(TimeBefore, 18, 2);
ELSE
IF StringLen(TimeBefore) == 18 THEN {* если кол-во часов - 1 цифра*}
TimeB_4 = "0" + StringMid(TimeBefore, 12, 1);
TimeB_5 = StringMid(TimeBefore, 14, 2);
TimeB_6 = StringMid(TimeBefore, 17, 2);
ENDIF;
ENDIF;

TimeA_1 = StringMid(TimeAfter, 1, 2);
TimeA_2 = StringMid(TimeAfter, 4, 2);
TimeA_3 = StringMid(TimeAfter, 7, 4);
IF StringLen(TimeAfter) == 19 THEN
TimeA_4 = StringMid(TimeAfter, 12, 2);
TimeA_5 = StringMid(TimeAfter, 15, 2);
TimeA_6 = StringMid(TimeAfter, 18, 2);
ELSE
IF StringLen(TimeAfter) == 18 THEN
TimeA_4 = "0" + StringMid(TimeAfter, 12, 1);
TimeA_5 = StringMid(TimeAfter, 14, 2);
TimeA_6 = StringMid(TimeAfter, 17, 2);
ENDIF;
ENDIF;

TimeBefore_end = TimeB_2 + "/" + TimeB_1 + "/" + TimeB_3 + " " + TimeB_4 + ":" + TimeB_5 + ":" + TimeB_6;
TimeAfter_end = TimeA_2 + "/" + TimeA_1 + "/" + TimeA_3 + " " + TimeA_4 + ":" + TimeA_5 + ":" + TimeA_6;

#AlmDbViewCtrl1.Refresh();

Т.к. галочка Use Specific Time стоит, то при Refresh происходит выборка.

Если ничего не забыл, то это все.
Blaze
 
Сообщения: 66
Зарегистрирован: Пн июн 23, 2008 6:34 pm


Вернуться в Другое

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

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