Приветствую Вас, Гость · Вход · Регистрация

Главная » Файлы » MicroSCADA » Примеры кода

Пример записи в БД
[ ] 09.04.2010, 02:24
@sss=sql_connect("adata","scada","") ;открываем сессию к источнику ADATA на SQL сервере
@conn=sss:vconnection_id ;запоминаем номер конекции

;@table_name="tbl_ТИТ_"+dec(month,1)+"_"+dec(year,1) ;формируем имя таблицы ТИТ
@table_name="Измерения_"+dec(day,1)+"_"+dec(month,1)+"_"+dec(year,1) ;формируем имя таблицы ТИТ
;@table_name="'ln'" ;формируем имя таблицы ТИТ

;TESTING OI
@OI_TEST=LOCATE(%OI,",")
#IF %OI_TEST<>0 #THEN #BLOCK
@OI_COMM=SUBSTR(%OI,%OI_TEST,1)
@STR_TXT=REPLACE(%OI,%OI_COMM," ")
@STR_OI=SEPARATE(%STR_TXT,",")
#BLOCK_END

#ELSE_IF %OI_TEST==0 #THEN #BLOCK
@STR_OI=SEPARATE(%OI,",")
#BLOCK_END

;готовим переменные для записи в БД
@s_rt=" '' "+ collect(vector(times(%t)), " ") +" '' " ;преобразуем время в вектор, затем в текст и добавим апострофы
@s_oi=" '' "+ collect(vector(%oi), " ") +" '' " ;преобразуем OI в вектор, затем в текст и добавим апострофы
@s_ov=" '' "+ collect(vector(dec(%ov,6,3)), " ") +" '' " ;преобразуем OV в вектор, затем в текст и добавим апострофы
@s_ln=" '' "+ %tmp_ln +" '' " ;добавим апострофы k LN

;пишем в БД
@result=sql_execute(%conn,"INSERT INTO 'table_name'(datatime, object, value, LN) VALUES('s_rt','s_oi','s_ov','s_ln')")

#if result:vstatus==SQL_SUCCESS OR-
result:vstatus==SQL_SUCCESS_WITH_INFO-
#then #block
@k=sql_disconnect(%conn) ;закрываем сессию
#block_end

#else #block
@table=sql_execute(%conn,"CREATE TABLE 'table_name'(datatime char(50), object char(30), value char(30), LN char(15) )")
#block_end

Категория: Примеры кода | Добавил: Jmp
Просмотров: 1215 | Загрузок: 0 | Комментарии: 5
Всего комментариев: 5
22.11.2012
5. Dimka [Материал]
Спасибо, примерно понятно, в каком направлении копать. Пойду дальше документацию читать

22.11.2012
4. Dimka [Материал]
Хорошо. Но событий очень много. Каждая из 40 (например) отходящих ячеек может выдать по 10-15 событий (срабатывание, МТЗ, ТО, ДЗ и т.д.). Неужели, в каждом из обработчкиков событий писать эту процедуру? Или, может быть, можно отслеживать события прямо в буфере событий?
Ответ: создаете канал событий один, к нему привязываете эту процедуру и все объекты процессов привязываете к этому каналу событий (по изменению)
желательно база должна быть не Access, а SQL или Oracl

22.11.2012
3. Dimka [Материал]
... если запускать приведенную процедуру с заданным интервалом
Ответ: можно привязать к каналу времени, а можно выполнять по событию

22.11.2012
2. Dimka [Материал]
Подскажите, а как правильно настроить запись в БД MS SQL? Если запускать приведенную процедуру, то можно пропустить какое-нибудь событие

10.04.2010
1. Андрей RAZ (RAZ) [Материал]
А можно привязать к каналу времени.
В зависимости от решаемых задач.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]