error al enlazar con crystal reports

telemaco
25 de Febrero del 2005
hoa a tod@s:
Mi problemilla de hoy es el siguiente... Para el proyecto en el que estoy trabajando tengo que hacer una serie de listados con una determinada información, así que en vez de utilizar el control data report de VB, me he decidido por el crystal reports que me parece más porfesional y con más opciones.
Después de crear mi primer 'report' en el Crystal eh ido ami aplicación a colocarlo en su sitio.
Después de buscar por el foro, encontré la manera de hacerlo y la seguí al pie de la letra. Pero heme aquí... mi gozo en un pozo! que no me ha funcionado. Me da un error al abrir el 'report'.
Éste es el código:

Dim cr_app As CRAXDRT.Application
Dim cr_listado As CRAXDRT.Report

Private Sub Form_Load()
Screen.MousePointer = vbHourglass
Set cr_listado = cr_app.OpenReport(App.Path & "prueba.rpt", 1) <-- Aquí es donde da el error
caja.ReportSource = cr_listado
caja.DisplayGroupTree = False
caja.ViewReport
Screen.MousePointer = Default
End Sub

El error es el siguiente:

Error '91' en tiempo de ejecución:
Variable de tipo Object o la variable de bloque With no está establecida

Y he aquí el dilema. No sé cómo seguir por este camino. A ver si algun@ de vosotr@s podeis ayudarme.
Muchas gracias

cmoraga
25 de Febrero del 2005
esta es una forma, hay otra mas sencilla.
1ero debes seleccionar el control crystal report y ponerlo en el formulario, se llama Crystal Report Control, despues colocas en :


Private Sub Form_Load()

crystalreport1.action = 1

End Sub


y listo. Espero que esto te sirva.

telemaco
25 de Febrero del 2005
bueno verás, yo estoy utilizando crystal reports 10.
El componente que utilizo se llama "Crystal ActiveX Report Viewer Library 10. He metido dos referencias en el proyecto:
1.- Crystal ActiveX Report Viewer Library 10
2.- Crystal Reports ActiveX Designer Run Time Library 10.0

Cuando intento hacer lo que me has dicho y suponiendo que con 'crystalreport1' re refieres a la variable de tipo CRAXDRT.Report, el método ACTION no me aparece. Por si acaso tb he probado a buscarlo en la variable de tipo CRAXDRT.Application y en el copntorl crystal del formulario.
Por otra parte, el control crystal del formulario no tiene ninguna propiedad 'ReportFileName', así que sigo un poco perdido.
Graciias por contestar de todos modos

cmoraga
25 de Febrero del 2005
se me olvidaba, debes indicarle al icono de Crystal que colocaste en el formulario donde esta tu archivo rpt, en el ReportFileName

telemaco
25 de Febrero del 2005
Vale, ya he encontrado el fallo.
La verdad es que parezco tonto, y esto se debe a esa manía de copiar las cosas que no sé y no fijarme en qué significan.
En otros posts se decía que la manera de abrir un report era la misma que yo he utilizado. Sin embargo se les había olvidado un pequeño detalle. En el form_load del formulario donde está el control Crystal_Viewer, y antes de poder cargar el report en la variable adecuada, debemos instanciar tanto la variable de tipo 'CRAXDRT.Application', como la de tipo 'CRAXDRT.Report'. De modo que el ejemplo anterior debería ser escrito de la siguiente forma:

Dim cr_app As CRAXDRT.Application
Dim cr_listado As CRAXDRT.Report

Private Sub Form_Load()
Screen.MousePointer = vbHourglass

set cr_app = new CRAXDRT.Application <-- ESTO ES LO
set cr_listado = new CRAXDRT.Report <-- QUE FALTABA

Set cr_listado = cr_app.OpenReport(App.Path & "prueba.rpt", 1) <-- Aquí es donde da el error
caja.ReportSource = cr_listado
caja.DisplayGroupTree = False
caja.ViewReport
Screen.MousePointer = Default
End Sub

Aquí os queda por si alguien, en alguna ocasión, se encuentra con el mismo error
Un saludo