Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при передаче в Excel 
:(
    Опции темы
kulikoff
Дата 24.10.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 5.11.2005
Где: Киев

Репутация: нет
Всего: 1



Пишу такую вот процедуру:
Код

procedure TForm11.sBitBtn4Click(Sender: TObject);
var XL, Sheet: variant;
         i, n: integer;
begin
  with form1 do
    begin
      ADOQuery6.Close;
      ADOQuery6.SQL.Clear;
      ADOQuery6.SQL.Text:='select * from bankvuptemp';
      ADOQuery6.Prepared;
      ADOQuery6.Open;
    end;

  XL:=CreateOleObject('Excel.Application');
  XL.WorkBooks.Add;
  Sheet:=XL.ActiveWorkBook.Sheets[1];
  Sheet.PageSetup.Orientation:=2;
  i:=3;
  Sheet.Name:='Звірка';
  Sheet.Range[Sheet.Cells[1,1],Sheet.Range[1,5]].VerticalAligment:=xlVAlignCenter;
  Sheet.Range[Sheet.Cells[1,1],Sheet.Range[1,5]].WrapText:=true;
  Sheet.Range[Sheet.Cells[1,1],Sheet.Range[1,5]].Font.FontStyle:='Полужирный';
  Sheet.Range[Sheet.Cells[1,1],Sheet.Range[1,5]].Merge(false);
  Sheet.Range[Sheet.Cells[1,1],Sheet.Range[1,5]]:='Результат звірки з файлом бухгалтерії';
  Sheet.Cells[2,1]:='Код по базі';
  Sheet.Cells[2,2]:='Сума по базі';
  Sheet.Cells[2,3]:='Код по файлу';
  Sheet.Cells[2,4]:='Сума по файлу';
  Sheet.Cells[2,5]:='Різниця сум';
  n:=1;
  Form1.ADOQuery6.First;
  while not Form1.ADOQuery6.Eof do
    begin
      Sheet.Cells[i,1]:=Form1.ADOQuery6.FieldByName('keybank_b').AsInteger;
      Sheet.Cells[i,2]:=Form1.ADOQuery6.FieldByName('s_b').AsFloat;
      Sheet.Cells[i,3]:=Form1.ADOQuery6.FieldByName('keybank_bt').AsInteger;
      Sheet.Cells[i,4]:=Form1.ADOQuery6.FieldByName('s_bt').AsFloat;
      Sheet.Cells[i,5]:=Form1.ADOQuery6.FieldByName('dif').AsFloat;
      inc(i);
      Form1.ADOQuery6.Next;
    end;
end;


При запуске выдает ошибку:
OLE error 800A03EC
Что это такое и как с ним бороться? Где ошибка?
PM MAIL WWW ICQ Skype   Вверх
_hunter
Дата 24.10.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



ты бы, хоть, строку, вызывающую ошибку, указал...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Akella
Дата 24.10.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329



странные какой-то экспорт.
Я вот так и продолжал, в цикле

Код

For iCol := ...
  For iRow := ...
    Sheet.Cells[iCol,iRow]:='';

PM MAIL   Вверх
kulikoff
Дата 24.10.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 5.11.2005
Где: Киев

Репутация: нет
Всего: 1



Ругается на какую-то из этих строк:
Код

Sheet.Range[Sheet.Cells[1,1],Sheet.Range[1,5]].VerticalAligment:=xlVAlignCenter;
  Sheet.Range[Sheet.Cells[1,1],Sheet.Range[1,5]].WrapText:=true;
  Sheet.Range[Sheet.Cells[1,1],Sheet.Range[1,5]].Font.FontStyle:='Полужирный';
  Sheet.Range[Sheet.Cells[1,1],Sheet.Range[1,5]].Merge(false);
  Sheet.Range[Sheet.Cells[1,1],Sheet.Range[1,5]]:='Результат звірки з файлом бухгалтерії';  

Установил опытным путем
PM MAIL WWW ICQ Skype   Вверх
Akella
Дата 24.10.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329



скорее всего на это - xlVAlignCenter;

Код

// Горизонтальное выравнивание по центру
ExcelApplication1.Range['A1','D1'].HorizontalAlignment := xlCenter;
// Вертикальное выравнивание по центру
ExcelApplication1.Range['A1','D1'].VerticalAlignment:=xlCenter;
// сетка таблицы
ExcelApplication1.Range['A1','D1'].Borders.LineStyle:=xlContinuous;
// перенос текста в ячейках по словам
ExcelApplication1.Range['A1','D1'].WrapText:=true;
// стиль шрифта в ячейке жирный
ExcelApplication1.Range['A1','D1'].Font.Bold:=true;
// заливка ячеек жёлтым цветом
ExcelApplication1.Range['A1','D1'].Interior.ColorIndex:=36;


Добавлено @ 15:56 
kulikoff, в uses какой модуль подключён для офиса?
PM MAIL   Вверх
_hunter
Дата 24.10.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



Цитата(kulikoff @  24.10.2006,  15:42 Найти цитируемый пост)
Ругается на какую-то из этих строк:

а отладчиком по коду пройтись это слишком просто?..


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
kulikoff
Дата 25.10.2006, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 5.11.2005
Где: Киев

Репутация: нет
Всего: 1



модуль Excel2000

Добавлено @ 11:48 
и как узнать цвета в Екселе? Ну, например, где можно глянуть, что ExcelApplication1.Range['A1','D1'].Interior.ColorIndex:=36;
 - это желтый?
PM MAIL WWW ICQ Skype   Вверх
Fedia
Дата 26.10.2006, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: нет
Всего: 13



Цитата(kulikoff @  24.10.2006,  15:42 Найти цитируемый пост)
Ругается на какую-то из этих строк:

Отладчиком пользоваться не умеешь. Ищи информацию по ключевым словам "точка останова", "Breakpoint", "пошаговая отладка" и т.п. Сильно облегчишь себе работу.

Цитата(kulikoff @  25.10.2006,  11:39 Найти цитируемый пост)
и как узнать цвета в Екселе? Ну, например, где можно глянуть, что ExcelApplication1.Range['A1','D1'].Interior.ColorIndex:=36; - это желтый?

Могу предложить обратный вариант: как узнать индекс определенного цвета. 
1. Включаешь запись макроса в Excelе.
2. Меняешь цвет ячейки, на необходимый тебе.
3. Останавливаешь запись макроса.
4. Просматриваешь макрос и выясняешь, какое число было присвоено полю ColorIndex.

Возможно есть более простой способ.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Albinos_x
Дата 26.10.2006, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



1. Не
VerticalAligment
а
VerticalAlignment
- буковка n пропущена...

2. 
Цитата

Range[Sheet.Cells[1,1],Sheet.Range[1,5]]

такая адресация ни к чему, кроме ошибок не приведёт, т.к. методу Range нужен адрес ячееек(ячейки), а не ссылка на её содержание...
т.е правильно было бы так:
Код

Sheet.Range['A1','A5'].VerticalAlignment:=xlCenter;


3. думаю стоит поставить в конце:
Код

XL.Visible:=true;



вот так всё работает:

Код
...
XL:=CreateOleObject('Excel.Application');
  XL.WorkBooks.Add;
  Sheet:=XL.ActiveWorkBook.Sheets[1];
  Sheet.PageSetup.Orientation:=2;
  i:=3;
  Sheet.Name:='Çâ³ðêà';
  Sheet.Range['A1','A5'].VerticalAlignment:=xlCenter;
  Sheet.Range['A1','A5'].HorizontalAlignment:=xlCenter;
  Sheet.Range['A1','A5'].WrapText:=true;
  Sheet.Range['A1','A5'].Font.FontStyle:='Ïîëóæèðíûé';
  Sheet.Range['A1','A5'].Merge(false);
  Sheet.Range['A1','A5']:='Ðåçóëüòàò çâ³ðêè ç ôàéëîì áóõãàëòåð³¿';
  Sheet.Cells[2,1]:='Eia ii aac?';
  Sheet.Cells[2,2]:='Noia ii aac?';
  Sheet.Cells[2,3]:='Eia ii oaeeo';
  Sheet.Cells[2,4]:='Noia ii oaeeo';
  Sheet.Cells[2,5]:='cieoy noi';
  n:=1;
...
  XL.Visible:=true;
...



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0706 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.