Crystal Report - Conectarse a otra base de datos

 
Vista:

Conectarse a otra base de datos

Publicado por Antonio (6 intervenciones) el 14/03/2005 13:31:08
Tengo el siguiente problema con Access, Crystal y VB6:

mi aplicación tiene la posibilidad de conectarse a distintas bases de datos access eligiendo el usuario a qué base de datos se conecta.

Pero no se como decirle al informe que el usuario quiere visualizar cual es la base de datos de la que tiene que obtener los datos para los informes, además no lo puedo hacer con ODBC porque mi aplicación se conecta a la DB con una cadena de conexión.

¿Podría decirle al .rpt en tiempo de ejecución cual es la db a la que debe conectarse?
Agradecería mucho si alguien puede ayudarme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Conectarse a otra base de datos

Publicado por Gerardo (571 intervenciones) el 14/03/2005 20:22:47
Ke tal antonio.

Suponiendo ke esta tu reporte en el mismo directorio donde se encuentra tu aplicación y suponiendo ke estás utilizando el "Crystal Report Control"de VB.

CrystalReport1..DataFiles(0) = App.Path & "\TuDB.mdb"

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Conectarse a otra base de datos

Publicado por Antonio (6 intervenciones) el 15/03/2005 10:00:54
Gracias Gerardo, pero
no me aparece la propiedad datafiles

Estoy usando la version 10 de CR y he añadido el componente Crystal Activex report viewer library
¿como agrego el componente que tu me indicas?

Como ves estoy un poco pez en CR, si pudieses ayudarme te estaria muy agradecido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Conectarse a otra base de datos

Publicado por Gerardo (571 intervenciones) el 15/03/2005 19:31:31
Ke tal Antonio.

No intenta lo siguiente:

Private crApp As New CRAXDRT.Application
Private crReport As New CRAXDRT.Report
Dim tbl As CRAXDRT.DatabaseTable
Set crReport = crApp.OpenReport(App.Path & "\TuReporte.rpt", 1)
For Each tbl In crReport.Database.Tables
tbl.SetLogOnInfo App.Path & "\TuDB.mdb"
Next
CRViewer.ReportSource = crReport
CRViewer.ViewReport

Si no te es x completo util, espero te sea de referencia.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Conectarse a otra base de datos

Publicado por antonio (6 intervenciones) el 16/03/2005 11:54:09
Hola Gerardo,

tu ayuda me está sirviendo de mucho, nos vamos acercando aunque sigo con algunos problemas, te cuento:

La versión que uso de CR es la 10 y no tiene el metodo .SetLogOnInfo aunque si tiene el método .SetDataSource.
Tampoco tiene la clase CRAXDRT pero tiene la clase CRAXDDRT
¿Puede ser que me falte alguna referencia?
No creo.

Pero mi problema ahora es que las bases de datos están protegidas con contraseña y las conexiones ADO las hago con un connectionstring que tiene la contraseña.

No podría hacerlo tampoco usando odbc porque se permite al usuario conectarse a cualquier base de datos solo teniendo el .mdb.

¿Como lo conecto en este caso?
Estoy al borde del suicidio ...
He probado asignándole la cadena de conexión en el método .SetDataSource de cada tabla y no funciona.

Gracias por tu inestimable ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Conectarse a otra base de datos

Publicado por Gerardo (571 intervenciones) el 16/03/2005 21:33:15
Ke tal Antonio.

Checate ke estes dimensionando tbl correctamente, esto es, a CRAXDDRT.DatabaseTable ya ke si sólo lo haces a CRAXDDRT.DataBase no aparecerá en método .SetLogOnInfo

Ahora bien, si tubieras dicho metodo, la instrucción para loguearte con contraseña seria como sigue:

tbl.SetLogOnInfo App.Path & "\NombreDB.mdb", , , "contraseña"

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Conectarse a otra base de datos

Publicado por Antonio (6 intervenciones) el 17/03/2005 17:03:57
Gracias por tu ayuda Gerardo, pero sigue sin funcionar me muestra el informe con los datos de la db contra la que diseñé el informe.
El código que muestra el informe es el siguiente, pero me muestra los datos de otra base de datos
¿Puede que el problema esté en el diseño del rpt?

Mira mi código por si ves un error.

Gracias de antemano otra vez.


Por cierto el método set logoninfo no me aparece al poner el punto, pero no casca al ejecutarlo.
---------Formulario del informe ------------------------

Private crApp As New CRAXDDRT.Application
Private crReport As New CRAXDDRT.Report
Private crDBTable As CRAXDDRT.DatabaseTable

Private Sub Form_Load()

Screen.MousePointer = vbHourglass

Set crReport = crApp.OpenReport(App.Path & "\rpt\peliculas.rpt", 1)
For Each crDBTable In crReport.database.Tables
crDBTable.SetLogOnInfo "c:\ana\PruebaMinMax.mdb", , , "contrasena"

Next

CRViewer.ReportSource = crReport
CRViewer.ViewReport

Screen.MousePointer = vbDefault
Exit Sub

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Conectarse a otra base de datos

Publicado por Gerardo (571 intervenciones) el 19/03/2005 17:23:32
Ke tal Antonio.

Debido a ke no cuento con CR10, voy a tratar de ser intuitivo una vez más.

Checate ke NOOOOO estes haciendo referencia a:
Crystal Report 10 ActiveX Designer Desig Time Library

y SIIIIIIIIIIII a:
Crystal Report 10 ActiveX Designer Run Time Library

Esto para hacer uso de CRAXDRT y del evento SetLogOnInfo.

De no resultar, kiciera ke hagas pruebas y tomes lo dicho hasta ahora como referencia para ke encuentres la solución.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Conectarse a otra base de datos

Publicado por Antonio (6 intervenciones) el 29/03/2005 13:12:32
Gracias por tu ayuda Gerardo
Al final he solucionado el problema de esta forma:

For Each crDBTable In crReport.Database.Tables
crDBTable.SetLogOnInfo "msaccess", sPathDB, "admin", "mypass"
Next
DoEvents
CRViewer.ReportSource = crReport
CRViewer.ViewReport
DoEvents
CRViewer.Refresh

El truco creo que ha estado en los do events y el refresh
Muchas gracias por tu ayuda, ahora solo me queda aprender a hacer informes CR

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar