Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как из ADOQuery'ков перенести информацию в Excel? 
:(
    Опции темы
Grol
Дата 22.5.2005, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Уважаемые Мастера Delphi! Help !!! Вопрос такой. Как из ADOQuery'ков перенести информацию в Excel? Если можно два варианта, т.е. 1) будет создан файл Excel, а потом туда будет перенесена информация и 2) информация будет перенесена во временные переменные, а после чего откроется Excel с уже перенесенной туда информацией из временных переменных. Подскажите пожалуйста. Буду очень благодарен всем, кто откликнется!!!
--------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно.........
PM MAIL ICQ   Вверх
<Spawn>
Дата 22.5.2005, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Зачем создавать временные переменные? Имхо, излишние затраты ресурсов.

Перенести довольно просто:
1) Устанавливаешь связь с Excel (при помощи позднего или раннего связывания)
2) Выполняешь запрос
3) В цикле переносишь полученый набор данных в таблицу Excel
4) Закрываешь связь с Excel

Т.е. примерно так(Исп. позднее связывание. Пишу без Delphi, так что проверь на ошибки smile ):

Код

uses ..., ComObj, ActiveX;


procedure TForm1.Button1Click(Sender: TObject);
var
  Excel, Workbook, Worksheet: OleVariant;
  CurrentRowIndex, CurrentColIndex: integer;
begin
  CurrentRowIndex := 1;
  Excel := CreateOleObject('Excel.Application');
  try
    Workbook := Excel.Workbooks.Add;
    Worksheet := Workbook.Worksheets.Add;
    with ADOQuery do
    try
      Open;
      while not Eof do
      begin
        for CurrentColIndex := 0 to FieldsCount - 1 do
          Worksheet.Cells(CurrentRowIndex, CurrentColIndex + 1) := Fields[CurrentColIndex].AsString;
        Next;
        Inc(CurrentRowIndex);
      end;
    finally
      Close;
    end;
  finally
    Excel.Visible := True;
    Excel := Unassigned;
  end;
end;


Это сообщение отредактировал(а) <Spawn> - 22.5.2005, 10:13


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Vit
Дата 23.5.2005, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Или подключаешься к Excel как к таблице и переносишь тоже в цикле... Может и можно напрямую запросом, но это зависит от того поддерживает ли другая база данных прямое подключение Excel...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
AZDesign
Дата 26.5.2005, 22:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть такой компонент ExcelReadWriteII фирмы axolot (axolot.com)
он позволяет работать с Excel-евским файлом напрямую без использования OLE и тому подобных инструментом

  Вверх
Vit
Дата 27.5.2005, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(AZDesign @ 26.5.2005, 13:58)
Есть такой компонент ExcelReadWriteII фирмы axolot (axolot.com)



А как? Формат-то excel проприетарный... т.е. если идти в обход стандартных средств доступа (OLE, ADO, ODBC) то никто не гарантирует работоспособность в следующих версиях, а если он использует тот же ODBC тогда зачем нужен этот компонент?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




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


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

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