|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
экспорт данных из access в ШАБЛОН excel
Доброго дня, уважаемые форумчане. Столкнулся с такой проблеммой:
имеется база данных, и по нажатию на кнопку она должна экспортироваться в шаблон эксель. Код:
var i,j, index: Integer; ExcelApp,sheet: Variant; begin ExcelApp := CreateOleObject('Excel.Application'); ExcelApp.workbooks.open(ExtractFilePath(ParamStr(0 ))+'reestr\reestrOB.xls'); ExcelApp.Visible := true; ExcelApp.WorkBooks[1].WorkSheets[1].name := 'реестр'; sheet:=ExcelApp.WorkBooks[1].WorkSheets['реестр']; index:=11; //здесь выбираю номер строки в экселе с которой надо заполнять for i:=1 to form6.DBGrid1.DataSource.DataSet.RecordCount do begin for j:=1 to form6.DBGrid1.FieldCount do sheet.cells[index,8]:=form6.DBGrid1.fields[2].asstring; sheet.cells[index,5]:=form6.DBGrid1.fields[0].asstring; sheet.cells[index,2]:=form6.DBGrid1.fields[1].asstring; form6.DBGrid1.DataSource.DataSet.Next; //переход на следующую строку //НУМЕРАЦИЯ СТРОК ИЗ БД sheet.cells[index, 1]:=i;//проставляем в цикле в 1-ю колонку inc(index); end; Вопрос как сделать чтобы при экспорте данных из БД добавлялась строка и в нее вносились данные. В этом примере, в шаблон добавляются данные из БД, а строки не сдвигаются. Заранее спасибо |
#2
|
|||
|
|||
Учимся правильно использовать begin..end. У тебя в цикле исполняется только одна строка, которая идет после for. Надо как-то так:
Код:
for j:=1 to form6.DBGrid1.FieldCount do begin sheet.cells[index,8]:=form6.DBGrid1.fields[2].asstring; sheet.cells[index,5]:=form6.DBGrid1.fields[0].asstring; sheet.cells[index,2]:=form6.DBGrid1.fields[1].asstring; form6.DBGrid1.DataSource.DataSet.Next; //переход на следующую строку //НУМЕРАЦИЯ СТРОК ИЗ БД sheet.cells[index, 1]:=i;//проставляем в цикле в 1-ю колонку inc(index); end; |
#3
|
|||
|
|||
Привел код в порядок, как сказал lmikle, но результат тот же строки не добавляются.
|
#4
|
|||
|
|||
Ой, я совсем плохой стал, невнимательно прочитал код.
Попробуй вот так: Код:
index:=11; //здесь выбираю номер строки в экселе с которой надо заполнять form6.DBGrid1.DataSource.DataSet.First; While Not form6.DBGrid1.DataSource.DataSet.EoF Do begin // Этль цикл не понятно зачем - от j ничего не зависит // for j:=1 to form6.DBGrid1.FieldCount do sheet.cells[index,8]:=form6.DBGrid1.fields[2].asstring; sheet.cells[index,5]:=form6.DBGrid1.fields[0].asstring; sheet.cells[index,2]:=form6.DBGrid1.fields[1].asstring; form6.DBGrid1.DataSource.DataSet.Next; //переход на следующую строку //НУМЕРАЦИЯ СТРОК ИЗ БД sheet.cells[index, 1]:=i;//проставляем в цикле в 1-ю колонку inc(index); end; |