|
#1
|
|||
|
|||
Базы данных
Помогите! Передо мной стоит задача. у меня есть база внеё я добовляю записи как всё заполнел мне нужно чтоб эти записи у меня отправелись на печать но не просто в отчёте Qreport f а сначала данные с DBGrida должны попасть в Word как это можно сделать. Да и исче таблица большая много Столбцов.
|
#2
|
||||
|
||||
Но если очень надо можно и Word
Отправляй лучше в Excel
добавь модуль в проект Borland\Delphi7\Source\Rtl\Common\ComObj.pas implementation uses ComObj; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Excel: variant; i:Integer; begin Excel := CreateOleObject('Excel.Application'); Excel.Workbooks.Add; Table1.First; for i:=1 to Table1.RecordCount do begin Excel.Sheets[1].Cells[i,1].Value:=Table1.FieldByName('Имя_поля').Asstring; Excel.Sheets[1].Cells[i,2].Value:=Table1.FieldByName('Имя_поля_2').Asstring; ...; Table1.Next; end; Excel.Visible:=True; close; end; Последний раз редактировалось merdashka, 11.04.2007 в 12:01. |
#3
|
|||
|
|||
Спасибо
Спасибо я попробую. Но возможно ли будет сделать Шапку для Отчёта И как это можно сделать я пробывал писать Макрас но он почемуто несрабатывает пишет "немогу связаться с базой данных или неправельно задан параметр"
|
#4
|
||||
|
||||
Код не компилировал могут быть ошибки и даже много
Надеюсь в коде ты разберешься(постораюсь разложить все подробно):
У нас есть таблица Которая называется например инженеры, содержащая два поля "NAME" ну и предположим "SERNAME"(это все что позволила придумать мне моя фантазия) Мы собираемся создать таблицу в Экселе: В заголовке написать ИНЖЕНЕРЫ и снизу таблицу с шапкой. ПОЕХАЛИ: procedure TfrmOrganization.Button1Click(Sender: TObject); var Excel: variant; i:Integer; begin Excel:= CreateOleObject('Excel.Application'); Excel.Workbooks.Add; // создаем лист excel Excel.ActiveSheet.PageSetup.Orientation:= 2;//альбомный лист Excel.ActiveWorkBook.WorkSheets[1].Range['A1:B1'].Select; //выделяем две ячейки Excel.Selection.Font.Bold:=true; //в выделенных ячейках устанавливаем жирный шрифт Excel.ActiveWorkBook.WorkSheets[1].Range['A1:B1'].Merge; //Объеденяем выделенное Excel.Sheets[1].Cells[h,1].Value:='ИНЖЕНЕРЫ';// И наконец вводим слово ИНЖЕНЕРЫ зоголовок готов Excel.ActiveWorkBook.WorkSheets[1].Range['A2:B2'].Select;//выделяем диапозоз Excel.Selection.Font.Bold:=true;// устанавливаем шрифт Excel.Sheets[1].Cells[2,1].Value:=DbGrid1.Columns[0].Title.Caption;//Делаем шапку причем значение берем из названия колонки DBGRid Excel.Sheets[1].Cells[2,2].Value:=DbGrid1.Columns[1].Title.Caption;// Вторая колонка Table1.First; for i:=1 to Table1.RecordCount do begin h:=h+1; Excel.Sheets[1].Cells[i+2,1].Value:=Table1.FieldByName('NAME').AsString;//вводим значения таблицы Excel.Sheets[1].Cells[i+2,2].Value:=Table1.FieldByName('SERNAME').AsString; Table1.Next; end; Excel.ActiveWorkBook.WorkSheets[1].Range['A1:B'+IntToStr(Table1.RecordCount+2)].Select; //выдяляем всю таблицу Excel.Selection.Borders.LineStyle:=1;// устанавливает границы Excel.Selection.HorizontalAlignment:=-4108;// выравниваем текст по центру Excel.Selection.EntireColumn.AutoFit;// выравниваем колонки по значениям Excel.Visible:=True; // показываем наши труды end; |
#5
|
||||
|
||||
А вот за этот код даю руку на отсечения. Правда пока не знаю чью руку
procedure TfrmZakazchik.Image2Click(Sender: TObject);
var Excel: variant; i:Integer; begin if MessageDlg('Вы уверены, что хотите экспортировать данные в Excel?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin Excel:= CreateOleObject('Excel.Application'); Excel.Workbooks.Add; Excel.Sheets[1].Cells[1,1].Value:='Заказчик';// Создаем шарку Excel.Sheets[1].Cells[1,2].Value:='Адрeс и контактные данные'; Excel.ActiveWorkBook.WorkSheets[1].Range['A1:B1'].Select;//Выделяем ячейки Excel.Selection.HorizontalAlignment:=-4108;//Текст ячеек вырвниваем по центру Excel.Selection.Interior.ColorIndex:=20;//устанавливаем цвет фона Excel.Selection.Font.Bold:=true;// шрифт жирный ProgressBar1.Max:=Table1.RecordCount; ProgressBar1.Position:=0; Table1.First; For i:=1 to Table1.RecordCount do begin Excel.Sheets[1].Cells[i+1,1].Value:=Table1.FieldByName('Zakazchik').AsString;//вводим значения таблицы Excel.Sheets[1].Cells[i+1,2].Value:=Table1.FieldByName('Adres').AsString; ProgressBar1.Position:=i; Table1.Next; end; Excel.ActiveSheet.PageSetup.Orientation:= 2;//альбомная страница Excel.ActiveWorkBook.WorkSheets[1].Range['A1:B'+IntToStr(Table1.RecordCount+1)].Select;//выделяем всю таблицу Excel.Selection.Borders.LineStyle:=1;//устанавливаем границы Excel.Selection.EntireColumn.AutoFit;// выравниваем колонки по тексту Excel.ActiveSheet.PageSetup.PrintTitleRows:='$1:$1 ';// при печати на каждой странице ввыводится шапка ProgressBar1.Position:=0; Excel.Visible:=True;//показываем наши труды Table1.First; end; Последний раз редактировалось merdashka, 17.04.2007 в 10:54. |
#6
|
|||
|
|||
Благадарю. Спасибо буды пробывать.
Но вот есть есчо один вопрос немогли бы вы мне подсказать какая функция в делфи отвечает за определение формата листа и его ориентации. Мне нужно зделать чтоб у меня Ориентация листа после создания документа Word стала Альбомной. Вот такая есчо проблема Документ создаётся а Ориентация та Книжная. и все поля моей таблице неумещаються выходят за пределы листа. Есчё раз Спасибо. буду пробывать ваши варианты. Да подскажить мне Как можно через Делфи открывать уже готовые шаблоны и заполнять их? |
#7
|
||||
|
||||
В Word Сервис/Параметры - ставишь галочку "коды полей". Куда нужно будеть вставить данные ставишь ссылку - {DOCVARIABLE fio \* MERGEFORMAT}
(fio - это переменная заменишь на любую). После скрываешь коды полей. Сохраняешь как шаблон. И уже в Delphi Var Application:variant; begin Application:= CreateOleObject('Word.Application'); Application.Documents.Add('c:\Viza.dot', False, 0); Application.ActiveDocument.Variables.Item('fio').V alue := Table1.FieldByName('Name').AsString+' '+Table1.FieldByName('Familiya').AsString; Application.ActiveDocument.Fields.Update; Application.Visible := True; end; В Excel Excel.Workbooks.Add('путь к шаблону');// а заполнять как простой лист Excel А по поводу ориентации листа Word ничего тебе сказать не смогу, обычно в Word сначала создаются шаблоны , где устанавливается эта подлая ориентация. Короче селяви. Может нам кто еще поможет, будем уповать и молиться Последний раз редактировалось merdashka, 18.04.2007 в 13:42. |
#8
|
|||
|
|||
Спасибо всё получилась.
|