Работа с базой данных

Avatar
  • обновлен
Как в скрипте работать с базой данных? Необходимо прочитать значение канала в определенный момент времени
Avatar
demitsury
Тут есть описание функций: simplight.ru/files/help/sl_script_help.rtf
Avatar
Rate216
i:=StreamReadFromDatabase(a1,a1+m,ReadValue('КаналКомбо'),stream);

КаналКомбо привязан к выпадающему списку в котором вбит список каналов. На выходе ошибка DB_CHANNEL_NOTFOUND = 3;
В чем может быть проблема?
Avatar
SIMP Tech (Сергей)
Добрый вечер.

i:=StreamReadFromDatabase(a1,a1+m,ReadValue('КаналКомбо'),stream);
КаналКомбо привязан к выпадающему списку в котором вбит список каналов. На выходе ошибка DB_CHANNEL_NOTFOUND = 3;
В чем может быть проблема?

Если можно текст всего скрипта пришлите, сюда или на почту.
Avatar
Rate216
var
time:TDateTime;
stream: TMemoryStream;
val:double;
i:word;
str1,str2:string;
Begin
str1:=ReadValue('I?ai');
str2:='Node1.Item1';

stream := TMemoryStream.create;
i:=StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'),str1,stream);
GetValueFromStream(stream,time,val);
SaveToTxtFile('c:\test.txt',str1+' - '+inttostr(i)+' - '+DateTimeToStr(time)+' - '+FloatToStr(val));
stream.free;

stream := TMemoryStream.create;
i:=StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'),str2,stream);
GetValueFromStream(stream,time,val);
SaveToTxtFile('c:\test.txt',str2+' - '+inttostr(i)+' - '+DateTimeToStr(time)+' - '+FloatToStr(val));
stream.free;

stream := TMemoryStream.create;
i:=StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'),'Node1.Item1',stream);
GetValueFromStream(stream,time,val);
SaveToTxtFile('c:\test.txt',inttostr(i)+' - '+DateTimeToStr(time)+' - '+FloatToStr(val));
stream.free;

end.
Avatar
Rate216
Вот что на выходе.

Node1.Item1 - 3 - 30.12.1899 - 0
0 - 0 - 30.07.2014 14:40:00 - 39
0 - 30.07.2014 14:40:00 - 39

Последние две строчки нормальные. Только str2 почему-то 0
Avatar
SIMP Tech (Сергей)
День добрый.

Немного "приберемся" в скрипте.

var time: TDateTime; stream: TMemoryStream; val:double; i:word; str1,str2:string; begin str1 := ReadValue('I?ai'); str2 := 'Node1.Item1'; stream := TMemoryStream.create; try // шаг 1 i := StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'), str1, stream); GetValueFromStream(stream, time, val); SaveToTxtFile('c:\test.txt',str1 + ' - ' + inttostr(i) + ' - ' + DateTimeToStr(time) + ' - ' + FloatToStr(val)); // шаг 2 stream.clear; i := StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'), str2, stream); GetValueFromStream(stream, time, val); SaveToTxtFile('c:\test.txt', str2 + ' - ' + inttostr(i) + ' - ' + DateTimeToStr(time) + ' - ' + FloatToStr(val)); // шаг 3 stream.clear; i := StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'),'Node1.Item1',stream); GetValueFromStream(stream,time,val); SaveToTxtFile('c:\test.txt', inttostr(i) + ' - ' + DateTimeToStr(time) + ' - ' + FloatToStr(val)); finally stream.free; end; end.
Теперь давайте разбираться str1 := ReadValue('I?ai')- в str1 - имя канала? str2 := 'Node1.Item1' - Node1.Item1 это имя канала? На каком шаге происходит сбой?
Avatar
Rate216
В первом шаге пытаемся имя канала взять из выпадающего списка. Выдает ошибку 3.

Во втором шаге передаем точно такое же имя канала из строчки str2. Все работает. Только непонятно почему str2 становится равен 0;

В третьем шаге все нормально.


str1 := ReadValue('I?ai') канал привязан к выпадающему списку, тип string;
Node1.Item1 - имя канала
Avatar
SIMP Tech (Сергей)
В первом шаге пытаемся имя канала взять из выпадающего списка. Выдает ошибку 3.

в str1 - на момент чтения из БД, точно есть имя канала? Виртуальный канал к которому привязан этот скрипт выполняется по кругу, или запускается по событию?


Во втором шаге передаем точно такое же имя канала из строчки str2. Все работает. Только непонятно почему str2 становится равен 0;

т.е. после чтения из БД переменная str2 становится равной 0?
Avatar
Rate216
Node1.Item1 - 3 - 30.12.1899 - 0
0 - 0 - 30.07.2014 14:40:00 - 39
0 - 30.07.2014 14:40:00 - 39

Вот отладочный файл по 3 шагам
Avatar
SIMP Tech (Сергей)
Ок. Спасибо. Отдам на проверку. Как будут результаты, отпишусь.