УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

Как сделать правильно запрос данных из архива?


Автор Сообщение
Сообщение создано: 15. 03. 2018 [22:08]
rainproof
Виктор Иванов
Создатель темы
Зарегистрирован(а) с: 02.02.2018
Сообщения: 32
Всем доброе время суток.
Начал разбираться с функцией getVal().
В функции "запрос знач.архива" (Вычислитель на java-подобном языке - Библиотека - Отчетная документация - Запрос знач.архива), в проекте AGLKS (Демо),
во вкладке "Исполнить" - ввожу в адрес - "DAQ.LogicLev.experiment.F3.var", в поле "архиватор" - "FSArch.1s", в поле "время" - вводил текущее время юникс в сек. После нажатия кнопки "исполнить" - результат всегда "пусто", хотя значение переменной на момент, когда это пишу - 45.0913.
архивы пишутся нормально, экспортировал в ANSI, просматривал - корректные значения. Т.е. архиватор работает.
что я делаю неправильно? Может какие-то нюансы с синтаксисом?

на машине стоит Ubuntu Server 14.04 + LXDE.


[Сообщение редактировалось 1 раз(а), в последний раз 16.03.2018 в 08:25.]
Сообщение создано: 18. 03. 2018 [08:46]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
http://oscada.org/ru/forum/posts/otslezhivanie_oshibok/formirovanie_dokumenta_iz_dannykh_arkhiva/

Learn, learn and learn better than work, work and work.
Сообщение создано: 18. 03. 2018 [10:43]
rainproof
Виктор Иванов
Создатель темы
Зарегистрирован(а) с: 02.02.2018
Сообщения: 32
Спасибо! буду пробовать.
я поставил openscada 0.9. с обновлениями от 10.03.18.
там уже есть это исправление?
P.S. я хочу использовать эту функцию для печати отчетов в pdf посредством процессора laTex.
неделю бьюсь - всегда выводит "пусто".
приложил файлы скриншотов работы с функцией getVal


[Сообщение редактировалось 3 раз(а), в последний раз 18.03.2018 в 11:07.]
Вложенный файл

F3 val.jpg (Тип файла: image/jpeg, Размер: 22.38 килобайт) — 1466 загрузок
getVal.jpg (Тип файла: image/jpeg, Размер: 51.07 килобайт) — 1511 загрузок
Сообщение создано: 18. 03. 2018 [13:49]
rainproof
Виктор Иванов
Создатель темы
Зарегистрирован(а) с: 02.02.2018
Сообщения: 32
создал БД SQLite - 1s.
пишу туда переменную test_arc_tmp
значения корректно записываются в таблицу БД - DBAVl_1s_test_arc_var
проверяю тестовым SQL запросом в самой БД - все работает, извлекается значение 21.106.

пробую извлечь это значение функцией:

JAVASCRIPT
test_arc_tmp = SYS.BD.SQLite.1s.SQLReq("SELECT VAL FROM DBAVl_1s_test_arc_var WHERE TM=1521359514;");


Компилятор выдает ошибку "Ошибка константы после константы".

Синтаксис соблюден, сделано по примеру из мануала :

5.5. Подсистема "БД" (SYS.BD)
JAVASCRIPT
DBTbl = SYS.BD.MySQL.GenDB.SQLReq("SELECT * from DB;");


В чем может быть причина?





[Сообщение редактировалось 2 раз(а), в последний раз 18.03.2018 в 13:55.]
Сообщение создано: 18. 03. 2018 [15:30]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"rainproof" wrote:

JAVASCRIPT
test_arc_tmp = SYS.BD.SQLite.1s.SQLReq("SELECT VAL FROM DBAVl_1s_test_arc_var WHERE TM=1521359514;");


Компилятор выдает ошибку "Ошибка константы после константы".

Синтаксис соблюден, сделано по примеру из мануала :

