Ver Mensaje Individual
  #1  
Antiguo 27-08-2017
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Reputación: 12
feliz-58 Va por buen camino
Exportar varios registros a Word con el mismo nombre de Variable

Saludos, Me explico, Después de poner patas arriba este foro, he encontrado la solución, pero solo me funciona con un registro,
(El código que encontré incluye crear una plantilla, crear las variables en el Documento y a traves de Delphi, asignarles el valor)
tengo una tabla en word, donde quiero insertar los registros de una tabla, imaginemos.

Nombre | Apellido | Pais
VarNombre VarApellido VarPais


Si tengo 5 registros en mi base de datos, como los agrego todos a esa tabla en word, he implementado códigos pero me salta el error de que ya la variable a la que le asigne el valor a sido utilizada, es decir solo me funciona con un registro, no con mas de uno, aquí va el código.

Código Delphi [-]
var
  Word: Variant;
  Documento: Variant;
begin

Try
  Word := CreateOleObject('Word.Application');
 (* Añades un documento basado en la plantilla *)
  Word.Documents.Add('C:\Nombres.dot');
  Documento := Word.Documents.Item(1);

        QReporte.First;
        Documento.Variables.Add('Nombre', Qreporte.FieldByName('Nombre').AsString);
        Documento.Variables.Add('Apellido',Qreporte.FieldByName('Apellido').AsString);
        Documento.Variables.Add('Pais',Qreporte.FieldByName('Pais').AsString);


  Documento.Fields.ToggleShowCodes;
  Documento.Fields.Update;

  Word.ActiveDocument.SaveAs('C:\documento.docx');

Word.Visible := true;
 
  ShowMessage('Operación Completada!!');

except
 on exception do
 begin
     Word.quit;
  end;
end;
end;

Intente hacer esto y me da el error que mencioné:
Código Delphi [-]
 if Qreporte.RecordCount>0 then
     While Not Qreporte.Eof do
     begin
      Documento.Variables.Add('Nombre', Qreporte.FieldByName('Nombre').AsString);
      Documento.Variables.Add('Apellido',Qreporte.FieldByName('Apellido').AsString);
      Documento.Variables.Add('Pais',Qreporte.FieldByName('Pais').AsString);
      Qreporte.Next;
     end;

Gracias de Antemano
Responder Con Cita