• Jueves 14 de Noviembre de 2024, 18:48

Autor Tema:  Crystal Report: Establecer Base De Datos Access  (Leído 3048 veces)

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Crystal Report: Establecer Base De Datos Access
« en: Lunes 23 de Mayo de 2005, 11:33 »
0
El ASP.Net me cae mal porque me ha hecho sus buenas perradas, pero el Crystal Report se lleva la palma. ¡Lo detesto!

Veamos, tengo un programa que tira de una base de datos en Access. Tengo todos los informes hechos, el programa terminado y al ejecutarlo no da ningún problema... en mi ordenador.

Basta que haga un instalador y lo lleve a otro equipo para que los informes dejen de funcionar.
El problema está en que los informes buscan la base de datos en la direccion en la que estaba guardada en mi ordenador.
¿Como puedo hacer para especificarle a mano la direccion donde tiene que encontrar la base?
Tengo una función estupenda que me da esa direccion que he llamado AppPath, pero no tengo ni idea de como cambiar la cadena de conexion de los informes por AppPath & "database.mdb" en la ventana de diseño.

Echadme una mano antes de que le la eche yo al cuello al que inventó el Crystal Report, por favor.  :(

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Crystal Report: Establecer Base De Datos Access
« Respuesta #1 en: Martes 24 de Mayo de 2005, 10:13 »
0
De momento he encontrado una solución temporal en dos pasos. Necesito usar dos DataSets, uno creado en código y el otro en diseño.

Necesito el objeto dataset porque el crystal Report no puede acceder al dataset creado en código (que es con el que trabajo en toda la aplicación) y entonces no puedo acceder a la estructura de las tablas y mucho menos a sus campos para crear el diseño.
Bien, el truco está en crear el dataset con la misma estructura de datos con la que trabajas, sin molestarte en rellenarlo tabla a tabla, asignarselo al informe.
Con esto podrás sacar todos los campos sin muchas dificultades y diseñar la estructura del formulario.

A la hora de llamar al informe, solo hay que asignarle el dataset creado en código (que es el que está relleno con todos los datos) al informe.

Supongamos que tenemos el dataset DS con todos los datos, un informe llamado Reporte.rpt y que le hemos establecido como origen de datos el otro dataset.

El código a grandes rasgos sería este:
Código: Text
  1.  
  2. Dim Informe As ReportDocument
  3.  
  4. Informe = New Reporte
  5. Informe.SetDataSource(DS)
  6. Me.CrystalReportViewer1.ReportSource = Informe
  7.  
  8.  

Ahí está, no hace falta especificar absolutamente ninguna dirección de ninguno de los ficheros del programa, asi que evitamos que nos reviente cuando lo instalemos en el equipo de nuestro cuñao.
Aun así no me termina de convencer este arreglo. Seguro que hay una forma de usar el dataset creado por código y con eso ahorrarse el segundo.

Bueno, de momento dejemoslo así. Ahora solo falta solucionar el extraño fallo que me da si alguno de los campos del formulario recibe un valor nulo.

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Crystal Report: Establecer Base De Datos Access
« Respuesta #2 en: Martes 24 de Mayo de 2005, 10:18 »
0
Este post estaba repetido (se me fue el dedo al enviarlo  :losiento: ). Disculpen las molestias, pero no hay forma de borrarlo.

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Crystal Report: Establecer Base De Datos Access
« Respuesta #3 en: Miércoles 25 de Mayo de 2005, 09:10 »
0
Hola,

no se como funciona eso de los Crystal Reports, pero para las aplicaciones Web, se suele poner la cadena de conexión a la BD en el archivo de configuración web.config

Así puedes cambiarlo con solo editar el archivo y sin necesidad de volver a compilar la aplicación.

Saludos
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Crystal Report: Establecer Base De Datos Access
« Respuesta #4 en: Miércoles 25 de Mayo de 2005, 10:46 »
0
Hm... Si fuese en ASP.Net, todavía, pero en este proyecto no cuento con ningun webconfig y no me apetece crearme un fichero .ini (entre otras razones porque aun no sé como trabajar con ellos en .Net)
Además, me haría un lio para detectar el path de la instalación en el nuevo equipo y guardarlo en el fichero .ini. Tal vez más andelante, cuando esté más curtido, me atreva a lanzarme a ese desafio (Es que llevo demasiado tiempo con este proyecto y ya me corre prisa por terminarlo)
Si el programa fuera para mi no tendría problema alguno; pero es para otra persona a la que ni conozco, y que segun me han dicho, es una persona mayor que no se maneja bien con los ordenadores. Mi intención es hacer el programa autoinstalable, que ejecute el install y quede perfectamente configurado. Si una cosa tengo segura es que a casa de ese señor no voy a ir, asi que no puedo permitirme arreglarlo con parches.

En si, la solución que encontré no va mal, tampoco me voy a volver loco la cabeza; lo unico es que soy ahorrativo por naturaleza (Es decir,  más tacaño que una urraca y más agarrado como un koala) y no me hace gracia malgastar recursos (por muy ínfimos que sean).
Si se pudiese hacer con un solo dataset creado en ejecución no tendría esta molesta sensación de despilfarro.  :unsure: