Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: godygadu от 07 Марта 2017, 09:49:39

Название: Инструмент таблица. Возможности?
Отправлено: godygadu от 07 Марта 2017, 09:49:39
Здравствуйте. Меня интересует, как работать с таблицей? Как в ячейки установить, например, динамическое время или дату? Как вставлять значения из БД в таблицу? Как обращаться к таблице из скрипта? Спасибо.
Название: Re: Инструмент таблица. Возможности?
Отправлено: Simple-Scada от 07 Марта 2017, 14:09:02
Здравствуйте.

Цитировать
Как в ячейки установить, например, динамическое время или дату?
Для этого сначала создается переменная, например vrMyTime c типом данных DateTime. (или можно импортировать DateTime переменную с OPC-сервера). Затем ставим в проект новую таблицу и выделяем ячейку в которой нужно отобразить дату/время. Связываем эту ячейку с переменной vrMyTime. Готово. Теперь если запустить проект, то в ячейке отобразится дата/время из переменной vrMyTime.

Цитировать
Как вставлять значения из БД в таблицу?
Сейчас это невозможно. В следующих обновлениях мы добавим методы для работы таблицы с БД.

Цитировать
Как обращаться к таблице из скрипта?
Сейчас у таблицы свойства доступны только для чтения. Вот список всех свойств таблицы (http://simple-scada.com/scripts_manual?section=script_instrument_table). Обращаться например так: Table1.Title;
Название: Re: Инструмент таблица. Возможности?
Отправлено: godygadu от 09 Марта 2017, 08:28:38
Насчет времени. Если в ячейке указать переменную с типом DateTime, то в ней действительно, будет отображаться время, но оно не обновляется совсем. Ваш способ не подходит.
Название: Re: Инструмент таблица. Возможности?
Отправлено: Simple-Scada от 09 Марта 2017, 09:23:18
Цитировать
то в ней действительно, будет отображаться время, но оно не обновляется совсем.
Если оно не обновляется, значит переменная даты/времени не меняется. Если Вы создали виртуальную переменную, то добавьте новый скрипт с типом события "Прошла секунда" и напишите такой код:

Код
begin
  // записываем текущее время в vrMyTime
  vrMyTime.Value := Now;
end;

А если Вы используете внешнюю переменную дату/времени с какого-либо устройства, то сделайте обновление времени в программе устройства.
Название: Re: Инструмент таблица. Возможности?
Отправлено: godygadu от 09 Марта 2017, 09:39:17
Работает. Спасибо.
Название: Re: Инструмент таблица. Возможности?
Отправлено: TeNQ от 09 Марта 2017, 09:44:02
Цитировать
Как вставлять значения из БД в таблицу?
Сейчас это невозможно. В следующих обновлениях мы добавим методы для работы таблицы с БД.

А я вставляю)
Вот запрос из скрипта стартующего с клиентом
Код
 { Формируем запрос к БД }
  aQuery := 'SELECT `TRM1_ProgramDuration`, `TRM2_ProgramDuration` '+
            'FROM `program_table` WHERE ID = 1;';

  { Отправляем запрос на выполнение и помечаем его тегом = 77 }
  RunSQL(aQuery, nil, 77);
А вот вставка в таблицу в скрипте с ответом на запрос
Код
begin
  { Если это результат нашего запроса с тегом = 77, то обрабатываем его }
  if DataSet.Tag = 77 then
  begin
    vrTRM1_ProgramDuration.Value := DataSet[0].AsDateTime;
    vrTRM2_ProgramDuration.Value := DataSet[1].AsDateTime;
    Table1.Columns[3].Cells[1].Variable.Value := TimeToStr(vrTRM1_ProgramDuration.AsDateTime);
    Table1.Columns[3].Cells[2].Variable.Value := TimeToStr(vrTRM2_ProgramDuration.AsDateTime);
  end;
end.     
Хотя тут я и перемудрил. К ячейкам таблицы привязаны виртуальные переменные. Можно было просто присваивать переменной напрямую.
Название: Re: Инструмент таблица. Возможности?
Отправлено: Simple-Scada от 09 Марта 2017, 09:46:24
TeNQ, через переменные всё возможно :). И ещё не получится добавить новые строки, так как они не связаны с переменными. И можно использовать только те, которые связали в редакторе. Но это ведь не очень удобно и лучше бы скада делала это сама, без пользовательских скриптов и переменных.
Название: Re: Инструмент таблица. Возможности?
Отправлено: Teodor от 15 Марта 2017, 12:27:42
...и лучше бы скада делала это сама, без пользовательских скриптов и переменных.
За неимением горничных... ;D Это лучше чем никак.