Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-10-2003
Ricsato Ricsato is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mexicali, Mexico
Posts: 72
Poder: 21
Ricsato Va por buen camino
Unhappy 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...
Responder Con Cita
  #2  
Antiguo 16-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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

Última edición por roman fecha: 28-08-2006 a las 17:33:19.
Responder Con Cita
  #3  
Antiguo 16-10-2003
Ricsato Ricsato is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mexicali, Mexico
Posts: 72
Poder: 21
Ricsato Va por buen camino
Thumbs up

Gracias amigo, eres muy amable, voy a insertar tu codigo.

Saludos desde México-
Responder Con Cita
  #4  
Antiguo 03-11-2003
Ricsato Ricsato is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mexicali, Mexico
Posts: 72
Poder: 21
Ricsato Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 03-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #6  
Antiguo 14-12-2006
Enrike66666 Enrike66666 is offline
Registrado
 
Registrado: dic 2006
Posts: 2
Poder: 0
Enrike66666 Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 27-07-2007
Avatar de protector2020
protector2020 protector2020 is offline
Miembro
 
Registrado: jul 2007
Ubicación: Orizaba, Veracruz, México.
Posts: 21
Poder: 0
protector2020 Va por buen camino
es un ejemplo muy util

hola roman, eres genial. es justamente el ejemplo que estaba buscando. felicidades x tus habilidades.
Responder Con Cita
  #8  
Antiguo 28-07-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
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
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;

Última edición por MaMu fecha: 28-07-2007 a las 22:49:33.
Responder Con Cita
  #9  
Antiguo 28-07-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Hay algo para Word XP ?

Este procedimiento me da error:

"Interface no soportada"

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:43:57.


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
Copyright 1996-2007 Club Delphi