Главная страница
    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.012 c
2-1166641009
Серый
2006-12-20 21:56
2007.01.14
stringGrid


15-1165935162
Гарри Поттер
2006-12-12 17:52
2007.01.14
Монтаж локальной сети. Склько может стоить?


15-1166631218
Ega23
2006-12-20 19:13
2007.01.14
Можно ли как-нибудь настроить Complete class at cursor ?


2-1166759786
Руслан56
2006-12-22 06:56
2007.01.14
Немогу написать код для посчета и вывода результатов.


15-1166702224
KatE*
2006-12-21 14:57
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский