PDA

Ver la Versión Completa : Relleno de campos en word desde delphi


aanil
25-03-2008, 01:07:54
Hola a todos.

Encontre este codigo en el foro que me puede servir para llenar unos cuantos campos de una plantilla que tengo hecha en word. Mi necesidad esta en que como hago en el siguiente codigo que los datos consultados en una tabla desde delphi se coloquen en los campos variables, o sea:

Documento.Variables.Add('nombre', 'pepe pérez'); pepe perez sea el nombre que tome de la tabla consultada, y asi con los demas campos variable de la plantilla que tengo hecha en Word

Veamos el codigo que si funciona, pero no a mi necesidad:

Gracias por adelantado.

AANIL
Rep. Dominicana


uses ComObj;...
var
Word: Variant;
Documento: Variant;
begin
(* Creas un objeto Word *)
Word := CreateOleObject('Word.Application');
(* Añades un documento basado en la plantilla *)
Word.Documents.Add('carta.dot');
Documento := Word.Documents.Item(1);
(* Asignas valores a los campos *)
Documento.Variables.Add('nombre', 'pepe pérez');
Documento.Variables.Add('direccion', 'domicilio conocido');
Documento.Variables.Add('fecha', '1976-02-29');
Documento.Variables.Add('deuda', '$1.00 m.n');
end;
End.

enecumene
25-03-2008, 15:26:16
Hola, en realidad no estoy entendiendo muy bien lo que quieres hacer, a ver, quieres que haciendo una consulta a traves de un query mostrar los resultados de la consulta en las variables de la plantilla, no?, bueno si es asi eso es algo muy sencillo si no es asi me lo haces saber:

uses ComObj;...
var
Word: Variant;
Documento: Variant;
begin
(* Creas un objeto Word *)
Word := ComObj.CreateOleObject('Word.Application');
(* Añades un documento basado en la plantilla *)
Documento := Word.Documents.Add('carta.dot');
(* Asignas valores a los campos *)
Documento.Variables.Add('nombre', Query1.fieldbyname('nombre').asstring);
Documento.Variables.Add('direccion',Query1.fieldbyname('domicilio').asstring);
Documento.Variables.Add('fecha',Query1.fieldbyname('fecha').asstring);
Documento.Variables.Add('deuda', Query1.fieldbyname('deuda').asstring);
end;
End.

espero que te funcione.

Saludos.

aanil
25-03-2008, 23:18:16
Hola Enecumene, gracias por sus orientaciones, ya estamos cerca.

Esto me funciona perfecto cuando solo consulto por ejemlo un estudiante de un listado y solo se llena la ficha con ese estudiante.

Lo que busco es que si yo filtro todos los estudiantes de una seccion X, todos estos se puedan imprimir en la ficha o plantilla, por ejemplo con access y word en combinar correspondencia se hace facil, pero que resulta que tengo una base de datos de estudiantes que tiene varias tablas relacionadas y quiero que los estudiantes filtrados en mi base de datos se impriman en un formulario que ya esta pre-impreso.

Yo se dirigir los campos a los lugares donde deben de imprimir los datos, es mas o menos como un certificado, que tiene nombre del estudiante, su codigo, el grado, fecha.....

Estaba tratando de hacerlo con QReport pero resulta muy tedioso ubicar donde deben caer los campos.

Si lo desea te puedo enviar el modelo en WORD del Certificado.

Gracias de nuevo

rafasm
17-04-2008, 15:54:51
Hola que tal soy de mexico, yo te suguiero que para lo que necesitas es mejor hacer las platillas en excel, es mucho mas facil hacer referencia a celdas.