PDA

Ver la Versión Completa : Imprimer Informes


Delphius
07-09-2004, 04:34:29
Hola foristas!

Un amigo me preguntó lo siguiente: ¿Hay manera de imprimir un informe realizado en Access desde VB? Como yo no tenía mucha idea de VB le dije que no sabía que decirle. El me dijo necesita imprimir un informe de una BD realizada en Access, el usó el "PrintForm" pero no es lo que quiere. Y realmente lo necesita pues el programa debe presentarlo lo más pronto posible.

Me preguntaba si alguien de aquí sabría cómo hacerlo. Me han comentado que una solución es copiar el código SQL generado por el Informe realizado en Access y transcribirlo al programa, pero tengo mis dudas.

¿Podría alguien aclararmelo?

Neftali [Germán.Estévez]
07-09-2004, 09:35:37
Me preguntaba si alguien de aquí sabría cómo hacerlo. Me han comentado que una solución es copiar el código SQL generado por el Informe realizado en Access y transcribirlo al programa, pero tengo mis dudas.
Bueno, no se la solución con el tema de SQL, pero sí se puede imprimir un informe desde Delphi hecho en Access vía Automatización.
El código sería algo así:


// Explicadas más abajo
const
acViewNormal = $00000000;
acViewDesign = $00000001;
acViewPreview = $00000002;
// Explicadas más abajo
const
acQuitPrompt = $00000000;
acQuitSaveAll = $00000001;
acQuitSaveNone = $00000002;
var
Access: Variant;
begin
// Abrir Access
try
Access := GetActiveOleObject('Access.Application');
except
Access := CreateOleObject('Access.Application');
end;
Access.Visible := True;
// Abrir la BD
// El segundo parámetro es si la abres en modo exclusivo o no
Access.OpenCurrentDatabase('c:\temp\dbdemos.mdb', True);
// Imprimir el informe
{Primer parámeto es el nombre del informe
Segundo parámetro es el tipo de visualización:
const
acViewNormal = $00000000;
acViewDesign = $00000001;
acViewPreview = $00000002;}
Access.DoCmd.OpenReport('country', acViewNormal, EmptyParam, EmptyParam);
// Cerrar la BD
Access.CloseCurrentDatabase;
// Cerrar Access
{const
acQuitPrompt = $00000000;
acQuitSaveAll = $00000001;
acQuitSaveNone = $00000002;}
Access.Quit(acQuitSaveAll);

Crea un form con un botón y en click del botón el código anterior;
Cambia el path de la Base de Datos y el modo de abrirla; y puedes modificar si deseas abrir o imprimir el informe.

Recuerda que debes añadir al uses la unit ComObj para poder usar automatización.

Una saludo.

Delphius
07-09-2004, 16:59:46
Neftali, probé el código y funciona bien... pero hay un pequeño problema: debo trasnscribirlo en VB ya que mi amigo no tiene ni idea de Delphi y su programa está escrito en VB... y como mi experiencia en VB fue pobre, me cuesta muchísimo encontrar algún código equivalente.

Se que este foro se primeriza el Delphi, pero ¿Neftali (u otra persona) sabes cómo sería en VB?

Neftali [Germán.Estévez]
07-09-2004, 17:30:07
Creo que para eso deberías buscar en las páginas de Microsoft del MSDN.
http://msdn.microsoft.com/vbasic/downloads/samples/default.aspx (MSDN)
http://msdn.microsoft.com/code/default.aspx (MSDN codes)

Donde puedes encontrar código para casi cualquier cosa.
Muchos ejemplos suelen etar en VB así que no te debería ser difícil encontrar el código.

Además puedes revisar éstos links:
http://support.microsoft.com/?id=210111
http://support.microsoft.com/?id=210132
http://support.microsoft.com/default.aspx?scid=kb;EN-US;147816