Ver Mensaje Individual
  #4  
Antiguo 21-11-2008
Siem Siem is offline
Registrado
 
Registrado: sep 2008
Posts: 6
Reputación: 0
Siem Va por buen camino
Hola de nuevo.

Gracias pos las respuestas que me habeis enviado. Basandome el la respuesta de Roman (Gracias, eres un crack), he conseguido que me funcione, y ya me modifica las variables. Os dejo aqui el codigo.

Como veras, he quitado la funcion, pero me he quedado con el bucle y le he metido un case para distinguir las variables.

Código Delphi [-]
If FileExists (Fich) Then
 begin
   documento:=Word.Documents.Open(Fich);
   for I := 1 to Documento.Variables.Count do
   begin
    NomVar:=Documento.Variables.Item(I).Name;
    Case NomVar[1] of
     'N': documento.Variables.Item(I).Value:= DM.ADODataSet4Nombre.AsString+
                                   ' '+ DM.ADODataSet4Apellido1.AsString+' '+
                                   DM.ADODataSet4Apellido2.AsString;
     'D': documento.Variables.Item(I).Value:= DM.ADODataSet4Direccion.AsString;
     'L': documento.Variables.Item(I).Value:= DM.ADODataSet4Localidad.AsString;
     'P': documento.Variables.Item(I).Value:= DM.ADODataSet4Provincia.AsString;
     'T': documento.Variables.Item(I).Value:= DM.ADODataSet4Telefono.AsString+' '+
                                       DM.ADODataSet4Movil.AsString;
    end; // Case
   end; // For
 end
 Else
 begin
   (* Añades un documento basado en la plantilla *)
   Word.Documents.Add(Ruta+'Informes\Plantilla.dot');
   Documento := Word.Documents.Item(1);

   (* Asignas valores a los campos *)
   Documento.Variables.Add('Nombre', DM.ADODataSet4Nombre.AsString+' '+
                                     DM.ADODataSet4Apellido1.AsString+' '+
                                     DM.ADODataSet4Apellido2.AsString);
   Documento.Variables.Add('Domicilio', DM.ADODataSet4Direccion.AsString);
   Documento.Variables.Add('Localidad', DM.ADODataSet4Localidad.AsString);
   Documento.Variables.Add('Provincia', DM.ADODataSet4Provincia.AsString);
   Documento.Variables.Add('Telefono', DM.ADODataSet4Telefono.AsString+' '+
                                       DM.ADODataSet4Movil.AsString);
  end;
   // actualizamos la tabla con el nuevo nombre de fichero
  Documento.Fields.Update;
  Word.ActiveDocument.SaveAs(Ruta+'Informes\'+
  IntToStr(DM.ADODataSet4PACIENTESCodigo.Value+10000)+'.Doc');
  Word.ActiveWindow.View.ShowFieldCodes := false;
  Word.Visible := true;
end;

Segun el Case (ya que solo puede usar valores integer o char), no puedo tener dos variables que empiecen por el mismo caracter en mi plantilla word, pero a mi me sirve usando el primer caracter del nombre de mi variable. En el IF, primero esta el caso de que ya exista el fichero, y despues del else, el caso de que no exista el fichero y tenga que crearlo nuevo a partir de la plantilla.

Espero que este post le sirva a alguien que se encuentre en el mismo problema que yo.

Muchas gracias a Roman y a Neftali por haberme abierto el camino.

Última edición por Siem fecha: 21-11-2008 a las 07:45:10.
Responder Con Cita