PDA

Ver la Versión Completa : automatizacion Rave Report


mjjj
07-07-2008, 20:41:25
Hola amigos, espero me puedan ayudar...
Tengo que enviar por correo un archivo en pdf.
Para generar este archivo lo hago con el Rave report, y utilizando el componente TRvRenderPDF, lo transformo a PDF.

Todo funciona de maravilla, el problema es que lo tengo que hacer todo manualmente... como puedo hacer para automatizar esto

- generar automaticamente el archivo PDF basado en el reporte del Rave, en un directorio temporal.
- envie el correo (esto lo tengo funcionando)
- elimine el archivo temporal

este el el codigo con el cual obtengo el reporte en Rave.

RVPROJECT1.SetParam('CORREO',FORM1.Label10.CAPTION);
RVPROJECT1.ExecuteReport('empresa');


Espero que se haya entendido mi consulta...

Saludos

egostar
07-07-2008, 21:02:56
Yo te puedo ayudar a automatizar la creación del pdf :)

begin
RvSystem1.DefaultDest := rdFile;
RvSystem1.DoNativeOutput := false;
RvSystem1.RenderObject := RvRenderPDF1;
RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];
RvSystem1.OutputFileName := 'c:\temp\archivo.pdf';
RvProject1.Execute;
EnviaCorreo('c:\temp\archivo.pdf'); //Hay en el foro varias formas de hacer esto
end;

Salud OS

Caro
08-07-2008, 03:23:29
Hola mjjj, para crear tu directorio puedes utilizar CreateDir


RutaDir := ExtractFilePath(Application.ExeName)+'NombreDir';
if not DirectoryExists(RutaDir) then
CreateDir(RutaDir); // Creamos el directorio

Archivo := RutaDir+'\'+'NombrePdf.Pdf';

//El codigo que te paso egostar
.......
RvSystem1.OutputFileName := Archivo;
........
........
DeleteFile(Archivo);


Si tienes mas de un pdf en tu directorio tendras quer recorrer e ir borrando uno a uno y si quieres borrar tu directorio temporal puedes utilizar la función RemoveDir.

Saluditos

Loviedo
08-07-2008, 18:41:40
A lo mejor esto te puede ayudar:


// crear PDF
procedure TForm1.Button1Click(Sender: TObject);
var
NDRStream: TMemoryStream;
begin
NDRStream := TMemoryStream.Create;
RvProject1.open;
RvProject1.SelectReport('Presupuesto',true);
RvProject1.SaveToStream(NDRStream);
RvNDRWriter1.Stream:=NDRStream;
RvProject1.Execute;
RvRenderPrinter1.Render(NDRStream);
RvProject1.close;
try
RvRenderPDF1.PrintRender(NDRStream,'C:\Temp\Pba.pdf');
except
NDRStream.Free;
end;


// Con los componentes Indy enviar correo

if not FileExists('C:\Temp\Pba.pdf') then
exit;
SMTP.Host := mHost;
SMTP.Port := strtoint(mPuerto);
SMTP.username := mUsuario;
SMTP.password := mPassword;

MailMessage.Clear;
MailMessage.From.Address := mEmail;
MailMessage.From.Name := mNombre;
MailMessage.Recipients.EMailAddresses := 'Prueba@hotmail.com'; {destino}
MailMessage.BCCList.add.Address := mEmail;
MailMessage.Subject := mAsunto;
MailMessage.Body.Text := mTexto;

TIdAttachment.Create(MailMessage.MessageParts,'C:\Temp\Pba.pdf');

try
try
SMTP.Connect(1000);
SMTP.Send(MailMessage);
except
showmessage('Fallo en el Envío de Correo');
exit;
end;
finally
if SMTP.Connected then
SMTP.Disconnect;
end;

// si lo desea DeleteFile('C:\Temp\Pba.pdf');
// Si busca en el foro, hay información sobre el tema
end;



Saludos.