Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   automatizacion Rave Report (https://www.clubdelphi.com/foros/showthread.php?t=58079)

mjjj 07-07-2008 20:41:25

automatizacion Rave Report
 
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.
Código Delphi [-]
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 :)

Código Delphi [-]
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

Código Delphi [-]
 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:
Código Delphi [-]

// 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 := '[email protected]'; {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.


La franja horaria es GMT +2. Ahora son las 05:31:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi