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

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

Автор Тема: DataSet и временные метки  (Прочитано 282 раз)

iww70

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
DataSet и временные метки
« : 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???
« Изменён: 22 Сентября 2026, 09:10:35 от Simple Scada »

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 302
    • Просмотр профиля
    • Simple-Scada
Re: DataSet и временные метки
« Ответ #1 : 22 Сентября 2026, 10:37:42 »
Здравствуйте.

1. Не нужно переносить задачи СУБД в скада-систему. Преобразовать данные к нужному формату можно сразу в SQL-запросе.
2. У компонента "Таблица" есть свой внутренний метод RunSQL, который удобно использовать для того, чтобы отобразить результат выполнения 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.