Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-11-2007
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Question Combinar correspondencia

Hola a todos, tengo una inquietud, bueno realmente en esto estoy totalmente en blanco.

Estoy desarrollando una aplicación que lleva información de prestamos y libranzas, dicha aplicación necesita informar a los clientes, por medio de cartas o correpondencias, que se encuentran en mora o atrasados con sus cuotas; cómo hago, para que mi aplicación invíe esto a word, en el caso que sea necesario modificar las leyendas de las notificaciones.

Espero haberme explicado.

de antemano gracias por sus aportes...
Responder Con Cita
  #2  
Antiguo 02-11-2007
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.275
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
Hace bastante tiempo, en un programa utilizé la combinación de correspondencia de word y la verdad es que funcionaba bastante bien.

Lo que hacía era lo siguiente:
(1) Creaba un fichero de texto (Base de Datos en formato TEXTO) desde el programa con datos de ejemplo; Un único registro con todos los campos de la exportación. Combi.txt
(2) Con este fichero (el Cliente o yo) se prepara el documento de "Combinar correspondencia desde Word"; Se añadían los campos desde Word y servía para diseñar la plantilla.
(3) Luego a la hora de generar los documentos, en el mismo lugar y con el mismo nombre se generaba el fichero con datos reales para realizar el MailMerge.

He buscado el código que hacía el MailMerge; Te lo pongo aquí a ver si te sirve; Está bastante comentado y es bastante sencillo de entender. Está en Delphi 5, que es lo que usaba entonces.

Código Delphi [-]
procedure TFLaunchWord._LaunchImpresion;
var
  JobsIniciales:Integer;
  TP, CP:Integer;
begin

  // Bloque de proteccion de la creacion del Objeto
  try
    // Está vacio ?
    if( VarIsEmpty( WinWord ) ) then begin
      // Self._FLogEnlace1.Add('Creamos el enlace');
      WinWord := CreateOleObject('Word.Basic');
      // Self._FLogEnlace1.Add('Finalizamos el enlace');
    end
    else begin
      //Self._FLogEnlace1.Add('Objeto WinWord Asignado');
      WinWord.AppClose('');
      // Si aun está que lo cierre
      Self._ForceCloseWinword();

      WinWord := CreateOleObject('Word.Basic');
    end;

  except
    MessageDlg('Error en la creación de objeto OLE Revise la configuración', mtError, [mbOK], 0);
    Exit;
  end;

  // A partir de aqui empieza la combinacion
  //.........................................................

  // try .. finally
  try

    // try .. except
    try

      // No está asignado ?
      if VarType(WinWord) <> VarDispatch Then begin
        // Self._FLogEnlace1.Add('Error al iniciar MS-Word');
        ShowMessage('Error al iniciar MS-Word')
      end
      Else Begin
        //Self._FLogEnlace1.Add('Abrimos el fichero: ' + Self._FFileName);
        WinWord.FileOpen(Self._FFileName);

        // Bloque de proteccion para el MailMerge (por si el doc no tiene campos)
        try

          //Self._FLogEnlace1.Add('Realizamos el "merge" entre Word y Base Datos');
          WinWord.MailMergeToDoc;
          //Self._FLogEnlace1.Add('Imprimimos el fichero Word');

        except on E:EOLEException do begin

            // Nada

          end;
        end;

        // Lobs en cola antyes de enviar la impresión
        JobsIniciales := _EnumJobs;
        WinWord.FilePrint(,,,,,,,Self._FCopias);
        sleep(500);

        // Mientras no se haya finalizado el proceso...
        while (_EnumJobs <> JobsIniciales) do begin

          Self._GetPagesLastJob(TP, CP);
          Self.LabelProceso.Caption := Format('Enviando página  %d',[TP]);
          Self.LabelProceso.Repaint;
          Self.LabelProceso.Refresh;
          Application.ProcessMessages;
          sleep(500);

        end;

        // Por seguridad
        sleep(3000);

        // LAbel de proceso completado
        Self.LabelProceso.Caption := 'Completado';
        Self.LabelProceso.Repaint;
        Self.LabelProceso.Refresh;

        // cerrar los ficheros abiertos
        WinWord.FileCloseAll(2);

      End;
    except

      //Self._FLogEnlace1.Add('Error en el enlace con Word');
      MessageDlg('Error en el enlace con Word'#13#13 +
               'Revise la configuración'#13#13 + 'Fichero: ' + Self._FFileName, mtError, [mbOK], 0);
    end;

  finally

    // Cerrar y liberar
    WinWord.AppClose('');
    WinWord := UnAssigned;

    Self.Close;

  End;
end;
__________________
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
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
combinar celdas con StringGrid david_uh Varios 1 09-06-2007 02:12:00
Combinar Correspondencia con Word VRO Servers 7 18-10-2004 13:17:17
HAcer algo similar a la Combinacion de correspondencia de Word oliverinf Impresión 7 27-04-2004 13:51:43
Combinar Correspondencia con Word desde Delphi 6 Lionel Servers 0 25-03-2004 10:40:12
Combinar tablas jrcosta75 Conexión con bases de datos 1 19-02-2004 21:44:48


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


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