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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.03.2013, 12:15
Аватар для borockov
borockov borockov вне форума
Начинающий
 
Регистрация: 18.08.2012
Сообщения: 125
Репутация: 10
По умолчанию Ошибка при выводе в excel

Всем привет друзья! У меня вопрос связанный с выводом БД access в excel.Пытаюсь вывести таким образом:
Код:
procedure TForm2.Button3Click(Sender: TObject);
var
XLapp, Sheet, Colum:Variant;
index,i:Integer;
begin
 XLApp:= CreateOleObject('Excel.Application');
 XLApp.Visible:=true;
 XLApp.Workbooks.Add(-4167);
 XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт';
 Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns;

 Colum.Columns[1].ColumnWidth:=18;
 Colum.Columns[2].ColumnWidth:=18;
 Colum.Columns[3].ColumnWidth:=18;
 Colum.Columns[4].ColumnWidth:=18;
 Colum.Columns[5].ColumnWidth:=18;


 Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows;
 Colum.Rows[2].Font.Bold:=true;
 Colum.Rows[1].Font.Bold:=true;
 Colum.Rows[1].Font.Color:=clBlue;
 Colum.Rows[1].Font.Size:=10;
 Colum.Rows[2].Font.Size:=10;
 Colum.Rows[3].Font.Size:=10;
 Colum.Rows[4].Font.Size:=10;
 Colum.Rows[5].Font.Size:=10;

 Colum.Rows.Font.Name:=' MS Sans Serif';
 Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт'];
 Sheet.Cells[1,2]:='"Найденные прототипы на Фипс.ру"  '+DateToStr(Date);
 Sheet.Cells[2,1]:='ID';
 Sheet.Cells[2,2]:='Информация о прототипе';
 Sheet.Cells[2,3]:='Дата';
 Sheet.Cells[2,4]:='Идентификатор патента';
 index :=3;

datasource1.DataSet.First;
for i:=0 to datasource1.DataSet.RecordCount-1 do
  begin
   Sheet.Cells[index,1]:= datasource1.DataSet.Fields.Fields[0].AsString;
   Sheet.Cells[index,2]:= datasource1.DataSet.Fields.Fields[1].AsString;
   Sheet.Cells[index,3]:= datasource1.DataSet.Fields.Fields[2].AsString;
   Sheet.Cells[index,4]:= datasource1.DataSet.Fields.Fields[3].AsString;
   Sheet.Cells[index,5]:= datasource1.DataSet.Fields.Fields[4].AsString;
   Inc(index);
   datasource1.DataSet.Next;
end;
Но выдается ошибка "Недостаточно памяти для завершения операций".
Думаю что проблема в том что в бд access у меня есть поле memo в котором находятся много текстовой информации, а всего записей у меня около 50. Отсюда и вытекает недостаток памяти. Но не могу понять какой именно памяти не хватает, оперативной? И как можно обойти это?
Заранее спасибо!
Ответить с цитированием
  #2  
Старый 24.03.2013, 15:02
Аватар для Dux
Dux Dux вне форума
Активный
 
Регистрация: 18.03.2008
Сообщения: 206
Репутация: 16
По умолчанию

Для вывода в Excel попробуйте следующий код:

Код:
var
  XL, XArr: Variant;
  j,i: Integer;
begin

  // Создаем массив элементов, полученных в результате запроса
  XArr := VarArrayCreate([1, ADOQuery1.FieldCount], varVariant);
  XL := CreateOLEObject('Excel.Application'); // Создание OLE объекта
  XL.WorkBooks.add;
  XL.visible := true;

   j := 1; // Отступаем 1 строчку
  ADOQuery1.First;
   while not ADOQuery1.Eof do
    begin
       i := 1;
        while i <= ADOQuery1.FieldCount do
         begin
          XArr[i] := ADOQuery1.Fields[i - 1].Value;
          i := i + 1;
         end;

     XL.Range['A' + IntToStr(j),
     CHR(64 + ADOQuery1.FieldCount) + IntToStr(j)].Value := XArr;
     ADOQuery1.Next;
     j := j + 1;
    end;
    end;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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