Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: iww70 от 22 Сентября 2026, 09:05:51

Название: DataSet и временные метки
Отправлено: iww70 от 22 Сентября 2026, 09:05:51
Такая ситуация DataSet получает таблицу такого вида рис.1 во вложении получаю рис. 2
Код: (delphi)
// проходим по каждой ячейке текущей строки
for I := 0 to DataSet.FieldCount - 1 do
begin
  SetDateFormat('dd.mm.yy');
  SetDateSeparator('.'[1]);
  SetTimeFormat('hh:nn:ss');
  SetTimeSeparator(':'[1]);

  aStr := DataSet[1].AsStr;
  aStr := aStr + ' - ' + DataSet[2].AsStr;
end;
Так вот DataSet[1].AsStr могу еще как то конвертировать например в 21.09.26  12:13:28, а вот  DataSet[2].AsStr не реагирует на формат или конвертацию (StrToDateTime и обратно) времени рис.2
Как сделать красиво 21.09.26  12:13:28 - 21.09.26  12:13:29???
Название: Re: DataSet и временные метки
Отправлено: Simple Scada от 22 Сентября 2026, 10:37:42
Здравствуйте.

1. Не нужно переносить задачи СУБД в скада-систему. Преобразовать данные к нужному формату можно сразу в SQL-запросе.
2. У компонента "Таблица (https://simple-scada.com/help/manual/table.html)" есть свой внутренний метод RunSQL (https://simple-scada.com/help/script/trunsql.html), который удобно использовать для того, чтобы отобразить результат выполнения SQL-запроса в таблице.

Пример скрипта, который без дополнительного разбора позволяет отобразить данные в нужном формате сразу в таблице "Table1" :
Код: (delphi)
var
  aQuery: string;
begin
  // формируем запрос к БД на выборку данных из таблицы `my_table`
  aQuery := 'SELECT CONCAT_WS('' - '', DATE_FORMAT(t1, ''%Y.%m.%d %H:%i:%s''), DATE_FORMAT(t2, ''%Y.%m.%d %H:%i:%s'')) AS range_datetime, m FROM my_table';

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