Автор |
Сообщение |
Сообщение создано: 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.
пробую извлечь это значение функцией:
test_arc_tmp = SYS.BD.SQLite.1s.SQLReq("SELECT VAL FROM DBAVl_1s_test_arc_var WHERE TM=1521359514;");
Компилятор выдает ошибку "Ошибка константы после константы".
Синтаксис соблюден, сделано по примеру из мануала :
5.5. Подсистема "БД" (SYS.BD)
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:
test_arc_tmp = SYS.BD.SQLite.1s.SQLReq("SELECT VAL FROM DBAVl_1s_test_arc_var WHERE TM=1521359514;");
Компилятор выдает ошибку "Ошибка константы после константы".
Синтаксис соблюден, сделано по примеру из мануала :
5.5. Подсистема "БД" (SYS.BD)
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 - значение пишется корректно, проверял запрос :
SELECT VAL FROM DBAVl_1s_test_arc_var WHERE TM=1521386932
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:
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
|
с помощью вашей подсказки, что "не значение" - таки обратил внимание, что двумерный массив.
(если бы не приведенный там пример - это понять было бы наверное невозможно)
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.
|