Foros del Web » Programación para mayores de 30 ;) » .NET »

varios registros en un informe crystal reports

Estas en el tema de varios registros en un informe crystal reports en el foro de .NET en Foros del Web. Hola a todos! Soy novato en visual .net, y más en crystal reports. He hecho una pequeña aplicación de gestión y quiero mostrar los registros ...
  #1 (permalink)  
Antiguo 05/09/2007, 09:13
 
Fecha de Ingreso: abril-2006
Ubicación: Burgos
Mensajes: 101
Antigüedad: 18 años, 9 meses
Puntos: 0
varios registros en un informe crystal reports

Hola a todos!
Soy novato en visual .net, y más en crystal reports. He hecho una pequeña aplicación de gestión y quiero mostrar los registros de varias tablas de access en un informe con crystal report. De momento tengo esto:

Dim rs As New DataSet("dsinforme")

' La cadena de conexión
Dim sCnn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & txtbase.Text

'abrimos la conexion

Dim sql As String = "Select * from tcuenta, tmovcuenta where nombre Like '" & Me.cmbcuentas.Text & "' And tcuenta.idcuenta = tmovcuenta.idcuenta"

da = New OleDbDataAdapter(sql, sCnn)

da.Fill(rs, "Movimientos")

'iniciamos el form y el reporte

Dim frm As New frminforme

Dim imprimir As New rptcuentas

'le indicamos el datasource al report, que sera el recordset

'que hemos llenado

imprimir.SetDataSource(rs.Tables("Movimientos"))

frminforme.crvinforme.ReportSource = imprimir

frminforme.Show()

El problema que tengo ahora es que no me muestra los registros de la base de datos. Me explico, cuando el resultado es un único registro de la tabla tcuentas, me lo muestra sin problemas. Cuando el resultado que quiero mostrar es varios registros de la tabla tmovcuenta, pues, no me los muestra. En realidad me muestra los títulos de los registros que he puesto, repetidos tantas veces como registros ha encontrado, pero sin los registros.
Quiero mostrar en el mismo reporte un registro de la tabla tcuentas, y a continuación todos sus movimientos de la tabla tmovcuenta. Lo primero me lo muestra, lo segundo no.
No se si tendré que hacer 2 sqls, una para la tabla tcuentas y otra para los movimientos. El problema es que no se pasar 2 sqls para que me las muestre en el mismo informe.
A ver si me podéis echar una mano, ahora que voy por buen camino, o eso creo yo, jejeje.
Gracias y un saludo!
__________________
Gigabyte GA-MA78GM-S2H | AMD X2 5400 | 2 x 1 GB DDR2 800 | 7600 Gt 256 Mb | AC97 Audio | Circuit Planet

http://todoaestribor.site88.net
  #2 (permalink)  
Antiguo 06/09/2007, 12:54
 
Fecha de Ingreso: octubre-2006
Mensajes: 86
Antigüedad: 18 años, 4 meses
Puntos: 1
Re: varios registros en un informe crystal reports

Lo que podrias hacer en esa caso es generar la consulta tomando en cuenta las dos tablas me imagino que han de estar relacionadas entre si, por lo tanto podrias ocupar un inner Join o un Left Join para relacionar tus tablas en el query Luego en el crystal report solo se crea un grupo y agrupas los datos por el campo que tu quieras y te tendria que funcionar.
  #3 (permalink)  
Antiguo 07/09/2007, 09:27
 
Fecha de Ingreso: abril-2006
Ubicación: Burgos
Mensajes: 101
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: varios registros en un informe crystal reports

Cita:
Iniciado por NEST Ver Mensaje
Lo que podrias hacer en esa caso es generar la consulta tomando en cuenta las dos tablas me imagino que han de estar relacionadas entre si, por lo tanto podrias ocupar un inner Join o un Left Join para relacionar tus tablas en el query Luego en el crystal report solo se crea un grupo y agrupas los datos por el campo que tu quieras y te tendria que funcionar.
Gracias por responder!
He hecho lo que tú comentas. Las tablas ya las tenía relacionadas. He cambiado la sql y me queda así:

Select * from tcuenta INNER JOIN tmovcuenta ON tcuenta.idcuenta = tmovcuenta.idcuenta where nombre Like '" & Me.cmbcuentas.Text & "' And tcuenta.idcuenta = tmovcuenta.idcuenta

No me sale ningún error pero tampoco me funciona. Lo de los grupos no se cómo hacerlo, aparte que no entiendo para qué sirven. Es que como decía antes soy novato en crystal report.
__________________
Gigabyte GA-MA78GM-S2H | AMD X2 5400 | 2 x 1 GB DDR2 800 | 7600 Gt 256 Mb | AC97 Audio | Circuit Planet

http://todoaestribor.site88.net
  #4 (permalink)  
Antiguo 10/09/2007, 13:47
 
Fecha de Ingreso: octubre-2006
Mensajes: 86
Antigüedad: 18 años, 4 meses
Puntos: 1
Re: varios registros en un informe crystal reports

te voy a explicar como hago yo los reportes talvez te sirve de ayuda
1.- me voy a agregar un nuevo elemento en mi proyecto y agrego un Conjunto de datos o un dataset.

2.- Dentro del Dataset creo un DataTable que me sirve para volcar toda la informacion que jalo con el Query es importante que dentro del DataTable crees todos los campos que vas a ocupar en tu reporte para agregar una columna debes de darle click derecho sobre el Datatable luego das click sobre agregar y seleccionas columna y asi hasta crear todas las que necesitas.

