Export a odesílání sestav

Top  Previous  Next

Seznam témat:

řešení

 

Řešení

Skript ukazuje způsob, jakým lze hromadně vygenerovat množinu sestav a odeslat jednotlivé exporty e-mailem. Příklad řeší situaci, kdy je k dispozici seznam parametrů pro sestavu spolu s cílovými emailovými adresami. Pro každý parametr je třeba vygenerovat sestavu, vytvořit export do formátu PDF a odeslat jej emailem na danou adresu.

U sestavy se předpokládá, že je koncipována tak, že se ve svém datovém zdroji (dotazu) opírá o databázovou proměnnou @param (...where sloupec = @param). Skript by bylo vhodné doplnit o zobrazení průběhu

 

var

 Qry: TQuery;

 FileName,Param,EmailTo: string;

begin

 //připrav v DB proměnnou pro parametr sestavy

 try

   ExecSQL('drop variable @param', nil);

 except

 end;

 ExecSQL('create variable @param char(20)', nil);

 //otevři dotaz se seznamem emailů a parametrů pro sestavu

 Qry := TQuery.Create(nil);

 try

   Qry.DatabaseName := DefaultDatabaseName;

   Qry.SQL.Add('select param, email from dba.data_pro_export');

   Qry.SQL.Add('where email is not null order by param');

   Qry.Open;

   while not Qry.Eof do begin

     Param := Qry.Fields[0].AsString;

     EmailTo := Qry.Fields[1].AsString;

 

     //ulož parametr do proměnné v DB, se kterou počítá sestava

     ExecSQL('set @param = :value', [Param]);

   

     //sestav dočasné jméno souboru pro export sestavy

     FileName := GetTempPath + Param + '_' +

       FormatDateTime('yyyy-mm-dd', Date) + '.pdf';

 

     //vygeneruj export sestavy

     InvokeReport('Sestavy pro export\Denní souhrny', 2, FileName);

   

     //sestav a odešli email

     ClearMailItems;

     SetMailItem('TO', EmailTo);

     SetMailItem('SUBJECT', 'Souhrny');

     SetMailItem('BODY', 'V příloze jsou denní souhrny za '+DateToStr(Date));

     SetMailItem('FILE', FileName);

     SendMail(False);

   

     //ukliď vygenerovaný soubor

     DeleteFile(FileName);

   

     //další řádek

     Qry.Next;

   end;

 finally

   Qry.Free;

 end;

end.

 

 

Související témata