Visual Basic.NET - Ayuda Crystal Reports con múltiples bases de datos

 
Vista:

Ayuda Crystal Reports con múltiples bases de datos

Publicado por MagnetMan (8 intervenciones) el 02/04/2009 16:22:21
Buenas. Tengo una aplicación que trabaja con varias bases de datos access y me gustaría hacer listados en Crystal Reports. Las bases de datos son iguales, sólo cambia el nombre del fichero que depende de los nombres que escriba el usuario.
Mi problema es que si tomo un listado (*.rpt) generado con el asistente, SIEMPRE tengo que utilizar una conexión o una base de datos que exista y aunque ponga algo como ésto:

Public Sub Mostrar(ByVal elDataSet As DataSet)
' Creamos el objeto con el *.rpt que tenemos generado
Dim informe As New rptPrueba
' Establecemos los datos que nos interesan
informe.SetDataSource(elDataSet)
' Le pasamos al CRViewer lo que queremos ver
crvInforme.ReportSource = informe

Me.Show() 'Me es un formulario
End Sub

no funciona porque muestra lo que tiene enlazado en tiempo de diseño y no lo que le digo yo. Creo que tengo que usar un listado en blanco… pero entonces ¿qué cosas tengo que poner-pasar?. No encuentro información y ni siquiera puedo agregarle campos ya que me pide una base de datos.
¿Alguien sabe cómo hacerlo? ¿Algún consejo? Gracias de antemano.
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:Ayuda Crystal Reports con múltiples bases de da

Publicado por OliBeer (391 intervenciones) el 02/04/2009 18:17:54
Hola,

Agrega un DataSet a tu proyecto, en él, agrega los DataTables que te interes, con los campos específicos que necesitarás y ovbiamente llenarás con alguna consulta.

A qué me refiero:

Tengo un DataSet

myDataSet

Tengo dentro un DataTable

myDataSet
myDataTable

Dentro de myDataTable tengo los campos

campo_1
campo_2

Ahora, cuando crees un reporte, y estés en el Database expert, te vas a la carpeta Project Data - ADO .NET Datasets; en esa carpeta encontrarás los DataSet que tengas agregados en tu proyecto.

Así que, escoges el que creaste anteriormente, y de esta manera ya tienes un origen de datos, pero no está ligado a nada, o sea, el DataSet lo puedes llenar con la Consulta A o al Consulta B y podrás llenar tu reporte con diferentes consultas de DB.

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:Ayuda Crystal Reports con múltiples bases de da

Publicado por MagnetMan (8 intervenciones) el 03/04/2009 00:23:00
Hola. Lo primero gracias por contestar. Tiene buena pinta lo que me estás diciendo pero me debo de estar perdiendo en algo, o aún le falta algo a lo que me comentas. Te comento los pasos que hago basándome en los que me das:

Explorador de soluciones -> Agregar - nuevo elemento -> Conjunto de datos -> Agrego conjunto de datos “DataSet1.xsd”. Dentro del “DataSet1.xsd” con las herramientas dibujo el DataTable que necesito (sólo uno). Le he puesto el mismo nombre que la tabla de la base de datos. Le agrego “columnas” o campos y les pongo los mismos nombres que los de las bases de datos. Establezco quien es la key o primary key y los tipos de campo int, string, boolean etc. Se supone que aquí ya tengo listo el DataSet que no está ligado a nada y que me servirá para crear los “reports”.

Ahora voy al Explorador de soluciones -> Agregar - nuevo elemento -> Agrego un crystal reports “CrystalReport1.rpt”.
(Ahora tanto si sigo el asistente como si le doy un informe en blanco SÍ que consigo agregar campos al listado)
Continúo con la opción del asistente. El primer paso es elegir en el árbol de orígenes de datos: Datos del proyecto – ADO.Net DataSets – Nombre del proyecto.DataSet1 – Nombre del DataTable y lo paso a la derecha (lo elijo). Le doy a siguiente, elijo todos los campos y finalizo. Se ha creado un listado con todos los campos que me interesan.

Me voy al código fuente de antes y pongo:
Public Sub Mostrar(ByVal elDataSet As DataSet)
Dim informe As New CrystalReport1 '<----- Lo que cambio
informe.SetDataSource(elDataSet)
crvInforme.ReportSource = informe
Me.Show() 'Me es un formulario
End Sub

Ahora me aparece un listado que no está enlazado (como yo quería) pero por desgracia está vacío. Sólo aparecen las cabeceras (lo de nombre, apellidos etc). Esto en VB.Net 2008 porque en 2003 me pone “Error de motor de consulta” (cosa que no entiendo muy bien porque ni siquiera lo pilla el try – catch, sino que sale más tarde, cuando ya no hay más código que procesar).

El caso es que el objeto “elDataSet” que le estoy pasando está bien, porque lo utilizo en un formulario anterior y se me muestran bien los datos en un DataGrid.

¿Tienes algún consejo más? ¿Alguna idea de en qué estoy metiendo la pata? Gracias
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:Ayuda Crystal Reports con múltiples bases de da

Publicado por OliBeer (391 intervenciones) el 03/04/2009 01:32:16
Hola,

Exáctamente bien lo que haces, sólo te corrigo unas cosas:

- El DataTable no necesita el Key, quítaselo.

Ahora lo que tienes que hacer es llenar el DataSet debidamente:

Supongamos que nuestro DataSet físico (el que agregaste al proyecto) se llama dsReporte y el DataTable es dtDatos.

Instancia el ds y el dt

Dim myDataSet As New dsReporte 'Este ds es una instancia de tu DataSet físico que agregaste a tu proyecto.
Dim myDataTable As New dsReporte.dtDatosDataTable 'Este dt es una instancia del DataTable que está contenido en dsReportes.

Agregamos datos al dt

myDataTable.Rows.Add(1, 2, 3, 'Todos los datos de las casillas del dt')

Agrega el dt al ds

myDataSet .Tables("dtDatos").Merge(myDataTable)

Ahora sí, asígnalo al reporte

informe.SetDataSource(myDataSet )

si no te funciona trata, especificando el dt

informe.SetDataSource(myDataSet .Tables(0)) '0 ó nombre del dt

Avísame qué onda.

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:Ayuda Crystal Reports con múltiples bases de da

Publicado por MagnetMan (8 intervenciones) el 03/04/2009 22:00:08
Muchas gracias. Ya me salen los listados correctamente gracias a tus consejos ^o^
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