PDA

Ver la Versión Completa : Generar informe en word


Ivan_25
28-11-2005, 09:20:00
Hola a tod@s!!!. Tengo unos datos que muestro en un dbgrid. Los datos son de una base de datos access a la que accedo por conexion ADO. Lo que quiero hacer es generar un informe en word de un solo campo de los datos que muestro en el dbgrid, pero de todos los registros. ¿Como puedo hacerlo?. Gracias. ;)

Neftali [Germán.Estévez]
28-11-2005, 09:52:10
Revisa ésta página (http://www.djpate.freeserve.co.uk/AutoWord.htm), es un clásico y creo que te puede ser útil.

Ivan_25
29-11-2005, 09:26:38
Ok. Gracias Neftali. De todas maneras yo lo que quiero es algo mas sencillo. Veras, yo muestro registros en un dbgrid, y quiero coger los emails que muestro e imprimirlos en un documento word, separados por comas, para lo que hago lo siguiente:


String cadena = "";;
int numcandidatos;
int i = 0;
numcandidatos = DBGCandidatos->DataSource->DataSet->RecordCount;

for (i = 0; i < numcandidatos-1; i++)
{
cadena = cadena + DBGCandidatos->DataSource->DataSet->FieldByName("email")->AsString;
DBGCandidatos->DataSource->DataSet->MoveBy(1);
cadena = cadena + ",";
}
cadena = cadena + DBGCandidatos->DataSource->DataSet->FieldByName("email")->AsString;
ShellExecute(NULL, "open","c:\\Archivos de programa\\Microsoft Office\\Office\\WINWORD.EXE", cadena.c_str(), NULL, SW_SHOWNORMAL);
En la cadena mete bien los emails separados por comas, pero sin embargo al ejecutar el ShellExecute, me abre el word y me dice que el nombre o ruta del documento no es valido. ¿Sabes porque puede ser esto?. Yo no abro ningun documento, sino que intento imprimir la cadena en un documento word. Gracias.

Ivan_25
29-11-2005, 09:44:55
Ok. Ya esta solucionado. He encontrado el hilo en el foro:


http://www.clubdelphi.com/foros/showthread.php?t=26869&highlight=crear+documento+word

Lo que no se es como hacer retorno de carro, para que no se me junten las cadenas.

Neftali [Germán.Estévez]
29-11-2005, 10:02:58
ShellExecute(NULL, "open","c:\\Archivos de programa\\Microsoft Office\\Office\\WINWORD.EXE", cadena.c_str(), NULL, SW_SHOWNORMAL);
En la cadena mete bien los emails separados por comas, pero sin embargo al ejecutar el ShellExecute, me abre el word y me dice que el nombre o ruta del documento no es valido. ¿Sabes porque puede ser esto?. Yo no abro ningun documento, sino que intento imprimir la cadena en un documento word. Gracias.
Sí abres un documento,o es lo que estás intentando. A ShellExecute le estás pasando el parámetro "Open", luego el nombre del programa "...WINWORD" y el siguiente parámetro se refiere al archivo que vas a abrir. Por eso te dice que el archivo no existe.

Si quieres escribir el texto (la cadena) dentro del documento Word, en la página que te envié tienes cómo hacerlo, pero no puedes hacerlo con ShellExecute.

Esto sería un ejemplo correcto.

// Abrirá Word con el documento c:\temp\carta.doc
ShellExecute(NULL, "open","c:\\Archivos de programa\\Microsoft Office\\Office\\WINWORD.EXE", 'c:\temp\Carta.doc', NULL, SW_SHOWNORMAL);

alt126
29-11-2005, 11:24:13
bueno, yo creo que ya te han respondido...pero bueno.


Yo lo que si te puedo decir, es como crear un documento de word con lo que quieras....texto, una tabla, todo generado automaticamente desde c++, por lo que si tienes una cadena, pues podrias pasarla facilmente....

Por el foro tienes informacion de como hacerlo...si no te enteras, posssss, avisa!!!

...sino es eso lo que quieres...pos entonces no lo he pillado!! :)