Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

Отчеты   Найти похожие ветки 

 
Чуча   (2006-12-20 19:15) [0]

Хелп, плиииз! Помогите, подалуйста, сделать отчет, формируемый на этапе выполнения, то есть в Word. Хотя бы просто вывести данные таблицы в Word.


 
rar ©   (2006-12-20 19:25) [1]

Если из dbGrid то я делаю след. образом

unit UnitExport;

interface
Uses
 Windows, Messages, DB, Forms, Controls, DBGrids, StdCtrls, COMObj, ExcelXP,
 Word97, SysUtils, ClipBrd;

procedure ExportDBGrid(toApp: integer; MainDBGrid:TDBGrid; MainForm:TForm );

implementation

uses UnitMain;

procedure LanguageKeyboard();//Ïåðåêëþ÷àåì êëàâèàòóðó â Êèðèëèöó
var
Layout: array[0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout( StrCopy(Layout,"00000419"),KLF_ACTIVATE)
end;

procedure CreateExcel();//Ïðîöåäóðà ýêñïîðòèðóåò DBGrid â Excel
var
 ExcelApp: Variant;
begin
 try
   ExcelApp := GetActiveOleObject("Excel.Application");
 except
   try
     ExcelApp := CreateOleObject("Excel.Application");
   except
     Exception.Create("Íå ìîãó çàïóñòèòü Excel");
   end;
 end;
 ExcelApp.WorkBooks.Add(xlWBatWorkSheet);
 ExcelApp.Cells.Select;//âûäåëèëè âñå Ctrl+A
 ExcelApp.Selection.NumberFormat:="@";//Óñòàíîâèëè ôîðìàò ÿ÷ååê òåêñòâûé
 ExcelApp.Range["A1"].Select;//ïåðåøëè â ïåðâóþ ÿ÷åéêó
 ExcelApp.ActiveSheet.Paste;//Âñòàâèëè äàííûå èç Clil
 ExcelApp.Visible := true;//Ñäåëàëè âèäèìûì ïðèëîæåíèå
 ExcelApp.WindowState:=xlNormal;
end;

procedure CreateWord(Col:integer);//Ïðîöåäóðà ýêñïîðòèðóåò DBGrid â Word
var
 AppWord:variant;
begin
 try
   AppWord := GetActiveOleObject("Word.Application");
   //AppWord.Visible:=false;
 except
   try
     AppWord := CreateOleObject("Word.Application");
     //AppWord.Visible:=false;
   except
     Exception.Create("Error");
   end;
 end;
 AppWord.Documents.Add;//Ñîçäàåì ÷èñòûé ëèñò
 AppWord.ActiveDocument.PageSetup.Orientation:=wdOrientLandscape;//Äåëàåì îðèåíòàöèþ Àëüáîìíóþ
 AppWord.Selection.Paste;//Âñòàâëÿåì èç Clip
 AppWord.Selection.WholeStory;//âûäåëèòü âñå CTR+A
 //Ïðåâðàùàåì òåêñò â Òàáëèöó
 AppWord.Selection.ConvertToTable(Separator:=#9, NumColumns:=Col);
 AppWord.Selection.HomeKey(Unit:=wdLine);
 AppWord.ActiveWindow.ActivePane.View.Zoom.Percentage:=75;//Óñòàíàâëèâàåì ìàñøòàá
 AppWord.Visible:=true;//äåëàåì ïðèëîæåíèå âèäèìûì
 AppWord.Activate;
 AppWord.WindowState:=wdWindowStateNormal;
end;

function DataSetToString(MainDBGrid:TDBGrid):string;
var
 s:string;
 col, row:integer;
begin
  //Åñëè ìíîæåñòâåííûé âûáîð òî
 if (dgMultiSelect in MainDBGrid.Options) then
   begin
     for  row:=0  to MainDBGrid.SelectedRows.Count-1 do
     begin
       for col := 0 to MainDBGrid.Columns.Count - 1 do
       begin
         s := s + MainDBGrid.Columns.Items[col].Field.AsString + #9;
       end;
       s := s + #13 + #10;
     end;
   end
   else
   begin
     //äîáàâëÿåì ñòðîêè èç DBGrid â ïåðåìåííóþ S
     MainDBGrid.DataSource.DataSet.First;
     while not MainDBGrid.DataSource.DataSet.EOF do
     begin
       for col := 0 to MainDBGrid.Columns.Count - 1 do
       begin
         s := s + MainDBGrid.Columns.Items[col].Field.AsString + #9;
       end;
       s := s + #13 + #10;
       MainDBGrid.DataSource.DataSet.Next;
     end;
   end;
   Result:=s;
end;

//toApp ðàâíî åñëè Excel òî 1, Word òî 2,
procedure ExportDBGrid(toApp: integer; MainDBGrid:TDBGrid; MainForm:TForm);
var
 bm: TBookmark;
 col: Integer;
 s:String;
begin

 Screen.Cursor := crHourglass;
 MainDBGrid.DataSource.DataSet.DisableControls;
 bm := MainDBGrid.DataSource.DataSet.GetBookmark;

 s := "";

 // äîáàâëÿåì èíôîðìàöèþ äëÿ èì¸í êîëîíîê
 for col := 0 to MainDBGrid.FieldCount-1 do
   s := s + MainDBGrid.Columns.Items[col].Title.Caption + #9;
 //s := s+#10+#13;
 s:=s+#10+#13+DataSetToString(MainDBGrid);

 LanguageKeyboard;
 Clipboard.AsText := s; //Äàííûå - â áóôåð!!!
 MainDBGrid.DataSource.DataSet.GotoBookmark(bm);
 MainDBGrid.DataSource.DataSet.FreeBookmark(bm);
 MainDBGrid.DataSource.DataSet.EnableControls;

 //Îïðåäåëÿì êóäà íàïðàâëÿòü
 case toApp of
   1: CreateExcel();
   2: CreateWord(MainDBGrid.FieldCount+1);
 end;
  Screen.Cursor := crDefault;
end;
end.


 
Чуча   (2006-12-20 19:33) [2]

А если из отчета в delphi, тогда как?


 
rar ©   (2006-12-20 21:11) [3]

из какого отчета, это очень обстрактно,
конкретнее


 
rar ©   (2006-12-20 21:11) [4]

из какого отчета, это очень обстрактно,
конкретнее


 
YurikGL ©   (2006-12-20 21:52) [5]

http://www.delphimaster.ru/articles/dbtoword/index.html



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.013 c
2-1167016229
Single3
2006-12-25 06:10
2007.01.14
Как определить, что переменная равна значениям NAN или -NAN ?


15-1166690617
Vovan #2
2006-12-21 11:43
2007.01.14
Дом-страница без глума про психопатство


2-1167038716
mfender
2006-12-25 12:25
2007.01.14
Перехватить уничтожение контрола при закрытии приложения


15-1166474896
Piter
2006-12-18 23:48
2007.01.14
Лишение прав за вождение в пьяном виде


2-1166891136
AlexanderMS
2006-12-23 19:25
2007.01.14
Почему принтер не печатает, хотя...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский