Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-12-2008
ajgomezlopez ajgomezlopez is offline
Miembro
 
Registrado: dic 2008
Posts: 20
Poder: 0
ajgomezlopez Va por buen camino
Fast Repost 4 Email + PDF adjunto

Buenas tardes, después de mucho mirar por google y de leerme la documentación de fast reports 4, no encuentro solución a este problema:

procedure TFborrador2.BitBtn4Click(Sender: TObject);
var
qborrador:TfrxADOQuery;
texto,fecha,nombre,dni,datos:TfrxMemoView;
begin
//Cargamos el formulario
iborrador.LoadFromFile('informes/iborrador.fr3');

...

//Lo mandamos por correo electrónico
frxmailexport1.ShowDialog := False;
frxmailexport1.Address:='maildestino@gmail.com';
frxmailexport1.FromMail := 'loquesea@loquesea.com';
frxmailexport1.Subject := 'Ejemplo 1';
frxmailexport1.SmtpHost := 'smtp.loquesea.ext';
frxmailexport1.SmtpPort := 25;
frxmailexport1.Login := 'login@server.com';
frxmailexport1.Password := 'mipassworddelserver';
frxmailexport1.ExportFilter := frxpdfexport1;
iborrador.Export(frxmailexport1);
end;

Según muchos sitios esto debería funcionar. Ejem:

http://www.fast-report.com/en/forum/...856&#entry8856

pero a mi me lanza este error:

First chance exception at $7C812AEB. Exception class EFCreateError with message 'Cannot create file "C:\DOCUME~1\*******\CONFIG~1\Temp\informes\iborrador.pdf". El sistema no puede hallar la ruta especificada'. Process Gapartados.exe (3712)

Ni especificando lo siguiente en el código funciona:

frxpdfExport1.FileName := TEMP + inttostr(Uborrador.codcliente) + '.pdf';

¿Alguna idea?

Me veo en la obligación de daros las gracias por adelantado.
Muchas gracias
Responder Con Cita
  #2  
Antiguo 28-12-2008
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
mmm no se se me hace que no te esta aceptando nombres de archivos diferentes al standard 8.3 proba con un nombre como "C:\REPORTE.PDF"
Responder Con Cita
  #3  
Antiguo 28-12-2008
ajgomezlopez ajgomezlopez is offline
Miembro
 
Registrado: dic 2008
Posts: 20
Poder: 0
ajgomezlopez Va por buen camino
Gracias

Muchas gracias por la respuesta, voy a ver si asi funciona y ya te cuento

========================

Gracias por la respuesta, pero eso no funciona, a ver si alguien le hecha un vistazo y me puede contestar. Muchas gracias.

Última edición por ajgomezlopez fecha: 28-12-2008 a las 19:31:06.
Responder Con Cita
  #4  
Antiguo 28-12-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.281
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Prueba a utilizar un path completo al guardar el fichero en lugar de un path relativo. Aunque sólo sea para descartar que sea de eso. Prueba por ejemplo guardando en un lugar tipo:

c:\temp\

Y asegúrate de que ese directorio existe. Si eso funciona, sabes que el problema radica en el pathdonde guardas el fichero.

Apuesto a que el error va por ahí. ¿El directorio donde estás intentando guardar existe?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 29-12-2008
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 21
PepeLolo Va por buen camino
Cuando empeze con FastReport 4 una de las cosas que me di cuenta es que no se registraba el email en mi cuenta de correo de Outloock, por lo que al final decido usar el siguiente código:

Código Delphi [-]
            with listado do
            begin
              with SaveDialog do
              begin
                filename:= 'ficheropdf.pdf';
                DefaultExt := 'pdf';
                InitialDir := 'c:\aplicacion\Usuario\email';  // Directorio de donde se guarda el pdf
                Filter := 'Archivos PDF de Adobe (*.pdf)|*.pdf';
                if Execute then
                begin
                  PrepareReport;
                  ExportTo(self.PsfrPDFExport, FileName);
                  mail := TStringList.Create;
                  try
                    mail.values['subject'] := Asunto;
                    mail.values['attachment0'] := FileName;
                    sendMail(Application.Handle, mail);
                  finally
                    mail.Free;
                  end;
                end;
              end;
           end;

La función sendMail es la siguiente, necesita las uses (mapi y shellapi):
Código Delphi [-]
function SendMail(Handle: THandle; Mail: TStrings): Cardinal;
type
  TAttachAccessArray = array [0..0] of TMapiFileDesc;
  PAttachAccessArray = ^TAttachAccessArray;
var
  MapiMessage: TMapiMessage;
  Receip: TMapiRecipDesc;
  Attachments: PAttachAccessArray;
  AttachCount: Integer;
  i1: integer;
  FileName: string;
  dwRet: Cardinal;
  MAPI_Session: Cardinal;
  WndList: Pointer;
begin
  dwRet := MapiLogon(Handle,
    PChar(''),
    PChar(''),
    MAPI_LOGON_UI or MAPI_NEW_SESSION,
    0, @MAPI_Session);

  if (dwRet <> SUCCESS_SUCCESS) then
  begin
    MessageBox(Handle,
      PChar('Error mientras se enviaba el email'),
      PChar('Error'),
      MB_ICONERROR or MB_OK);
  end
  else
  begin
    FillChar(MapiMessage, SizeOf(MapiMessage), #0);
    Attachments := nil;
    FillChar(Receip, SizeOf(Receip), #0);

    if Mail.Values['to'] <> '' then
    begin
      Receip.ulReserved := 0;
      Receip.ulRecipClass := MAPI_TO;
      Receip.lpszName := StrNew(PChar(Mail.Values['to']));
      Receip.lpszAddress := StrNew(PChar('SMTP:' + Mail.Values['to']));
      Receip.ulEIDSize := 0;
      MapiMessage.nRecipCount := 1;
      MapiMessage.lpRecips := @Receip;
    end;

    AttachCount := 0;

    for i1 := 0 to MaxInt do
    begin
      if Mail.Values['attachment' + IntToStr(i1)] = '' then
        break;
      Inc(AttachCount);
    end;

    if AttachCount > 0 then
    begin
      GetMem(Attachments, SizeOf(TMapiFileDesc) * AttachCount);

      for i1 := 0 to AttachCount - 1 do
      begin
        FileName := Mail.Values['attachment' + IntToStr(i1)];
        Attachments[i1].ulReserved := 0;
        Attachments[i1].flFlags := 0;
        Attachments[i1].nPosition := ULONG($FFFFFFFF);
        Attachments[i1].lpszPathName := StrNew(PChar(FileName));
        Attachments[i1].lpszFileName :=
          StrNew(PChar(ExtractFileName(FileName)));
        Attachments[i1].lpFileType := nil;
      end;
      MapiMessage.nFileCount := AttachCount;
      MapiMessage.lpFiles := @Attachments^;
    end;

    if Mail.Values['subject'] <> '' then
      MapiMessage.lpszSubject := StrNew(PChar(Mail.Values['subject']));
    if Mail.Values['body'] <> '' then
      MapiMessage.lpszNoteText := StrNew(PChar(Mail.Values['body']));

    WndList := DisableTaskWindows(0);
    try
    Result := MapiSendMail(MAPI_Session, Handle,
      MapiMessage, MAPI_DIALOG, 0);
    finally
      EnableTaskWindows( WndList );
    end;

    for i1 := 0 to AttachCount - 1 do
    begin
      StrDispose(Attachments[i1].lpszPathName);
      StrDispose(Attachments[i1].lpszFileName);
    end;

    if Assigned(MapiMessage.lpszSubject) then
      StrDispose(MapiMessage.lpszSubject);
    if Assigned(MapiMessage.lpszNoteText) then
      StrDispose(MapiMessage.lpszNoteText);
    if Assigned(Receip.lpszAddress) then
      StrDispose(Receip.lpszAddress);
    if Assigned(Receip.lpszName) then
      StrDispose(Receip.lpszName);
    MapiLogOff(MAPI_Session, Handle, 0, 0);
  end;
end;

un saludo.
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita
  #6  
Antiguo 29-12-2008
ajgomezlopez ajgomezlopez is offline
Miembro
 
Registrado: dic 2008
Posts: 20
Poder: 0
ajgomezlopez Va por buen camino
Gracias.

Muchas gracias a los dos por la contestación.

Neftalí, la ruta existe ese no es el problema, voy a seguir a ver si doy con la tecla, de todas maneras consiguo crear un pdf en la ruta que quiera, pero despues no el frxMailExport no veo ninguna opción para hacer un atach de un fichero.

Pepelobo tu código lo usaré si no saco el error, muchas gracias a ti también por ayudarme. Pero me gustaría sacar el fallo de los reportes. Muchas gracias.

A ver si a alguien se le ocurre.
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enviar un email con un archivo adjunto Turboleta Internet 9 31-07-2006 19:55:16
Enviar adjunto por mail joel20 JAVA 3 10-07-2006 13:09:38
Enviar email con copia y adjunto con indy cmena Internet 4 01-10-2005 01:14:00
bajar adjunto de un mail zastilla Internet 0 22-06-2005 14:50:49


La franja horaria es GMT +2. Ahora son las 13:36:30.


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