Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Никто не подскажет, почему при передаче в Excel я получаю


}|{yk ©   (2004-10-26 17:55:00) 

ошибку OLE?
function TMyDBGrid.SaveToXLS(FileName: TFileName; UseOnlyVisibleColumns: boolean = true): TFunctionResult;
var
 XLSArray, XLSRow: Variant;
 HighBound, IDX: integer;
 book: TBookmark;
 E: Exception;
 FieldsList: TStringList;
 Diapasone: string;
 ExcelApp: TOpExcel;
begin
 Result.Successful := False;
 Result.MessageOnError := 'There is no data grid';
 try
   if Assigned(self) then
     if Assigned(DataSource) then
       if Assigned(DataSource.DataSet) then
       begin
         try
           book := DataSource.DataSet.GetBookmark;
           DataSource.DataSet.DisableControls;
           if DataSource.DataSet.IsEmpty then
           begin
             Result.MessageOnError := 'Dataset is empty'
           end
           else
              {а тут власне виведення даних до варіантного масиву}
           begin
             FieldsList := TStringList.Create;
             for Idx := 0 to self.Columns.Count - 1 do
             begin
               if self.Columns[Idx].Visible or not UseOnlyVisibleColumns then
                 FieldsList.Add(self.Columns[Idx].FieldName);
             end;
             with self.DataSource.DataSet do
             begin
               Last; {щоб відфетчити всі записи}
               XLSArray := VarArrayCreate([0, RecordCount - 1], varVariant);
               First;
               while not Eof do
               begin
                 XLSRow := VarArrayCreate([0, FieldsList.Count - 1], varVariant);
                 for IDX := 0 to FieldsList.Count - 1 do
                   XLSRow[IDX] := FindField(FieldsList.Strings[Idx]).Value;
                 XLSArray[RecNo - 1] := XLSRow;
                 Next;
               end;
               Diapasone := GetCellDiapasoneName(1, FieldsList.Count, 1, RecordCount);
             end;
             Result.MessageOnError := 'Data retrived from dataset, but not inserted into Excel';
             {тепер грузимо Excel та кидаємо в нього масив}
             try
               ExcelApp := TOpExcel.Create(self);
               ExcelApp.Visible := false;
               ExcelApp.Connected := true;
               with ExcelApp.Workbooks.Add do
               begin
                 with Worksheets.Add do
                   with Ranges.Add do
                   begin
                     Address := Diapasone;
                     Name := 'GRID_DATA';
                     Value := XLSArray;
                   end;
                 SaveAs(FileName);
               end;
               Result.Successful := true;
               Result.MessageOnError := 'Succesfull transfered data';
             finally
               ExcelApp.Free;
             end;
           end;
         finally
           if Assigned(book) then
             DataSource.DataSet.GotoBookmark(book);
           DataSource.DataSet.EnableControls;
         end;
       end;
 except on E: Exception do
   begin
     Result.MessageOnError := E.Message;
     Exit;
   end;
 end;
end;


clickmaker   (2004-10-26 18:20:00) [1]


> [1] VMcL ©   (26.10.04 17:58)
> >>}|{yk ©  (26.10.04 17:55)
>
> Строку, на которой возникает ошибка, и текст сообщения об
> ошибке нужно угадать?

Автор только не сказал, какой приз нам за это будет


VMcL   (2004-10-26 17:58:00) [2]

>> }|{yk ©  (26.10.04 17:55)

Строку, на которой возникает ошибка, и текст сообщения об ошибке нужно угадать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо