Значение из БД в Excel
Доброго дня.
Подскажите пожалуйста, что я делаю не так?
Взял пример "Как вытащить значение из БД в Excel"
и пытаюсь добавить ещё пару каналов, но значения берутся всё равно из одного канала, ткните пальцем в ошибки.
Заранее спасибо.
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.
День добрый.
Попробуйте по отдельности читать данные из БД ( StreamReadFromDatabase) и заносить их в таблицу эксель. Сейчас Вы вычитываете в один поток данные с трёх каналов.