| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > РАбота с ADOQueary без DBRid |
| Автор: Ins813 7.6.2012, 09:58 |
| Здравствуйте, скажите пожалуйста, есть MSSQL-БД, ADOQueary. Как выгрузиться с помощью Queary в Excel ? ADOQuery1.First; for i:= 1 to ADOQuery1.RecordCount -1 do begin for j:= 1 to DBGrid1.Columns.Count do sheet.cells[index,1]:=adoquery1.FieldByName('name').AsString; inc(index); ADOQuery1.Next; end; |
| Автор: Данкинг 7.6.2012, 10:18 |
Почему -1: последняя строчка не нужна, что ли? Откуда тут Грид взялся? Ну да, суть такая, только предварительно надо, разумеется, создать Ole-Объект, а в нём - новую книгу. |
| Автор: Ins813 7.6.2012, 10:42 |
| var Form1: TForm1; XLApp,Sheet,Colum: variant; index,i: integer; .... procedure TForm1.Button2Click(Sender: TObject); begin XLApp:= CreateOleObject('Excel.Application'); XLApp.Visible:=true; XLApp.Workbooks.Add(-4167); XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт'; Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns; Colum.Columns[1].ColumnWidth:=8; .... Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows; Colum.Rows[3].Font.Bold:=true; Colum.Rows[1].Font.Bold:=true; Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт']; Sheet.Cells[1,5]:='Утверждаю:'; Sheet.Cells[2,4]:=' Ген.директор'; index:=4; ADOquery1.First; for i:=0 to ADOquery1.RecordCount do begin Sheet.Cells[index,1]:=IntToStr(i+1); Sheet.Cells[index,2]:= ADOquery1.FieldByName('date').AsString; Sheet.Cells[index,3]:= ADOquery1.FieldByName('name').AsString; Sheet.Cells[index,4]:= ADOquery1.FieldByName('kol_vo').AsString; Sheet.Cells[index,5]:= ADOquery1.FieldByName('street').AsString; Sheet.Cells[index,6]:= ADOquery1.FieldByName('kv').AsString; Inc(index); ADOquery1.Next; end; Выдает ошибку ADOQuery cannot perform this operation on a close dataset |
| Автор: Ins813 7.6.2012, 11:22 |
| Спасибо Вам, получилось, вот Только Осталась проблема с Предварительным просмотром, не знаеете как реализовать его ? |