PDA

Ver la Versión Completa : Reportes de Access


XLeoX
29-05-2003, 23:37:29
Gracias por tomarse el tiempo para ver esto.

Mi problema es que necesito mostrar Reportes realizados en Access, desde Delphi, si me pudieran ayudar o recomendarme donde buscar, he buscado bastante y no he podido encontrar algo que me ayude.

Agradesco su tiempo.

delphi.com.ar
30-05-2003, 00:25:28
Te recomendaría investigar el TAccessReport de la paleta Servers, tengo entendido que por conexiones ADO / ODBC... Solo puedes acceder a las Tablas y Consultas de Access, los Formularios, Informes, Macros y Módulos, solo pueden ser accedidos desde el mismo Access, o un Automation Server, que no hace mas que utilizar una “partecita” del Access.

XLeoX
30-05-2003, 03:00:39
Vi este codigo en http://www.scalabium.com/faq/dct0083.htm

procedure TForm1.Button1Click(Sender: TObject);
var
Access: Variant;
begin
{open the Access application}
try
Access := GetActiveOleObject('Access.Application');
except
Access := CreateOleObject('Access.Application');
end;
Access.Visible := True;
Access.OpenCurrentDatabase('C:\sistemas\gascan pc\db\gascan.mdb', True);

Access.DoCmd.OpenReport('Rtest', acViewPreview, EmptyParam, EmptyParam);

{close the database}
Access.CloseCurrentDatabase;

Access.Quit(acQuitSaveAll);
end;

pero me aparecen estos errores:
[Error] Unit1.pas(35): Undeclared identifier: 'GetActiveOleObject'
[Error] Unit1.pas(37): Undeclared identifier: 'CreateOleObject'

agradesco la atencion a este novato

Julià T.
30-05-2003, 04:16:57
Para CreateOleObject y GetActiveOleObject necesitas poner en uses la unidad

ComObj

XLeoX
30-05-2003, 18:22:45
Gracias por tu sujerencia, ya se ejecuto mi programa, pero me marca un error:

EOleSysError with message "Operation Unavailable"
y se posiciona en esta linea

Access := GetActiveOleObject('Access.Application');

guillotmarc
30-05-2003, 18:30:09
Hola.

¿ Tienes Access instalado en esa maquina ?. Es imprescindible.

Saludos.

XLeoX
30-05-2003, 18:32:59
Si Claro tengo el MS Access del Office 2000 Profressional, me fije que si lo tengo abrierto y ejecuto la funcion de arriba me lo cierra

XLeoX
30-05-2003, 22:24:10
Gracias por su ayuda Julia y Guillotmarc

Ya Funciono algo esta mal en mi PC porque en otra PC si funciono, pero me abre toda la DB no solamente el Reporte que es lo que quiero :confused: para solo seleccionen imprimi y/o Grabar

marcoszorrilla
30-05-2003, 22:47:51
Aquí tienes otro ejemplo:


var
Access: Variant;
begin
{open the Access application}
try
Access := GetActiveOleObject('Access.Application');
except
Access := CreateOleObject('Access.Application');
end;
Access.Visible := True;

{ open the database
The second parameter specifies whether you want to open the
database in Exclusive mode}
Access.OpenCurrentDatabase('C:\My Documents\Books.mdb', True);

{ open the report
The value for the second parameter should be one of
acViewDesign, acViewNormal, or acViewPreview. acViewNormal, which is the
default, prints the report immediately. If you are not using the type
library, you can define these values like this:

const
acViewNormal = $00000000;
acViewDesign = $00000001;
acViewPreview = $00000002;

The third parameter is for the name of a query in the current
database. The fourth parameter is for a SQL WHERE clause - the string must
be valid SQL, minus the WHERE.}
Access.DoCmd.OpenReport('Titles by Author', acViewPreview, EmptyParam, EmptyParam);

<...>
{close the database}
Access.CloseCurrentDatabase;

{close the Access application}
{const
acQuitPrompt = $00000000;
acQuitSaveAll = $00000001;
acQuitSaveNone = $00000002;}
Access.Quit(acQuitSaveAll);
end;


Un Saludo.

XLeoX
30-05-2003, 22:59:52
Gracias por tu atencion marcoszorrilla

Gracias a el texto que me proporcionaste pude ingresar el parametro acViewNormal en lugar de acViewPreview y me manda directamente la impresion.

Gracias a Todos por su ayuda, espero poder corresponderles

ffjgonzalez
08-08-2006, 06:01:32
Necesito utilizar un Reporte de Access 2000 desde una aplicacion desarrollada con Delphi 7, utilizando windows XP con SP2. Para ello utilizo los componetes TAccessComponent y TReportComponent de la barra de servers que proporciona el Delphi 7. Para poder invocar al reporte desde una Unit, puse un boton de prueba que ejecute el siguiente procedimiento:

AccessApplication1.Connect;
AccessApplication1.Visible := True;
AccessApplication1.OpenCurrentDatabase('C:\path hasta la base\base.mdb', True);
AccessApplication1.DoCmd.OpenReport('Nombre del reporte', acViewDesign, EmptyParam, EmptyParam);
AccessReport1.ConnectTo(AccessApplication1.Reports['Nombre del reporte']);


Pero cuando ejecuto la aplicacion me da un error de 'Clase no registrada' al momento en que se intenta crear el formulario donde se utiliza las componentes mencionadas previamente.

1- No se que componente es la que no esta registrada, ya que no lo indica
2- Como registro una componente?

XLeoX
08-08-2006, 09:06:46
En que PC estas teniendo este error?

ffjgonzalez
08-08-2006, 15:56:37
En que PC estas teniendo este error?
La PC es una AMD Athlon de 700 Mhz, con 512 Mb de Memoria RAM.

Si necesitas mas datos, avisame.

En que influye la configuración de la Pc?

Desde ya, muchas gracias.

Fernando

XLeoX
09-08-2006, 00:04:14
Disculpa hice mal la pregunta, El problema es en la PC donde estas programando o en la PC donde estas instalando tu programa?

ffjgonzalez
09-08-2006, 05:23:36
El problema lo tengo en la Pc en la que estoy programando.
Desde ya muchas gracias
Fernando

XLeoX
09-08-2006, 07:26:32
Okay,
Para que no tengas ningun problema con Dlls ahora ni a la hora de crear tu setup, yo reinstalaria ACCESS (la misma version que la que usaste para crear los reportes) y volveria a intentarlo.

Por lo siguiente:
No pueden ser los componentes de Delphi puesto que los estas usando, asi que lo unico mas logico seria los dlls que Delphi manda llamar de Access para correr los reportes.

ffjgonzalez
18-08-2006, 19:15:00
Muchas gracias a todos por su ayuda. Pude hacer funcionar los reportes de Access desde mi aplicacion. Pude solucionar el problema reinstalando el Office.
Nuevamente muchas gracias
Fernando

fmatias
02-10-2007, 11:10:20
Hola a todos, estoy imprimiendo informes generados en acceso y estoy utilizando los ejemplos usados en este hilo y funciona correctamente.

Ahora tengo un informe al que hay que asignarle 3 parámetros para que realice la consulta.

¿cómo puedo asignar los parámetros en delphi?

Muchas gracias