Показать сообщение отдельно
  #6  
Старый 08.02.2021, 21:39
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Содаешь базу, в ней табицу с 3мя полями:
event_ts timestamp
value_1 decimal(10,4)
value_2 decimal(10,4)
Думаю длинны 6.4 для твоих данных вполне хватит.

2. На форме нужны будут:
Connection: TADOConnection
qAdd : TADOQuery
qExport : TADOQuery

3. В qAdd вводишь такой запрос:
Код:
INSERT INTO DataTbl VALUES (:ts, :v1, :v2)
И настраиваешь типы параметров, соотв ts - datetime, v1 и v2 - числовые.

4. По кнопке:
Код:
procedure TForm1.Buttion1Click(Sender : TObject);
begin
  qAdd.Params.ParamByName('ts').AsDateTime := Date + Time;
  qAdd.Params.ParamByName('v1').AsFloat := random*20-10; // -10..+10
  qAdd.Params.ParamByName('v2').AsFloat := random*20-10; // -10..+10
  qAdd.ExecSql;
end;

5. Дальше, на форму бросаешь TDateTimePicker для фильтра по дате.

6. В qExport добавляешь запрос:
Код:
SELECT event_ts, value_1, value_2 from DataTbl where event_ts >= :dt1 and event_ts < :dt2
И настраиваешь параметры dt1 и dt2, datetime
7. По второй кнопке для экспорта:
Код:
procedure TForm1.Button2Click(Sender : TObject);
begin
  qExport.Active := False; // ну, на всякий случай
  qExport.Params.ParamByName('dt1').AsDate := DateTimePicker1.Date;
  qExport.Params.ParamByName('dt2').AsDate := DateTimePicker1.Date + 1;
  qExport.Open;
  qExport.First;
  While Not qExport.Eof Do
    Begin
      // Здесь собственно экспорт в Excel строк
      // Предварительно надо создать объект экселя
      // Вообще, можно просто вывести в csv текстовый файл, он экселем прекрасно читается
     qExport.Next;
    End;
  qExport.Close;
end;
end;

Ну вот как-то так.
Работу с экселем через OLE ищи поиском, было много примеров, в т.ч. и на этом сайте, там не сложно, но лень писать.
Ответить с цитированием