5.5. Подсистема "БД" (SYS.BD)
JAVASCRIPT
DBTbl = SYS.BD.MySQL.GenDB.SQLReq("SELECT * from DB;");


В чем может быть причина?

В том, что "1s" это число, а не символ атрибута или переменной!

Имя свойства через точку не должно начинаться с цифры и содержать символы операций, иначе, для первой цифры, должен использоваться префикс объекта — SYS.BD.SQLite.db_1s, или осуществляться запись в квадратных скобках — SYS.BD.SQLite["1+s"], для символов операций в названии.


Learn, learn and learn better than work, work and work.
Сообщение создано: 18. 03. 2018 [17:39]
rainproof
Виктор Иванов
Создатель темы
Зарегистрирован(а) с: 02.02.2018
Сообщения: 32
Создал новую БД s1.
БД 1s - удалил.
Компилятор ошибки не выдает.
В БД s1 - значение пишется корректно, проверял запрос :
JAVASCRIPT
SELECT VAL FROM DBAVl_1s_test_arc_var WHERE TM=1521386932


JAVASCRIPT
test_arc_tmp = SYS.BD.SQLite.s1.SQLReq("SELECT VAL FROM DBAVl_1s_test_arc_var WHERE TM=1521387480;");

но значение переменной test_arc_tmp - всегда равно "1".
реальное ее значение сейчас - 23.03

[Сообщение редактировалось 1 раз(а), в последний раз 18.03.2018 в 17:40.]
Сообщение создано: 18. 03. 2018 [18:01]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"rainproof" wrote:

JAVASCRIPT
test_arc_tmp = SYS.BD.SQLite.s1.SQLReq("SELECT VAL FROM DBAVl_1s_test_arc_var WHERE TM=1521387480;");

но значение переменной test_arc_tmp - всегда равно "1".
реальное ее значение сейчас - 23.03

Но, документацию внимательно читать нужно, потому как эта функция не значение возвращает!

P.S. И потому Вам тут никто не отвечает, что все вопросы явно светят непониманием!

Learn, learn and learn better than work, work and work.
Сообщение создано: 18. 03. 2018 [18:21]
rainproof
Виктор Иванов
Создатель темы
Зарегистрирован(а) с: 02.02.2018
Сообщения: 32
ну и на том спасибо.
буду читать дальше.
а синтаксис - действительно - путанный.
Сообщение создано: 18. 03. 2018 [19:28]
rainproof
Виктор Иванов
Создатель темы
Зарегистрирован(а) с: 02.02.2018
Сообщения: 32
с помощью вашей подсказки, что "не значение" - таки обратил внимание, что двумерный массив.
(если бы не приведенный там пример - это понять было бы наверное невозможно)

JAVASCRIPT
var tmp1;
tmp1 = SYS.BD.SQLite.s1.SQLReq("SELECT * FROM DBAVl_1s_test_arc_var;");
for(var iRw = 0; iRw < tmp1.length; iRw++){
if(str2real(tmp1[iRw][1])==(SYS.time()-5)){
test_arc_tmp = str2real(tmp1[iRw][2]);
}
}

понял , как выводить значения из БД.

но вопрос, почему не выводятся значения из архиватора FSArch.1s посредством библиотечной же функции и в демо проекте - остался открытым.

[Сообщение редактировалось 2 раз(а), в последний раз 18.03.2018 в 19:34.]
Сообщение создано: 18. 03. 2018 [19:36]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"rainproof" wrote:

но вопрос, почему не выводятся значения из архиватора FSArch.1s посредством библиотечной же функции и в демо проекте - остался открытым.

Вообще-то, ссылку http://oscada.org/ru/forum/posts/otslezhivanie_oshibok/formirovanie_dokumenta_iz_dannykh_arkhiva/ я дал для того, чтобы показать, что оно работает и есть примеры это демонстрирующие, а разбираться с тем, что Вы там себе делаете не так Вам тут никто не будет!

Learn, learn and learn better than work, work and work.



1431