3.- Agregas un Crytal Reports a tu proyecto igual que el Dataset.


4.- Luego en el Crystal Reports seleccionas el menu explorador de campos y dentro de ese menu da click derecho sobre el submenu campos de base de datos.
Seleccionas el item que dice asistente de base de datos luego seleccionas la carpeta Project data luego ADO.NET Dataset y luego elegis el DataTable que creaste.

5.- Una vez hecho esto te apareceran todos los campos que creaste en el Datatable ahora solo tenes que darle forma al reporte.

6.- Luego que ya tenes tu reporte hecho te vas al formulario de donde lo vas a llamar y agregas un CrystalReportViewer.

7.- En tu formulario agregas el siguiente codigo.

Public MyRdSS OleDbDataReader
Public MyAdSS OleDbDataAdapter
Public dt As DataTable
Public dr As DataRow

Private Sub CrystalR_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CrystalR.Load

Me.MyAdSS = New OleDbDataAdapter(ConsultaSl, cnc)
Me.MyAdSS.SelectCommand.CommandTimeout = 150
Me.MyRdSS = MyAdSS.SelectCommand.ExecuteReader()

dt = New DatasetCreado.DataTableCreado
dt.Clear()
With MyRdSS
While .Read()
dr = dt.NewRow()
dr(0) = .GetString(0) 'Donde dr() es la columna de el DataTable
dr(1) = .GetDecimal(1) 'loque esta despues del igual el Get.... va a depender de el tipo de
dr(2) = .GetString(2) 'valor que estes leyendo de la base de datos y el numero indica la posicion en la consulta.
.
.
dr(n) = .GetString(n)
dt.Rows.Add(dr)
End While
End With
Nombredelreporte.SetDataSource(dt)
CrystalReportViewer.ReportSource = nombredelreporte
End Sub


Espero que te sirva cualquier cosa no dudes en preguntar

Última edición por NEST; 10/09/2007 a las 13:59
  #5 (permalink)  
Antiguo 12/09/2007, 11:40
 
Fecha de Ingreso: abril-2006
Ubicación: Burgos
Mensajes: 101
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: varios registros en un informe crystal reports

Cita:
Iniciado por NEST Ver Mensaje
te voy a explicar como hago yo los reportes talvez te sirve de ayuda
1.- me voy a agregar un nuevo elemento en mi proyecto y agrego un Conjunto de datos o un dataset.

2.- Dentro del Dataset creo un DataTable que me sirve para volcar toda la informacion que jalo con el Query es importante que dentro del DataTable crees todos los campos que vas a ocupar en tu reporte para agregar una columna debes de darle click derecho sobre el Datatable luego das click sobre agregar y seleccionas columna y asi hasta crear todas las que necesitas.

3.- Agregas un Crytal Reports a tu proyecto igual que el Dataset.


4.- Luego en el Crystal Reports seleccionas el menu explorador de campos y dentro de ese menu da click derecho sobre el submenu campos de base de datos.
Seleccionas el item que dice asistente de base de datos luego seleccionas la carpeta Project data luego ADO.NET Dataset y luego elegis el DataTable que creaste.

5.- Una vez hecho esto te apareceran todos los campos que creaste en el Datatable ahora solo tenes que darle forma al reporte.

6.- Luego que ya tenes tu reporte hecho te vas al formulario de donde lo vas a llamar y agregas un CrystalReportViewer.

7.- En tu formulario agregas el siguiente codigo.

Public MyRdSS OleDbDataReader
Public MyAdSS OleDbDataAdapter
Public dt As DataTable
Public dr As DataRow

Private Sub CrystalR_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CrystalR.Load

Me.MyAdSS = New OleDbDataAdapter(ConsultaSl, cnc)
Me.MyAdSS.SelectCommand.CommandTimeout = 150
Me.MyRdSS = MyAdSS.SelectCommand.ExecuteReader()

dt = New DatasetCreado.DataTableCreado
dt.Clear()
With MyRdSS
While .Read()
dr = dt.NewRow()
dr(0) = .GetString(0) 'Donde dr() es la columna de el DataTable
dr(1) = .GetDecimal(1) 'loque esta despues del igual el Get.... va a depender de el tipo de
dr(2) = .GetString(2) 'valor que estes leyendo de la base de datos y el numero indica la posicion en la consulta.
.
.
dr(n) = .GetString(n)
dt.Rows.Add(dr)
End While
End With
Nombredelreporte.SetDataSource(dt)
CrystalReportViewer.ReportSource = nombredelreporte
End Sub


Espero que te sirva cualquier cosa no dudes en preguntar
Gracias por responder.
Para empezar, la instrucción del CommandTimeout no se que hace. Y luego lo que está dentro del With, pues la verdad, ni idea. Se que coge los valores de los registros, pero ¿y la sql?
Si no es mucho pedir, ¿me podrías poner un ejemplo de la sql, a ser posible con mi ejemplo? y otra cosa, yo lo que quiero mostrar por una parte es un registro de una tabla, y luego todos sus movimientos (varios registros) de otra tabla en el mismo informe.
Gracias de nuevo.
__________________
Gigabyte GA-MA78GM-S2H | AMD X2 5400 | 2 x 1 GB DDR2 800 | 7600 Gt 256 Mb | AC97 Audio | Circuit Planet

http://todoaestribor.site88.net
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:37.