![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Всем привет) Помогите пожалуйста с заданием. Надо сделать простой массив с переменной привязанной к дате и времени: то есть таблицу, в которой первый столбец - дата, второй - время и 3-й - просто переменная. И надо эту таблицу сначала записать в Базу Данных, а потом сделать экспорт в Excel ввиде таблицы. Помогите пожалуйста, отдельные компоненты для решения вроде нашел, но собрать все в целое совершенно не получается - в Delphi раньше вообще не работал.
|
#2
|
|||
|
|||
![]() Недостаточно данных.
1. Что за переменная "привязанная к дате"? Какого типа данные в ней? Как вычисляется дата/время? Как это хранится в программе? 2. Какая БД? От этого зависит какие типы данных доступны. В общем случае: Код:
CREATE TABLE MyTable ( ColDate Date, ColTime Time, ColVar Varchar(100) -- тип данных неизвестен, потому сделал текстом ); Код:
INSERT INTO MyTable VALUES (:dd, :tt:, :vv) 3. Ну а вот тут примеров работы с Excel через OLE полно. |
#3
|
|||
|
|||
![]() Извиняюсь, сейчас попробую пояснить) Но Вы примерно правильно поняли задание.
И так: 1. Случайно генерируется переменная (например температура) и вносится в базу данных с текущим временем и датой. 2. А потом эта табличка экспортируется в Excel. Пример таблички во вложенных файлах. Должно получиться что-то примерное такое: нажимаешь на кнопку на форме - генерируется переменная - записывается в базу данных с датой и временем - и в конце экспортируется эта табличка в книгу Excel. По мере возможностей можете пожалуйста детально расписать как это сделать, большой спасибо ![]() |
#4
|
|||
|
|||
![]() 1. Генерируется как? По кнопке? В цикле (тогда сколько надо)?
3. Опять же, какая база? И вообще, нужна ли она, может можно все в памяти держать? Или в файле? Непонятно зачем тут БД... Ради одной таблички как-то излишне. Или надо накапливать данные за несколько дней и потом экспортироват за опр. дату? |
#5
|
|||
|
|||
![]() 1. Да, по кнопке.
2. Не суть вообще, например можно Microsoft Access в формате *.mdb. Или надо накапливать данные за несколько дней и потом экспортироват за опр. дату? - Да-да-да, именно так) Чтобы можно было вызвать и посмотреть по дате, что было в тот день. |
#6
|
|||
|
|||
![]() 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) 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 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 ищи поиском, было много примеров, в т.ч. и на этом сайте, там не сложно, но лень писать. |