Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Como enviar el resultado de una consulta con un Query al Word? (https://www.clubdelphi.com/foros/showthread.php?t=4449)

Ricsato 16-10-2003 00:34:00

Como enviar el resultado de una consulta con un Query al Word?
 
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:

Código:

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:
  1. Activa el DataSet.
  2. Crea una tabla en el documento de Word con tantas columas y renglones como campos y registros haya en el DataSet.
  3. Coloca un renglón de encabezados con los nombres de los campos dándoles formato de letra en negritas y centrados.
  4. Llena la tabal en Word con los registros del DataSet.
  5. Desactiva el DataSet y
  6. 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

Insertar Imagen de un campo de una BDD a una celda de una tabla de word desde delphi
 
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

es un ejemplo muy util
 
hola roman, eres genial. es justamente el ejemplo que estaba buscando. felicidades x tus habilidades.

MaMu 28-07-2007 22:43:16

Cita:

Empezado por roman
Código Delphi [-]
 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

MaMu 28-07-2007 22:52:36

Hay algo para Word XP ?

Este procedimiento me da error:

"Interface no soportada"

Saludos


La franja horaria es GMT +2. Ahora son las 05:49:47.

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