Export a odesílání sestav |
Top Previous Next |
Seznam témat:
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 |