Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2003
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 21
Aprendiendo Va por buen camino
Question Mandar QReport por email

Hola a tod@s,

Mi duda es la siguiente, como podría mandar un informe hecho en QReport, el cual sea totalmente transparente al usuario, me refiero de que cuando se cumplan ciertas reglas, se haga el envío (siempre mostrando en una ventana pop-up, el estado del envío).

Espero haberme explicado bien..

Esperando una pronta respuesta, reciban un cordial saludo....
Responder Con Cita
  #2  
Antiguo 01-07-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
No se si te servira, pero en mi web tienes un Previsualizador con l aposibilidad de envio por mail como fichero adjunto (la web en la firma)
Responder Con Cita
  #3  
Antiguo 02-07-2003
Germi Germi is offline
Registrado
 
Registrado: jun 2003
Ubicación: Valencia
Posts: 9
Poder: 0
Germi Va por buen camino
Yo hago algo parecido. Envio una factura hecha en Qreport por correo electronico. Totalmente trasnsparente para el usuario.
Lo que si que hago es convertir el qreport a PDF y luego envio el PDF.

Si te interesa saber el codigo me lo dices.
Responder Con Cita
  #4  
Antiguo 03-07-2003
Germi Germi is offline
Registrado
 
Registrado: jun 2003
Ubicación: Valencia
Posts: 9
Poder: 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
  #5  
Antiguo 03-07-2003
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 21
Aprendiendo Va por buen camino
Germi muchas gracias por tu pronta respuesta, voy a probar y ya te contaré.

Un salu2.
Responder Con Cita
  #6  
Antiguo 16-06-2005
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Yo tengo problemas

Hola, te comento que yo tengo problemas al hacer esto, pues no hay forma de poder hacer que el archivo se guarde en el disco, incluso no se como obtener el numero de la acrobat distiller. Te agradeceria si me das una mano en esto, desde ya muchas gracias
Román
Responder Con Cita
  #7  
Antiguo 16-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Puedes usar el objeto Tprinter para obtenerlo:
Código Delphi [-]
procedure TForm1.Button6Click(Sender: TObject);
var i:Integer;
begin
  for i:=0 to printer.Printers.Count-1 do
  Memo1.Lines.Add(printer.Printers[i])
end;
Necesitarás el uses Printers;

Currandolo un poco, puedes hacer que el usuario elija la impresora y que permita establecer qué impresora quiere utilizar; por si elimina o añade impresoras y el PrinterIndex cambia.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 17-06-2005
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Amigo, sigo en la misma, con el codigo que me pasaste se que número de impresor es la Acrobat Distiller. Lo que pasa es que no puedo grabar o no lo veo al archivo que supuestamente se crearia en PDF.
Segun los pasos que indica Germi serían estos, los que te paso en el codigo siguiente pero sigo sin poder solucoinarlo

procedure TForm_insumos.BitBtn3Click(Sender: TObject);
begin
QuickReport_rotulo.PrinterSettings.PrinterIndex:=1;
QuickReport_rotulo:=TQuickReport_rotulo.Create(Self);
QuickReport_rotulo.Print;
Temporizador.Enabled:=True;
end;

La verdad que me estoy rompiendo la cabeza y no puedo lograrlo. Espero de vuestra ayuda para solucionarlo. Desde ya muchas gracias
Román.-
Responder Con Cita
  #9  
Antiguo 18-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Código Delphi [-]
procedure TForm_insumos.BitBtn3Click(Sender: TObject);
begin
QuickReport_rotulo.PrinterSettings.PrinterIndex:=1;
QuickReport_rotulo:=TQuickReport_rotulo.Create(Self);
QuickReport_rotulo.Print;
Temporizador.Enabled:=True;
end;

veamos que hace la rutina:
- primero asigna la impresora al a las preferencias de impresion del QuickReport.
- despues crea el QuickReport, machacando el que ya existía, si el QuickReport_rotulo no estaba creado, la primera instrucción daría un access violation.
- Despues mandas a imprimir.... ¿a que impresora?, se supone que a la impresora por defecto no?

En principio, la segunda linea sobra, pero tampoco puedo asegurarlo porque no sé donde se crea el QuickReport. Parece que lo tienes creado de antemano.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:25:15.


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