Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2012, 02:15   #1
reihtmonbern
Форумчанин
 
Регистрация: 08.01.2011
Сообщений: 102
По умолчанию из БД ACCESS отчет в EXCEL

Здравствуйте товарищи программисты подскажите пожалуйста решение данной задачи
1) есть бд access (одна таблица) подключена через ado в delphi и данные отображаются в dbgrid1
2) задача такова нужно некоторые данные из таблицы после фильтрации перенести в эксель тоесть в шаблон (1.xls фаил в архиве 1.rar) и вставить в столбец наименование но вставить эти данные нужно не по ячейкам и не диапазоном так как я не знаю конечного количества строк в зависимости от результата фильтрации поэтому нужно вставлять данные при помощью цикла ( а я то как раз циклы не очень понимаю как их программировать)
на подобии чего то такова
# этот код тупо экспортирует все данные из дбгрид
#
var
ExcelApp : variant;
row :integer;
col:integer;
begin
dbgrid1.DataSource.DataSet.First;

ExcelApp:=CreateOLEObject('Excel.Ap plication'); // создает объект
ExcelApp.WorkBooks.add; //новый док
ExcelApp.visible:=true; // показывает док

ExcelApp.WorkBooks[1].WorkSheets[1].Name := 'ScorpioN'; // переименовывание ЛИСТА 1

for col :=0 to DBGrid1.Columns.Count-1 do
ExcelApp.WorkBooks[1].WorkSheets[1].cells[6,col+2].value:=dbgrid1.fields[col].displaylabel;

for row :=0 to DBGrid1.DataSource.DataSet.RecordCo unt-1 do
begin
for col :=0 to DBGrid1.Columns.Count-1 do
begin
ExcelApp.WorkBooks[1].WorkSheets[1].cells[row+7,col+2].value:=dbgrid1.DataSource.DataSet. Fields[col].AsString;// измени цыфры иначе таблица начнется с шестой строки
ExcelApp.WorkBooks[1].WorkSheets[1].cells[row+7,1]:=row+1;// измени цыфры иначе таблица начнется с шестой строки
end;
DBGrid1.DataSource.DataSet.Next;
end;
#
но он мне не подходит так как мне нужно не все данные из базы а определенные и не просто абы куда попало вставлять а в определенное место в столбец наименование.
у меня есть ещё одни код но он работает со стрингридом и в ворд закавыривает
#
var word, doc, tab1: OleVariant;
str, text: string;
var i, j: integer;
begin
GetDir(0,str);
word:=CreateOleObject('Word.Applica tion');
word.Documents.Open('C:\x.doc');

/////////
tab1:=doc.Tables.Item(1);
if stringgrid1.RowCount>2 then
for i := 3 to stringgrid1.RowCount do
tab1.Rows.Add;
for i := 1 to stringgrid1.RowCount - 1 do
for j := 0 to stringgrid1.ColCount - 1 do
tab1.Cell(i+1, j+1).Range.Text:=stringgrid1.Cells[j,i];
word.Visible:=true;
#
лично у меня проблема в том что я не как не до соображу как мне написать код который бы в зависимости от набора данных в бд в экселе в нужном месте сам добавлял строки.
Прошу всех заинтересовавшихся помочь хотя бы советом или гиперссылкой на информацию а то куда ни сунься везде пишут как заполнять данные с помощью ячеек и диапазоном а вот при помощи цикла чё та не как. заранее спасибо ..
Вложения
Тип файла: rar 1.rar (2.3 Кб, 10 просмотров)
reihtmonbern вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отчет бухгалтерии ms access xanderg Фриланс 6 22.02.2012 08:33
Импорт-экспорт данных Excel-Access, и из Access-Excel Людвиг Microsoft Office Access 3 27.10.2011 14:38
Отчет в MS Access DarkGrom Помощь студентам 3 21.04.2011 10:50
Отчет access RS219 Microsoft Office Access 2 18.08.2010 09:10
Отчет в Access Anutk@ Помощь студентам 1 03.03.2009 14:30