Usuario
Como hacer reportes con crystal report y vb.net 2005

Debate general
-
Yo busque mucho en el foro respecto a hacer reportes con crystal report, y no encontré nada concreto.
Ahora ya que pude hacer mis reportes, pongo este post para que los que no puedan hacer sus reportes ahora ya puedan hacerlo.
Crear Reporte de Una sola Tabla
<!--[if !supportLists]-->1. <!--[endif]-->Crear un formulario.
<!--[if !supportLists]-->2. <!--[endif]-->Agregar al formulario, el cristal report viewer.
<!--[if !supportLists]-->3. <!--[endif]-->Generar un archivo de reporte del cristal report .rpt
<!--[if !supportLists]-->4. <!--[endif]-->Agregar un DataSource. (Al crear un datasource se va a crear una dataset)
<!--[if !supportLists]-->5. <!--[endif]-->Crear el Dataset, elegir tablas que entraran al dataset, luego les pedirá realizar las relaciones entre las tablas que seleccionaron, pueden eliminar los links creados por defecto o realizar las relaciones de las tablas.
<!--[if !supportLists]-->6. <!--[endif]-->En la parte izquierda la pantalla se abrirá el field Explorer(Explorador de campos), ahí le dan botón derecho sobre database fields(Campo de Base de Datos), luego entran a database expert, se abrirá una pantalla, entran a proyect data, luego a ado.net datasets, y ahí aparece las tablas que seleccionaron para el dataset elijan una para que entre al reporte.
<!--[if !supportLists]-->7. <!--[endif]-->En el field Explorer en database fields aparecera la tabla que elijieron, lo unico que hacen es jalar los campos de la base hacia el reporte.(Hacer un clic sobre el campo y sin soltar ese clic lo llevan hacia el reporte)
<!--[if !supportLists]-->8. <!--[endif]-->Pueden agregarle titulos, etc. Con eso ya se tendría diseñado el reporte. Solo falta la parte de la codificacion.
<!--[if !supportLists]-->9. <!--[endif]-->Al formulario que crearon anteriormente la dan doble click para que ingrese a la codificación de vb.net.
<!--[if !supportLists]-->10. <!--[endif]-->las librería que deben importar son dependiendo a la base que se conectan en este caso lo haré con Oracle:
imports system.data
imports system.oledb
<!--[if !supportLists]-->11. <!--[endif]-->declaran variables puclicas:
dim con as new oledbconnection
dim ds as new dataset
dim da as new oledbdataadapter
dim dt as datatable
dim comando as new oledbcommand
<!--[if !supportLists]-->12. <!--[endif]-->En el procedimiento de LOAD colocan el siguiente codigo:
Dim reporte as new nombre_reporte
Dt.clear()
Dim conn as string=”Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=nombre_base;Password=contraseña;Data Source=cadena”
Con=new oledbconnection(conn)
Commando.connection=con
Commando.comandtext=”select * from nombre_tabla_de_databasefield”
Da = new oledbdataadapter(commando)
Da.fill(dt)
Reporte.setdatasource(dt)
Reporte.refresh()
Crystalreportviewer1.reportsource=report
Crystalreportviewer1.refresh()
<!--[if !supportLists]-->13. <!--[endif]-->Ejecutan el programa y con esto verán que el reporte funciona.
Crear Reporte con sentencia SQL.
<!--[if !supportLists]-->1. <!--[endif]-->Crear un formulario.
<!--[if !supportLists]-->2. <!--[endif]-->Agregar al formulario, el cristal report viewer.
<!--[if !supportLists]-->3. <!--[endif]-->Generar un archivo de reporte del cristal report .rpt
<!--[if !supportLists]-->4. <!--[endif]-->Agregar un DataSource. (Al crear un datasource se va a crear una dataset)
<!--[if !supportLists]-->5. <!--[endif]-->Crear el Dataset, elegir tablas que entraran al dataset, luego les pedirá realizar las relaciones entre las tablas que seleccionaron, pueden eliminar los links creados por defecto o realizar las relaciones de las tablas.
<!--[if !supportLists]-->6. <!--[endif]-->En la parte derecha de la pantalla aparecerá el dataset que crearon, hacen doble click sobre el dataset, se abrirá el diseñador. Hacen botón derecho sobre cualquier lugar del diseñador y agregan un dataadapter les aparecerá el wizard y al final les pedirá que agreguen un sql, ponen el sql sin campos específicos. Ej.
Select a.nombre,p.producto,p.precio
From cliente a, producto p
Where a.codigo_cli=p.codigo_cli
Order by a.nombre
No como:
Select a.nombre,p.producto,p.precio
From cliente a, producto p
Where a.codigo_cli=p.codigo_cli and
Nombre=’Jose’ and fecha between ’10-05-07’ and ’12-05-07’
Order by a.nombre
<!--[if !supportLists]-->7. <!--[endif]-->Le ponen un nombre al dataadapter
<!--[if !supportLists]-->8. <!--[endif]-->En la parte izquierda la pantalla se abrirá el field Explorer (Explorador de campos), ahí le dan botón derecho sobre database fields (Campo de Base de Datos), luego entran a database expert, se abrirá una pantalla, entran a proyect data, luego a ado.net datasets, y ahí aparece las tablas que seleccionaron para el dataset elijan el dataadapter que crearon para que entre al reporte.
<!--[if !supportLists]-->9. <!--[endif]-->En el field Explorer en database fields aparecerá la tabla que eligieron, lo único que hacen es jalar los campos de la base hacia el reporte.(Hacer un clic sobre el campo y sin soltar ese click lo llevan hacia el reporte)
<!--[if !supportLists]-->10. <!--[endif]-->Pueden agregarle títulos, etc. Con eso ya se tendría diseñado el reporte. Solo falta la parte de la codificación.
<!--[if !supportLists]-->11. <!--[endif]-->Al formulario que crearon anteriormente la dan doble click para que ingrese a la codificación de vb.net.
<!--[if !supportLists]-->12. <!--[endif]-->las librería que deben importar son dependiendo a la base que se conectan en este caso lo haré con Oracle:
imports system.data
imports system.oledb
<!--[if !supportLists]-->13. <!--[endif]-->declaran variables puclicas:
dim con as new oledbconnection
dim ds as new dataset
dim da as new oledbdataadapter
dim dt as datatable
dim comando as new oledbcommand
<!--[if !supportLists]-->14. <!--[endif]-->En el procedimiento de LOAD colocan el siguiente codigo:
Dim reporte as new nombre_reporte
Dt.clear()
Dim conn as string=”Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=nombre_base;Password=contraseña;Data Source=cadena”
Con=new oledbconnection(conn)
Commando.connection=con
Commando.comandtext=”aqui meten el sql completo con campos específicos y todo”
Da = new oledbdataadapter(commando)
Da.fill(dt)
Reporte.setdatasource(dt)
Reporte.refresh()
Crystalreportviewer1.reportsource=report
Crystalreportviewer1.refresh()
<!--[if !supportLists]-->15. <!--[endif]-->Ejecutan el programa y con esto verán que el reporte funciona.
Crear Reporte con sentencia SQL y parámetros
<!--[if !supportLists]-->1. <!--[endif]-->Crear un formulario.
<!--[if !supportLists]-->2. <!--[endif]-->Agregar al formulario, el cristal report viewer.
<!--[if !supportLists]-->3. <!--[endif]-->Generar un archivo de reporte del cristal report .rpt
<!--[if !supportLists]-->4. <!--[endif]-->Agregar un DataSource. (Al crear un datasource se va a crear una dataset)
<!--[if !supportLists]-->5. <!--[endif]-->Crear el Dataset, elegir tablas que entraran al dataset, luego les pedirá realizar las relaciones entre las tablas que seleccionaron, pueden eliminar los links creados por defecto o realizar las relaciones de las tablas.
<!--[if !supportLists]-->6. <!--[endif]-->En la parte derecha de la pantalla aparecerá el dataset que crearon, hacen doble click sobre el dataset, se abrirá el diseñador. Hacen botón derecho sobre cualquier lugar del diseñador y agregan un dataadapter les aparecerá el wizard y al final les pedirá que agreguen un sql, ponen el sql sin campos específicos. Ej.
Select a.nombre,p.producto,p.precio
From cliente a, producto p
Where a.codigo_cli=p.codigo_cli
Order by a.nombre
No como:
Select a.nombre,p.producto,p.precio
From cliente a, producto p
Where a.codigo_cli=p.codigo_cli and
Nombre=’Jose’ and fecha between ’10-05-07’ and ’12-05-07’
Order by a.nombre
<!--[if !supportLists]-->7. <!--[endif]-->Le ponen un nombre al dataadapter
<!--[if !supportLists]-->8. <!--[endif]-->En la parte izquierda la pantalla se abrirá el field Explorer (Explorador de campos), ahí le dan botón derecho sobre database fields (Campo de Base de Datos), luego entran a database expert, se abrirá una pantalla, entran a proyect data, luego a ado.net datasets, y ahí aparece las tablas que seleccionaron para el dataset elijan el dataadapter que crearon para que entre al reporte.
<!--[if !supportLists]-->9. <!--[endif]-->En el field Explorer en database fields aparecerá la tabla que eligieron, lo único que hacen es jalar los campos de la base hacia el reporte.(Hacer un clic sobre el campo y sin soltar ese click lo llevan hacia el reporte)
<!--[if !supportLists]-->10. <!--[endif]-->En el lado izquierdo de la pantalla, en Field Explorer, elijan field parameters, ahí agregan los parámetros que desean.
<!--[if !supportLists]-->11. <!--[endif]-->Pueden agregarle títulos, etc. Con eso ya se tendría diseñado el reporte. Solo falta la parte de la codificación.
<!--[if !supportLists]-->12. <!--[endif]-->Al formulario que crearon anteriormente la dan doble click para que ingrese a la codificación de vb.net.
<!--[if !supportLists]-->13. <!--[endif]-->las librería que deben importar son dependiendo a la base que se conectan en este caso lo haré con Oracle:
imports system.data
imports system.oledb
<!--[if !supportLists]-->14. <!--[endif]-->declaran variables puclicas:
dim con as new oledbconnection
dim ds as new dataset
dim da as new oledbdataadapter
dim dt as datatable
dim comando as new oledbcommand
<!--[if !supportLists]-->15. <!--[endif]-->En el procedimiento de LOAD colocan el siguiente codigo:
Dim reporte as new nombre_reporte
Dt.clear()
Dim conn as string=”Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=nombre_base;Password=contraseña;Data Source=cadena”
Con=new oledbconnection(conn)
Commando.connection=con
Commando.comandtext=”aqui meten el sql completo con campos específicos y todo”
Da = new oledbdataadapter(commando)
Da.fill(dt)
Reporte.setdatasource(dt)
Reporte.refresh()
Reporte.SetParameterValue(“nombre_parametro1_que_crearon”,campo_de_texto)
Reporte.SetParameterValue(“nombre_parametro2_que_crearon”,campo_de_texto)
Crystalreportviewer1.reportsource=report
Crystalreportviewer1.refresh()
<!--[if !supportLists]-->16. <!--[endif]-->Ejecutan el programa y con esto verán que el reporte funciona.
Espero les sirva
Saludos.
- Tipo cambiado Toni Recio [Techdencias] martes, 7 de julio de 2009 11:16
- Cambiado Toni Recio [Techdencias] martes, 7 de julio de 2009 11:16 (De:Lenguaje VB.NET)
- Cambiado Fran DiazModerator miércoles, 17 de agosto de 2011 12:51 Es de CR (De:SQL Server Reporting Services)
Todas las respuestas
-
-
charsit Escribió: Muchas gracias por tu ayuda, ne sacastede muchas dudas.
Saludos
hola Amigos Espero me puedan ayudar.
Instale el crytal report XI y uso Visual Studio 2005 profesional
en concreto Visual basic .net
No logro conectar el cristal con visual basic.
He tratado de agregar las dll. pero no las encuentro. -
Hola falconhorse28 como puedo hacer en mi caso mi reporte esta creado con un store procedure, te muestro mi código:
Capa Datos
Public Function FacturaCompra(ByVal CodFactura As String) As DataTable Try Using cn As DbConnection = clsConexionAD.Conectar Dim factory As DbProviderFactory = clsConexionAD.GetFactory() Dim da As DbDataAdapter = factory.CreateDataAdapter Dim cmd As DbCommand = cn.CreateCommand cmd.CommandText = "xspGenerarFacturaCompras" cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add(CreateParameter("@idCompra", DbType.AnsiString, CodFactura)) da.SelectCommand = cmd Dim dt As New DataTable da.Fill(dt) Return dt End Using Catch ex As Exception Throw New Exception(ex.Message) End Try End Function
Capa Logica .........................
Capa Presentación
Sub Imprimir() Dim objGenerarFacturaCompra As New rptFacturaCompra ' Recuperar los datos de conexión BuilLeerConection() objGenerarFacturaCompra.SetDatabaseLogon(NUsuario, Pass, NSevidor, NDataBase) Dim dt As DataTable = objCompraCL.FacturaCompra(lblCodigo.Text) objGenerarFacturaCompra.Load("rptFacturaCompra.rpt") objGenerarFacturaCompra.SetDataSource(dt) objGenerarFacturaCompra.Refresh() 'objGenerarFacturaCompra.SetDataSource(dt) objGenerarFacturaCompra.SetParameterValue("@idCompra", lblCodigo.Text) frmFacturaCompra.crvFacturaCompra.ReportSource = objGenerarFacturaCompra 'objGenerarFacturaCompra.Load("rptFacturaCompra.rpt") 'objGenerarFacturaCompra.SetDataSource(dt) frmFacturaCompra.crvFacturaCompra.Refresh() frmFacturaCompra.Show() End Sub
Mi problema es allí no se como llamar al reporte ni tampoco como usar el dt
Pedro Avila