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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.07.2010, 01:34
Antonio2040 Antonio2040 вне форума
Прохожий
 
Регистрация: 22.07.2010
Сообщения: 4
Репутация: 10
Восклицание Проблемы выгрузкой в Excel

СРОЧНО нужна помощь!!! Для начало вкратце объясню суть задачи. Есть огромная dbf-таблица. Из нее необходимо выбрать данные по определенным критериям и сформировать отчет в Excel. Я делаю с помощью технологии ADO, вывожу в DBGrid саму таблицу. А вот отчет сделать не могу. Таблица должна состоять из нескольких строк, в каждой из которых содержится сумма всех элементов, обладающих сходными свойствами. Проблема состоит в том, что я не могу сформировать правильный SQL-запрос. Как в него добавить строки или что-то вроде того?

Или...

Есть еще идея. Можно выгружать в Excel по строке. Но есть одно "но". В процедуре выгрузки файл перезаписывается. Можно ли сделать так, чтобы сначала выгрузились все данные, а потом только он сохранился?

Вот процедура выгрузки:
Код:
// Выгрузка в Excel
procedure SendtoExcel(ShFile: string; Querys: TADOQuery; m,n:Integer);
var
 ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData: variant;
 BeginCol, BeginRow, j: integer;
 RowCount, ColCount: integer;
begin

// Задаем верхнюю левую ячейку
 BeginCol:=2;
 BeginRow:=4;

// Задаем размеры области, в которую выводятся данные
 RowCount:=Querys.RecordCount+1;
 ColCount:=Querys.FieldDefs.Count;

// Создание Excel
 ExcelApp:=CreateOleObject('Excel.Application');

// Отключение реакции Excel на события
 ExcelApp.Application.EnableEvents:=False;

// Создание книги (Workbook)
// Если заполняем шаблон, то
 Workbook:=ExcelApp.Workbooks.Add(ShFile);
 Workbook.SaveAs(ShFile);
 ArrayData:=VarArrayCreate([1, RowCount, 1, ColCount], varVariant);

// Заполнение массива
 Querys.DisableControls;
 Querys.First;
 while not Querys.Eof do
  begin
   for j:=1 to Querys.FieldDefs.Count do
    begin
     ArrayData[Querys.RecNo, j]:=
     Querys.FieldbyName(Querys.FieldDefs.Items[j-1].DisplayName).Value;
    end;
    Querys.Next;
  end;
 Querys.EnableControls;

// Левая верхняя ячейка
 Cell1:=Workbook.Worksheets[1].Cells[BeginRow, BeginCol];

// Правая нижняя ячейка
 Cell2:=Workbook.Worksheets[1].Cells[m, n];

// Область, в которую выводятся данные
 Range:=Workbook.Worksheets[1].Range[Cell1,Cell2];

// Вывод данных
 Range.Value:=ArrayData;

// Делаем Excel видимым
 ExcelApp.Visible:=True;
end;
ПОМОГИТЕ плиз, а то на работе прибьют

Admin: Пользуемся тегами для оформления кода!
ОК, исправлюсь) С оформлением больше проблем не будет!

Последний раз редактировалось Antonio2040, 22.07.2010 в 11:52.
Ответить с цитированием
  #2  
Старый 22.07.2010, 08:50
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Выгрузить это не проблема только зачем таблицу выводить в грид? все что нужно это написать запрос, указать условие отборы и поля которые возможно надо суммировать и потом уже данные из запроса выгрузить в эксель. Проблема сам запрос написать? структуры таблицы приведи и что суммировать в таком случае...
Ответить с цитированием
  #3  
Старый 22.07.2010, 11:39
Antonio2040 Antonio2040 вне форума
Прохожий
 
Регистрация: 22.07.2010
Сообщения: 4
Репутация: 10
По умолчанию

http://dump.ru/file/4688689 - это таблица Excel
Изображение - это моя выборка (общая из всей таблицы)

С запросом проблемы, это да. В DBGrid необязательно выгружать. Мне уже все равно, как это делать, лишь бы как надо работала))
Ответить с цитированием
  #4  
Старый 22.07.2010, 11:40
Antonio2040 Antonio2040 вне форума
Прохожий
 
Регистрация: 22.07.2010
Сообщения: 4
Репутация: 10
По умолчанию

Вот изображение.
Изображения
Тип файла: jpg Table.JPG (86.5 Кбайт, 11 просмотров)
Ответить с цитированием
  #5  
Старый 22.07.2010, 11:46
Antonio2040 Antonio2040 вне форума
Прохожий
 
Регистрация: 22.07.2010
Сообщения: 4
Репутация: 10
По умолчанию

Запрос необходимо сформировать таким образом, чтобы по каждой массе из Excel'евской таблицы суммировалось то, что выделено красным, с условием того, что выделено синим цветом (Table.jpg). Необходимо, чтобы была такая таблица в итоге. Желтый и розовый - строка и столбец с формулами.
Изображения
Тип файла: jpg Table_2.jpg (89.5 Кбайт, 11 просмотров)

Последний раз редактировалось Antonio2040, 22.07.2010 в 11:48.
Ответить с цитированием
  #6  
Старый 22.07.2010, 15:28
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Цитата:
Сообщение от Antonio2040
Запрос необходимо сформировать таким образом, чтобы по каждой массе из Excel'евской таблицы суммировалось то, что выделено красным
select mas, sum (то что выделено красным)
Цитата:
Сообщение от Antonio2040
с условием того, что выделено синим цветом
where (условие того что выделено синим цветом)

если нужно по каждом массе суммировать показатели можно пробывать сделать запрос с параметрами и в цикле присваивать эти самые массы как параметры а результатзаписывать в тот же эксель.
Ответить с цитированием
  #7  
Старый 22.07.2010, 20:11
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию EMS

Есть пакет компонентов :

EMS Advanced Export Component Suite
(он же EMS QuickExport Component Suite 3.0 - более ранняя версия).

Он ориентирован на выгрузку (экспорт) данных из Баз Данных в различные форматы.
В частности :
XLS, HTML, RTF, PDF, CSV, XML, TXT и др.

Очень сильный пакет.

На торрентах можно найти.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter