0
Как вытащить значение из БД в Excel
Можно ли используя функцию StreamReadFromDatabase вытащить значения тэгов за определенный период в Excel? Если да, то не могли бы вы дать пример как это сделать? И при записи в EXCEL мы не знаем сколько значений из базы туда упадет, поэтому как решить вопрос с требуемым количеством ячеек?
Сервис поддержки клиентов работает на платформе UserEcho
Прошу прошения за задержку с ответом, все заняты выходом бета версии. Попробую накидать пример, скажите адрес куда скинуть результат.
А можно пример выложить для всеобщего обозрения ?
Решаю аналогичную задачу.
С уважением, Кондратенко Анатолий
Новочеркасск
<a href="/s/attachments/19809/1/0/af387cd1d203e9524d37867816d76425.zip" class="i_item_file"><i class="icon-file"></i> example.zip</a>
example.zip
Доброго всем дня.
Подскажите пожалуйста, что я делаю не так?
Взял пример из поста выше и пытаюсь добавить ещё пару каналов, но значения берутся всё равно из одного канала, ткните пальцем в ошибки.
Заранее спасибо.
var
stream: TMemoryStream;
error, error1, error2: word;
reccount: integer;
begindate, enddate, date: TDateTime;
value: double;
cellname_a, cellname_b, cellname_c, cellname_d: string;
cellindex: word;
const
FORMAT_CELL_NAME_A = 'A%d';
FORMAT_CELL_NAME_B = 'B%d';
FORMAT_CELL_NAME_C = 'C%d';
FORMAT_CELL_NAME_D = 'D%d';
begin
stream := TMemoryStream.Create;
try
// error code
// DB_READ_OK = 0
// DB_DATE_ERROR = 1
// DB_MEMORY_OVERFLOW = 2
// DB_CHANNEL_NOTFOUND = 3
begindate := StrToDateTime('01.06.18 12:00:00');
enddate := StrToDateTime('01.06.18 13:00:00');
error := StreamReadFromDatabase(begindate, enddate, 'Канал 1', stream);
error1 := StreamReadFromDatabase(begindate, enddate, 'Канал 2', stream);
error2 := StreamReadFromDatabase(begindate, enddate, 'Канал 3', stream);
if (error = 0) and (Excel.CreateTemplate = 0) then
begin
// Количество записей
reccount := GetCountRecordToStream(stream);
cellindex := 2;
while GetValueFromStream (stream, date, value) do
begin
cellname_a := Format(FORMAT_CELL_NAME_A, [cellindex]);
cellname_b := Format(FORMAT_CELL_NAME_B, [cellindex]);
cellname_c := Format(FORMAT_CELL_NAME_C, [cellindex]);
cellname_d := Format(FORMAT_CELL_NAME_D, [cellindex]);
Excel.Cell[cellname_a] := DateTimeToStr(date);
Excel.Cell[cellname_b] := Value;
Excel.Cell[cellname_c] := Value;
Excel.Cell[cellname_d] := Value;
cellindex := cellindex + 1;
end;
Excel.Save('C:\Proba\test.xls');
Excel.Close;
ShowMessage('Готово');
end;
finally
stream.free;
end;
end.