Ver Mensaje Individual
  #4  
Antiguo 03-07-2003
Germi Germi is offline
Registrado
 
Registrado: jun 2003
Ubicación: Valencia
Posts: 9
Reputación: 0
Germi Va por buen camino
Te voy a resumir. Primero para pasar cualquier fichero a PDF necesitas la versión del Acrobat completa. Una vez instalada, te creara una impresora virtual llamada Acrobat Distiller. Cuando imprimas el Qreport, tienes que cambiarlo a esta impresora. Antes en las propiedades de la impresora le tienes que añadir un nuevo puerto para indicarle la ruta donde quieres que te deje el fichero convertido. Al ejecutarlo, te creara el informe del qreport en un fichero .PDF en el directorio donde que hayas dicho en el puerto comentado anteriormente.
Una vez tengas el archivo en disco, lo envías por correo electrónico a donde quieras. Para ello mira en Trucos el nº 412 que lo explica muy bien y funciona correctamente.
Existe un pequeño problema que es fácil de resolver. Como el crear el fichero a formato PDF o cualquier otro formato tarda unos segundos y lo hace en Batch, el intentará enviar enseguida el fichero y puede que te de error de que no lo encuentra o que envié solo parte de lo generado. Para ello añade el control TTimer de la paleta System. Esto ejecuta un evento transcurridos X segundos. Pones la propiedad Enable a False para activarlo tu cuando quieras que será después de enviar a imprimir el Qreport y transcurridos los segundos que tu le digas en la propiedad interval ejecutara el procedure donde debes rellenar el envió por correo.

Espero haberme explicado mas o menos. Te puedo decir que si lo haces bien funciona y no es muy complicado.

Saludos y a por el.



procedure Nombre del procedure de botón imprimir...;
begin

// Selecciona la impresora de conversión a acrobat.
// Hay que crear un puerto en las impresoras virtuales
// Con esto conseguimos convertir a PDF un archivo Qrepot
// Hay que coger la impresora virtual de acrobat. Con la instrucción PrinterSettings.PrinterIndex:=nº donde este es el numero de la impresora.
QROrigenes := TQROrigenes.Create(Self);
QROrigenes.PrinterSettings.PrinterIndex:=3;
QROrigenes.Print;
Timer.Enabled:=True;

end;

procedure TimerTimer(Sender: TObject);

begin
// Envió de correo
Poner en este procedure el Truco 412 (Enviar email, con adjunto y sin abrir navegador);
// Desactiva el control de tiempo
Timer.Enabled:=False;

end;
Responder Con Cita