Главная   Downloads   Разное  
FAQ     Поиск   Регистрация   Вход 
Текущее время: Пт мар 29, 2024 18:41

Часовой пояс: UTC + 3 часа (Russia: MSK)




Начать новую тему Ответить на тему  [ 20 сообщений ]  На страницу Назад  1, 2
Автор Сообщение
 Заголовок сообщения: Re: скадой писать в файл.mdb
СообщениеДобавлено: Сб дек 18, 2010 12:09 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
Не возникало у меня такой необходимости.
В твоём случае вначале нужно командами из супервайзора переместится к нужному номеру строки в базе, а потом уже записать значение или массив значений.

посмотри описание для DBMove


В начало
 Профиль  
 
 Заголовок сообщения: Re: скадой писать в файл.mdb
СообщениеДобавлено: Сб дек 18, 2010 12:23 
Не в сети
Аватара пользователя

Регистрация: Сб дек 06, 2008 10:45
Сообщения: 83
Откуда: Благовещенск
С той проблемой уже разобрался, но теперь возникла другая.

Есть база данных, хранящая события. В таблице всего 4 поля: счетчик, время, дата, и Текст события (текстовое поле из 100 символов).
При записи в базу данных командой DBAddNew() у меня почемуто вместо одной записи получается 8 записей - первая запись содержит описание нужного события и дату с временем, а остальные 7 пустые. Как такое может быть не могу понять.

Сейчас сделал запрет на пустые записи в БД и все стало нормально, но все же хочется узнать из-за чего происходила запись сразу 8 строк.
Также почему-то при каждой попытке записи в БД в дата логгере появляется сообщение "Выполнение функции DBUpdate не удалось!" - хотя запись в БД сохраняется...

Вот мой скрипт:
SUB Record_BD()

IF NOT lock_DB_Event THEN
'{ Запись в архив событий
Result_Open_BASE = DBOpen( "DB_Event.Write_Event" )
IF Result_Open_BASE THEN
DBAddNew( "DB_Event.Write_Event" )
DBUpdate( "DB_Event.Write_Event" )
ELSE
DisplayErrorLog(Error_BASE)
ENDIF
DBClose( "DB_Event.Write_Event" )
'} Запись в архив событий

ENDIF
END SUB


В начало
 Профиль  
 
 Заголовок сообщения: Re: скадой писать в файл.mdb
СообщениеДобавлено: Сб дек 18, 2010 13:20 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
ну если ни одна из переменных не является массивом и подрограмма не вызывается 8 раз, то хз. :)

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

попробуй убрать строку DBUpdate( "DB_Event.Write_Event" )

а как с первой проблемой решил?


В начало
 Профиль  
 
 Заголовок сообщения: Re: скадой писать в файл.mdb
СообщениеДобавлено: Вс дек 19, 2010 15:28 
Не в сети
Аватара пользователя

Регистрация: Сб дек 06, 2008 10:45
Сообщения: 83
Откуда: Благовещенск
8 раз точно не может быть вызван скрипт, потому что он вызывается из скрипта при инициализации программы. Все поля это текстовые стоки (соотвественно конечно массивы). Но прикол то в том, что только первая запись содержит данные, а остальные 7 пустые - ну кроме поля счетчика конечно.


А с первой проблемой просто тупо пришлось создать нужное количество переменных (хотя понимаю что это конечно не выход и на будущее нужно будет что-то придумывать, потому что вдруг нужно будет записывать 100 или 200 переменных...)


В начало
 Профиль  
 
 Заголовок сообщения: Re: скадой писать в файл.mdb
СообщениеДобавлено: Вс дек 19, 2010 19:28 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
В примере из комплекта супервайзора на странице DB4 вначале с помощью DBMove идёт перемещение к нужной записи, потом на страничке WRITE командой DBWrite идёт запись массива из трёх значений с позиции (в базе) определённой предварительно командой DBMove массива из трёх значений.
принцип простой, вначале перемешаемся на нужную позицию в базе, потом пишем в нужный столбец или одно значение, или несколько если массив.


В начало
 Профиль  
 
Показать сообщения за:  Сортировка  
Начать новую тему Ответить на тему  [ 20 сообщений ]  На страницу Назад  1, 2

Часовой пояс: UTC + 3 часа (Russia: MSK)


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Переход:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская документация по phpBB 3