Ver la Versión Completa : Como enviar el resultado de una consulta con un Query al Word?
Ricsato
16-10-2003, 00:34:00
Hola a todos.
Quisiera que alguien me enviara un ejemplo de codigo de como enviar los campos de una base de datos de una consulta que arroja un Query y un DataSource al Word, de como conectar la aplicacion y todos los parametros requeridos para establecer contacto con la aplicacion de Word.
Gracias y saludos...
roman
16-10-2003, 06:54:55
Ejemplo:
procedure DumpWord(DataSet: TDataSet; WordDoc: TWordDocument);
var
WordTable: Table;
RowCount, ColCount: Integer;
RowIndex, ColIndex: Integer;
begin
DataSet.Open;
try
RowCount := DataSet.RecordCount;
ColCount := DataSet.Fields.Count;
WordTable := WordDoc.Tables.Add(WordDoc.Range, RowCount + 1, ColCount);
for ColIndex := 1 to ColCount do
begin
WordTable.Cell(1, ColIndex).Range.Font.Bold := 1;
WordTable.Cell(1, ColIndex).Range.Text :=
DataSet.Fields[ColIndex - 1].FieldName;
WordTable.Cell(1, ColIndex).Range.Paragraphs.Alignment :=
wdAlignParagraphCenter;
end;
RowIndex := 1;
while not DataSet.Eof do
begin
for ColIndex := 1 to ColCount do
WordTable.Cell(RowIndex, ColIndex).Range.Text :=
DataSet.Fields[ColIndex - 1].AsString;
Inc(RowIndex);
DataSet.Next;
end;
finally
DataSet.Close;
WordDoc.Application.Visible := true;
end;
end;
A este procedimiento le pasas cualquier DataSet (por ejemplo un Query) y una componente TWordDocument (de la paleta Servers). El procedimiento realiza lo siguiente:
Activa el DataSet.
Crea una tabla en el documento de Word con tantas columas y renglones como campos y registros haya en el DataSet.
Coloca un renglón de encabezados con los nombres de los campos dándoles formato de letra en negritas y centrados.
Llena la tabal en Word con los registros del DataSet.
Desactiva el DataSet y
Abre Word.
Funciona para Word97 pero no debe haber mayor problema para Word2000.
// Saludos
Ricsato
16-10-2003, 23:36:11
Gracias amigo, eres muy amable, voy a insertar tu codigo.
Saludos desde México-
Ricsato
03-11-2003, 05:26:20
Hola a todos!!.
Inserte este codigo en mi programa, pero me marco el error "No se ha podido llamar a CoInitialize" y me ignora el resto del codigo para poder enviar informacion al Word, esto lo marca a la hora de invocar la aplicacion, bueno espero que alguien me pueda ayudar con esto.
Saludos.
roman
03-11-2003, 16:02:42
El procedimiento DumpWord requeire un objeto de tipo TWordDocument. ¿Cómo estás creando este objeto?
CoInitialize es una rutina que inicializa el acceso a la librería COM y normalmente Delphi la llama él mismo cuando es necesario, y así debiera suceder si está utilizando los componentes de la paleta Servers. Si, por lo contrario, estás creando los objetos directamente con CoCreateInstance o algo asi entonces debes tú mismo llamar a CoInitialize que debe estar en la unidad ActiveX o ComObj, no recuerdo bien.
// Saludos
Enrike66666
14-12-2006, 06:48:10
Hola a todos, gracias roman lo de insertar campos de un query en una tabla de word me funcionó a la perfección. Ahora mi problema es que quiero insertar un campo que contiene una imagen a una celda de una tabla de word desde delphi y también un campo memo (este campo lo pone en la tabla com muchisimis signos raros). Si alguien sabe donde puedo leer sobre esto por favor les agradeceré mucho.
protector2020
27-07-2007, 06:48:48
hola roman, eres genial. es justamente el ejemplo que estaba buscando. felicidades x tus habilidades.
WordTable := WordDoc.Tables.Add(WordDoc.Range, RowCount + 1, ColCount);
Me faltan parámetros?. Intente usar este procedimiento, pero me dice que me faltan parametros.
Deberian ser EmptyParam?
Saludos
Hay algo para Word XP ?
Este procedimiento me da error:
"Interface no soportada"
Saludos
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.