Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Запись массива типа Double в таблицу  (Прочитано 12821 раз)

asutpvit

  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Re: запись переменной типа double в таблицу
« Ответ #15 : 16 Февраля 2018, 13:15:43 »
Добрый день, наконец-то руки дошли до испытания Вами предложенного метода ->

Вы можете выполнить любой SQL-запрос от таблицы к базе данных и результаты запроса автоматически будут выведены в таблице. Для этого используется процедура RunSQL таблицы. Пример для вашей задачи:
Код
var
  aFrom, aTo: TDateTime;
  aQuery, aFromStr, aToStr: string;
begin
  aTo := Now;                // текущее время в переменную aTo
  aFrom := IncHour(Now, -6);  // 6 часов назад в переменную aFrom
  aToStr := MySQLDateTime(aTo, dttFull);      // переводим время aTo в строку
  aFromStr := MySQLDateTime(aFrom, dttFull);  // переводим время aFrom в строку

  { формируем запрос к БД на выборку }
  aQuery := 'SELECT * FROM `trends_data` WHERE ' +
            '(`id`=' + IntToStr(MyVariable.ID) + ') AND ' +
            '(`timestamp` >= ' + aFromStr + ') AND (`timestamp` <= ' + aToStr + ')';

  { выполнить запрос и заполнить таблицу результатом выполнения }
  Table1.RunSQL(aQuery, tsAll);
end.

Сначала в переменные aFrom, aTo записывается интервал в последние шесть часов. Затем интервал переводится в строку пригодную для запросов к MySQL. Далее формируется запрос на выборку архивных данных переменной MyVariable за последние шесть часов. Результат выборки отобразится в таблице с именем Table1.

результат 0,  не выводиться информация в таблицу.
Решил пойти простым путем, а именно вывести всю таблицу: присвоил на клик по таблице скрипт
Код: (delphi)
var
    aQuery: string;
begin
  aQuery := 'SELECT * FROM `par`';
  Table2.RunSQL(aQuery, tsAll);
end.
итог обновляется таблица в скада только после перезапуска windows (сам в шоке, но просто останов и перезапуск клиента не помогает)
в MySql таблица par обновляется как положено раз в 30 мин, .... прописал в конец скрипта по обновлению таблицы в MySql вывод инфы в таблицу скады Table2...тоже обновление идет только после перезапуска windows....

куда копать? простейший скрипт
И почему нельзя сделать в редакторе просто присвоение таблицы в скаде к таблице имеющейся в БД? Без скриптов и заморочек
« Изменён: 20 Ноября 2018, 11:01:55 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Запись массива типа Double в таблицу
« Ответ #16 : 16 Февраля 2018, 16:39:32 »
Здравствуйте.

Цитировать
итог обновляется таблица в скада только после перезапуска windows
Не обязательно перезапускать Windows, достаточно было перезапустить сервер скады (Server.exe) или проект на сервере. Если Вы не запускаете сервер скады вручную, то он автоматически запускается клиентом скады и отображается в области уведомлений. Судя по описанию Вы внесли изменения в проект и не перезапустили его. Далее перезапуск Windows привёл к перезапуску сервера скады и Вы начали работать с новой версией проекта.

Цитировать
сам в шоке, но просто останов и перезапуск клиента не помогает
Перезапуск клиента не всегда приводит к перезапуску проекта, т.к. проект исполняется на сервере скады и перезапускать проект нужно на сервере (мы ранее писали об этом в этом сообщении). Также на серверном ПК можно в Options.exe включить флажок "Автоматически деактивировать проект, если у него нет клиентов", тогда при отключении всех клиентов от сервера проект будет автоматически выключаться и при очередном включении он запустится со всеми и изменениями.

Цитировать
И почему нельзя сделать в редакторе просто присвоение таблицы в скаде к таблице имеющейся в БД? Без скриптов и заморочек.
Обычная выборка всех данных из таблицы используется редко, обычно используются более сложные запросы и гибкость можно получить только формируя запрос в скрипте. А для простой выборки не требуется сложных скриптов, можно сделать выборку в одну строчку:
Код: (delphi)
begin
  Table1.RunSQL('SELECT * FROM `par`', tsAll);
end.
« Изменён: 20 Ноября 2018, 11:02:04 от Simple-Scada »

asutpvit

  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Re: Запись массива типа Double в таблицу
« Ответ #17 : 19 Февраля 2018, 06:28:02 »
Перезапуск проекта выполнялся более 10 раз тем способом что вы описали.   
Сейчас попробуем "простую выборку"

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Запись массива типа Double в таблицу
« Ответ #18 : 19 Февраля 2018, 09:19:17 »
Цитировать
Перезапуск проекта выполнялся более 10 раз тем способом что вы описали.
Значит дело в чем-то другом. Какую версию Simple-Scada Вы используете? Мигает ли белая полупрозрачная рамка вокруг таблицы после выполнения метода "Table1.RunSQL"? Выводятся ли какие-нибудь сообщения об ошибках в журнале сервера? Данные добавляются в таблицу `par` самой скадой, или какой-то другой программой? Таблица `par` была создана через скаду, через MySQL Workbench, или создана другой программой?
« Изменён: 19 Февраля 2018, 09:21:32 от Simple-Scada »

asutpvit

  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Re: Запись массива типа Double в таблицу
« Ответ #19 : 27 Февраля 2018, 06:28:16 »
Таблица par создана в Workbench, версия скада последняя(2.2.8.0 standart edition). Рамка вокруг таблицы мигает. Ошибок в журналах по поводу бд или таблиц нет. Записи в таблицу par заносятся с периодичностью 1 раз в 30 мин

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Запись массива типа Double в таблицу
« Ответ #20 : 27 Февраля 2018, 10:06:43 »
asutpvit, скачайте скаду ещё раз по той же ссылке, обновите и пересохраните проект в редакторе. Проблема остаётся?

asutpvit

  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Re: Запись массива типа Double в таблицу
« Ответ #21 : 28 Февраля 2018, 08:44:41 »
ура, сегодня обновил scada и заработало.
« Изменён: 28 Февраля 2018, 08:49:00 от asutpvit »