Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.02.2021, 13:59
svobodniy.agent svobodniy.agent вне форума
Прохожий
 
Регистрация: 04.02.2021
Сообщения: 13
Версия Delphi: Delphi 10
Репутация: 10
По умолчанию Таблица - БД - Excel

Всем привет) Помогите пожалуйста с заданием. Надо сделать простой массив с переменной привязанной к дате и времени: то есть таблицу, в которой первый столбец - дата, второй - время и 3-й - просто переменная. И надо эту таблицу сначала записать в Базу Данных, а потом сделать экспорт в Excel ввиде таблицы. Помогите пожалуйста, отдельные компоненты для решения вроде нашел, но собрать все в целое совершенно не получается - в Delphi раньше вообще не работал.
Ответить с цитированием
  #2  
Старый 04.02.2021, 23:02
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,668
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Недостаточно данных.
1. Что за переменная "привязанная к дате"? Какого типа данные в ней? Как вычисляется дата/время? Как это хранится в программе?
2. Какая БД? От этого зависит какие типы данных доступны. В общем случае:
Код:
CREATE TABLE MyTable (
ColDate Date,
ColTime Time,
ColVar Varchar(100) -- тип данных неизвестен, потому сделал текстом
);
Потом можно через TTable добавлять через его методы Append/Post или опять же через запроc:
Код:
INSERT INTO MyTable VALUES (:dd, :tt:, :vv)
Параметризованный запрос, можно сгенерить просто серию запросов.
3. Ну а вот тут примеров работы с Excel через OLE полно.
Ответить с цитированием
  #3  
Старый 04.02.2021, 23:59
svobodniy.agent svobodniy.agent вне форума
Прохожий
 
Регистрация: 04.02.2021
Сообщения: 13
Версия Delphi: Delphi 10
Репутация: 10
По умолчанию

Извиняюсь, сейчас попробую пояснить) Но Вы примерно правильно поняли задание.
И так:
1. Случайно генерируется переменная (например температура) и вносится в базу данных с текущим временем и датой.
2. А потом эта табличка экспортируется в Excel.
Пример таблички во вложенных файлах.
Должно получиться что-то примерное такое: нажимаешь на кнопку на форме - генерируется переменная - записывается в базу данных с датой и временем - и в конце экспортируется эта табличка в книгу Excel.
По мере возможностей можете пожалуйста детально расписать как это сделать, большой спасибо
Изображения
Тип файла: png Table.png (4.6 Кбайт, 0 просмотров)
Ответить с цитированием
  #4  
Старый 06.02.2021, 19:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,668
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Генерируется как? По кнопке? В цикле (тогда сколько надо)?
3. Опять же, какая база? И вообще, нужна ли она, может можно все в памяти держать? Или в файле? Непонятно зачем тут БД... Ради одной таблички как-то излишне. Или надо накапливать данные за несколько дней и потом экспортироват за опр. дату?
Ответить с цитированием
  #5  
Старый 07.02.2021, 01:37
svobodniy.agent svobodniy.agent вне форума
Прохожий
 
Регистрация: 04.02.2021
Сообщения: 13
Версия Delphi: Delphi 10
Репутация: 10
По умолчанию

1. Да, по кнопке.
2. Не суть вообще, например можно Microsoft Access в формате *.mdb.
Или надо накапливать данные за несколько дней и потом экспортироват за опр. дату? - Да-да-да, именно так) Чтобы можно было вызвать и посмотреть по дате, что было в тот день.
Ответить с цитированием
  #6  
Старый 08.02.2021, 21:39
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,668
Версия 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 ищи поиском, было много примеров, в т.ч. и на этом сайте, там не сложно, но лень писать.
Ответить с цитированием
  #7  
Старый 10.02.2021, 21:45
svobodniy.agent svobodniy.agent вне форума
Прохожий
 
Регистрация: 04.02.2021
Сообщения: 13
Версия Delphi: Delphi 10
Репутация: 10
По умолчанию

А можете пожалуйста более подробно расписать... Или исходник кинуть. Буду очень благодарен, не получается связать все компоненты
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter