Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Talk con Word (https://www.clubdelphi.com/foros/showthread.php?t=44448)

JulioGO 06-06-2007 18:35:48

Talk con Word
 
Hola forofos:

Leyendo en el historial del foro encontre como trasladar registros de mi base de datos a una plantilla word(certificado). Hasta ahi todo xevere. La cuestion es que al trasladar la informacion me abre un documento por cada registro, lo que quisiera saber es si se puede trasladar la informacion de los registros pero en un unico documento word.


Agradeciendo anticipadamente por sus sugerencias, me despido.

Saludos.

roman 06-06-2007 18:44:37

No somos adivinos. Si no nos indicas cuál es el código que usaste, ¿cómo vamos a saber qué anda mal?

// Saludos

JulioGO 06-06-2007 18:59:48

Talk con Word
 
Aqui esta el codigo.

Código:

procedure TdlgLRetenc.spComprobClick(Sender: TObject);
var
  Word: Variant;
  Documento: Variant;
//  i: smallint;
begin
  (* Creas un objeto Word *)
  try
    Word := CreateOleObject('Word.Application');
  except
    Application.MessageBox('No se puede puede conectar con MS (c) Word',
                          'Liquidación de Aportes y Retenciones', MB_OK + MB_ICONERROR);
    exit;
  end;
  dmMntPlan.ibqLRetenc.First;
  while not dmMntPlan.ibqLRetenc.Eof do
  begin
    if dmMntPlan.ibqLRetenc.FieldValues['ESTADO'] = 'S' then
    begin
      (* Añades un documento basado en la plantilla *)
      Word.Documents.Add('c:\sistemas\sisplani\RENTEC_27605.dot'); //Esto abre un documento por cada archivo
      Documento := Word.Documents.Item(1);

      (* Asignas valores a los campos *)
      Documento.Variables.Add('EJERCICIO', cVGPeriTra);
      Documento.Variables.Add('RAZON_SOCIAL', cVGrazsoc);
      Documento.Variables.Add('RUC', cvgNroRuc);
      Documento.Variables.Add('TRABAJ', dmMntPlan.ibqLRetenc.FieldValues['NOMBRES']);
      if Copy(ComboBox1.Items[ComboBox1.ItemIndex], 1, 2) = '02' then
        Documento.Variables.Add('TIPDOC', 'D.N.I.')
      else
        Documento.Variables.Add('TIPDOC', 'CUSSP');
      if Copy(ComboBox1.Items[ComboBox1.ItemIndex], 1, 2) = '02' then
        Documento.Variables.Add('SISPEN', 'S.N.P.')
      else
        Documento.Variables.Add('SISPEN', 'S.P.P. ' + ComboBox1.Items[ComboBox1.ItemIndex]);
      Documento.Variables.Add('NUMDOC', dmMntPlan.ibqLRetenc.FieldValues['DOCUM']);
      Documento.Variables.Add('TOTAL_RETENC', FormatFloat(',0.00', dmMntPlan.ibqLRetenc.FieldValues['APTE_SNP'] +
                                              dmMntPlan.ibqLRetenc.FieldValues['APTE_SPP']));
      Documento.Variables.Add('TOTAL_REMUN', FormatFloat(',0.00', dmMntPlan.ibqLRetenc.FieldValues['TOTAL_REMUN']));
      Documento.Variables.Add('APTE_SNP', FormatFloat(',0.00', dmMntPlan.ibqLRetenc.FieldValues['APTE_SNP']));
      Documento.Variables.Add('APTE_SPP', FormatFloat(',0.00', dmMntPlan.ibqLRetenc.FieldValues['APTE_SPP']));
      Documento.Variables.Add('COMISION', FormatFloat(',0.00', dmMntPlan.ibqLRetenc.FieldValues['COMISION']));
      Documento.Variables.Add('PRIMA', FormatFloat(',0.00', dmMntPlan.ibqLRetenc.FieldValues['PRIMA']));
      Documento.Variables.Add('CUENTA_INDIV', FormatFloat(',0.00', dmMntPlan.ibqLRetenc.FieldValues['INDIV']));
      //Documento.Fields.ToggleShowCodes;
      Documento.Fields.Update;
    end;
    dmMntPlan.ibqLRetenc.Next;
  end;
  Word.Visible := true;
end;


roman 06-06-2007 19:40:05

Bueno, al parecer está haciendo justamente lo que le estás diciendo que haga, esto es, estás creando un nuevo documento en cada vuelta del ciclo:

Código Delphi [-]
  while not dmMntPlan.ibqLRetenc.Eof do
   begin
    if dmMntPlan.ibqLRetenc.FieldValues['ESTADO'] = 'S' then
     begin
      (* Añades un documento basado en la plantilla *)
      Word.Documents.Add('c:\sistemas\sisplani\RENTEC_27605.dot'); //Esto abre un documento por cada archivo |<---------- ESTO
      Documento := Word.Documents.Item(1);  // |<---------- ESTO

Supongo que esas dos líneas deben ir antes de comenzar el ciclo.

// Saludos


La franja horaria es GMT +2. Ahora son las 21:00:37.

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