Supongamos que ya tienes creado tu proyecto y tu formulario con todos tus controles, entonces es obvio que tendras un boton el cual lo deberas utilizar para crear el reporte, yo para resumir solo pondre un boton el cual nos servira al momento de darle clic que nos envie al reporte.
Al igual de la misma forma como la que ya deberas de tener creada una tabla dentro de SQL Server la cual es la que quieres para que se muestren en tu reporte.
Como ven en las imagenes tengo solamente 3 personas agregadas en mi tabla de la base datos, asi como pueden tener cientos de datos.
Nuestro siguiente paso sera agregar un DataSet (Conjunto de datos) el cual se agrega de la siguiente manera: Clic derecho a tu solucion donde esta tu proyecto que por lo general esta al lado derecho, agregar-> Agregar nuevo elemento -> Del lado izquierdo das clic a donde dice Datos y selecciona Conjunto de datos, y le pones a tu dataset el nombre que mas te convenga.
Ahora dentro de tu Dataset da click derecho despues agregar -> Tabla de datos
Puedes modificar el nombre de tu tabla de datos dandole clic a donde aparece el titulo de esta, entonces lo siguiente sera dandole clic derecho a la tabla de datos que creaste despues Agregar -> ColumnaMucho ojo aqui, las columnas que vamos a agregar deben de tener el mismo orden y el mismo nombre como lo tenemos en nuestra tabla de SQL
Ok entonces ya teniendo nuestro Dataset listo y nuestra tabla en SQL nuestro siguiente paso es agregar un nuevo elemento a nuestro proyecto de tipo Crystal Reports el cual esta en la pestaña de Reporting y le ponemos como nos convenga mas.
Este al momento de crearlo nos arrojara un wizard el cual servira para determinar de donde tomara los datos para mostrar y el diseño, en la primera opcion hay que tildar Usar asistente de informes y elige el Asistente Estandar y le das Aceptar y despues fijense bien en la imagen: Deben de irse a la pestaña de Datos del proyecto, expandir la que dice ADO.NET Datasets y expandir la conexion que nos sale de nuestro proyecto y ahi se encontrara nuestro dataset el cual deben de elegirlo y en la parte del medio sale una flechita apuntando para la derecha, le damos clic y se pasara nuestro dataset al lado de tablas seleccionadas.
Le damos clic a siguiente y seleccionamos los campos a mostrar dandole clic al boton de dos flechas juntas y le das finalizar.
Entonces te saldra ya el reporte con los campos de tu dataset que es donde se van a mostrarEntonces ya teniendo nuestro archivo .rpt creado lo siguiente sera es crear un nuevo elemento de tipo windows form y dentro de este contenedor vamos a insertar un objeto de tipo CrystalReportViewer que esta en el cuadro de herramientas en la seccion de creacion de informes, le damos click y lo arrastramos a nuestro formulario.
Hay que poner nuestro objeto CrystalReportViewer como publico en los modificadores para que sea accesible desde la clase de donde lo vamos a mandar llamar.
Ok ahora ya teniendo eso, nos vamos al evento Clic de nuestro boton que anteriormente asignamos para que al momento de darle clic nos muestre nuestro reporte y vamos a pegar el siguiente codigo que aqui les dejo que va dentro de nuestro evento onclic:
String ConnStr = @"Data Source=SQLSRV\TuServidor;Initial Catalog=TuBasedeDatos;Persist Security Info=True;User ID=Tuusuario;Password=Tupassword";
// LA DE ARRIBA ES NUESTRA CADENA DE CONEXION DEL SERVIDOR
SqlConnection myConnection = new SqlConnection(ConnStr); // TIENEN QUE UTILIZAR EN EL USING LA CLASE DE System.Data.SqlClient
String Query = "SELECT * FROM EjemploReportes"; // ESTE ES NUESTRO QUERY
SqlDataAdapter adapter = new SqlDataAdapter(Query, ConnStr);
OK, ese es nuestro codigo que va dentro, ahora compilamos nuestro proyecto y damos clic al boton y listo tenemos nuestro reporte basico sencillo.
Cualquier duda error o comentario es valido, espero les haya servido de algo.
Saludos.
Misael Ontiveros
Muchisimas gracias amigo, me fue de gran ayuda tu explicacion, muy claro todo, te agradezco que haya posteado esto!!, un gran saludo amigo!!!
ResponderEliminarQue bueno que haya sido de tu ayuda amigo, animo!
EliminarAmigo, tienes algun tutorial para hacer un formulario web con asp .net con c# que almacene datos en BD, espero tu respuesta amigo!
ResponderEliminarDe hecho si tengo unos proyectos creados en asp.net con C# para insertar datos en SQL, es bastante sencillo tambien y similar a este, voy a buscarlo y hago el tutorial amigo para que te sirva de ayuda, saludos.
EliminarOk amigo, muchas gracias espero el link amigo, gracias!
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEn la cadena de conexion si te fijas ahi le pones tu usuario y la contraseña, claro que si cambias esos datos en tu SQL tambien debe de cambiar en ese fragmento de codigo.
EliminarHola muchisimas gracias por el tutorial me daba un problema en visual studio 2012 con crystal report 2012 pero era por la version del net framework en verdad agradezco mucho que hayas impartido de tus conocimientos pues me ayudaron mucho
ResponderEliminarQue bueno Rocio me da mucho gusto que te haya servido de ayuda.
EliminarHola amigo una duda cuando corro el programa me sale un error me dice " No hay Código fuente disponible la pila de llamadas solo contiene Código externo" y no se que significa eso, podrías ayudarme te los agradecería mucho
ResponderEliminarQue tal amigo, nunca he batallado con ese tipo de error que me mencionas pero intenta hacerlo creando un proyecto nuevo de windows form desde cero, a lo mejor quisiste empalmar este con un proyecto que ya tenias y por ahí hiciste un paso mal o quizá no tomo los cambios en tu proyecto, primero has lo que te menciono y me dices si te sirvió para ir descartando posibles errores.
EliminarMuy buen post, el problema que tiene Alexis era de versiòn y/o conflicto de librerìas, se soluciona con la descarga de la pàgina de Crystal Report el Crystal Report para Visual Studio CRforVS_13_0_7 y luego el Crystal Report Runtime. En el mismo orden se instala y ahì deberìa solucionarse.
EliminarExcelente amigo Franklin, entonces Alexis ahí nuestro compañero te dio la solución al problema, instala el software y nos cuentas que tal.
EliminarEste comentario ha sido eliminado por el autor.
EliminarYo tengo el mismo error alguien me podría ayudar de favor se los agradecería mucho.
EliminarDescarga de la pàgina de Crystal Report el Crystal Report para Visual Studio CRforVS_13_0_7 y luego el Crystal Report Runtime. En el mismo orden se instala y ahì deberìa solucionarse.
EliminarHola quisiera saber si se puede llevar a Visual Basic pero con base de datos de Mysql
ResponderEliminarCreo que si se puede, lo unico que cambiara es la cadena de conexion y los adaptadores que se utilizaran para conectar a la base de datos. Por ejemplo: Dim myData As New DataSet
EliminarDim conn As New MySqlConnection
Dim cmd As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
conn.ConnectionString = "server=127.0.0.1;" _
& "uid=root;" _
& "pwd=12345;" _
& "database=world"
Try
conn.Open()
cmd.CommandText = "SELECT city.name AS cityName, city.population AS CityPopulation, " _
& "country.name, country.population, country.continent " _
& "FROM country, city ORDER BY country.continent, country.name"
cmd.Connection = conn
myAdapter.SelectCommand = cmd
myAdapter.Fill(myData)
tengo el siguiente procedimiento para llenar como adaptaria este que tengo:
ResponderEliminarPrivate Sub llenar_reporte()
Dim ConStr As String
Me.DataBindings.Clear()
'ConStr = "server='" + servidor + "'; user id=root; password='" + palabra + "'; database='" + gesti + "'"
'Call bd()
ConStr = cadena
Dim a As String
a = num_mario
Dim conexion As New MySqlConnection(ConStr)
'variable dataset
Dim Ds As New Data.DataSet("det_trasp")
'variable tabla
Dim Tabla As New DataTable
'adaptador que sirve de enlace intermedio entre la aplicación y la
'base de datos
Dim Da As New MySqlDataAdapter("select * from det_trasp where num='" + a + "'", conexion)
'capturamos errores
Try
'ejecutamos la query que tiene el DataAdapter
Dim Cmd As New MySqlCommandBuilder(Da)
'llenamos la tabla
Da.Fill(Tabla)
'mostramos datos
'pone las columnas en tamaño automatico
Catch ex As MySqlException
'en caso de error
MsgBox(ex.Message)
Finally
'finalmente eliminamos objetos de memoria
conexion = Nothing
Ds = Nothing
Tabla = Nothing
Da = Nothing
End Try
End Sub
Este procedimiento uso para llenar un datagridview como ven llena el dataset en la variable tabla, mi base de datos que uso es mysql ya la conexion esta echa, en realidad solo falta poder llenar el crystalrepots1
ResponderEliminarNo soy un experto en Visual Basic la verdad pero mas o menos creo que seria asi:
ResponderEliminarPrivate Sub llenar_reporte()
Dim ConStr As String
Me.DataBindings.Clear()
ConStr = "server='" + TUSERVIDORDEMYSQL + "'; user id=USUARIO; password='" + PASSWORD + "'; database='" + TUBASEDEDATOS + "'"
Call bd()
ConStr = cadena
Dim a As String
a = num_mario
Dim conexion As New MySqlConnection(ConStr)
'variable dataset
Dim Ds As New Data.DataSet("NOMBRE_DE_TU_DATASET")
'variable tabla
Dim Tabla As New DataTable
'adaptador que sirve de enlace intermedio entre la aplicación y la
'base de datos
Dim Da As New MySqlDataAdapter("TU_SENTENCIA_DE_SQL", conexion)
'capturamos errores
Try
'ejecutamos la query que tiene el DataAdapter
Dim Cmd As New MySqlCommandBuilder(Da)
'llenamos la tabla
Da.Fill(Tabla)
'AQUI TRATAMOS DE ENVIAR LOS DATOS AL REPORTE'
objRpt.SetDataSource(Ds);
frmReporte rpt = new frmReporte(); '// ES EL FORM DONDE ESTA NUESTRO CRYSTAL REPORT VIEWER
rpt.crystalReportViewer1.ReportSource = objRpt; '// ESTE ES NUESTRO REPORT VIEWER
rpt.ShowDialog();
'mostramos datos
'pone las columnas en tamaño automatico
Catch ex As MySqlException
'en caso de error
MsgBox(ex.Message)
Finally
'finalmente eliminamos objetos de memoria
conexion = Nothing
Ds = Nothing
Tabla = Nothing
Da = Nothing
End Try
End Sub
Hay que identificar bien tu nombre del servidor, el nombre de tu dataset, tu base datos y los datos.. de hecho en los comentarios te es muy claro pues te especifica que es lo que hace cada linea de código y que datos debes de poner, solamente ahí tendrías que cambiar quizá cuando llames al crystalreportviewer
Te dejo algunos links de ayuda:
ResponderEliminarhttp://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-crystal.html
http://www.elguille.info/colabora/puntoNET/ElMoreno_CrystalVB.htm
http://www.codeproject.com/Articles/9781/How-to-Load-and-Display-Crystal-Reports-in-VB-NET
Gracias por compartir tus conocimientos de manera amena y explicada, por tomarte esa molestia.
ResponderEliminarSaludos me ayuste mucho.
Gracias.
Que bueno que te haya servido amigo, para eso estamos.
EliminarNo se puede cargar el archivo o ensamblado 'file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll' ni una de sus dependencias. El sistema no puede encontrar el archivo especificado.
ResponderEliminarme sale este eerrror
Que tal Elizabeth, el error te marca debido que puede a ser a dos cosas, 1: Que no tengas instalado el .NET Framework 4.0 en tu computadora o 2: Que no tengas instalada ninguna versión del Framework para Crystal Reports, instala o re-instala el Framework 4.0 de Windows y también el Framework para Crystal, de hecho el Framework de Crystal esta en uno de mis temas publicados aquí en este blog el cual tambien pongo el link para la descarga si gustas buscarlo :)
EliminarEste comentario ha sido eliminado por el autor.
EliminarLo único que deben hacer es ir a su archivo de configuración, generalmente llamado app.config y modificar la siguiente línea:
EliminarReemplazar por:
Espero te haya servido, te dejo el link de ayuda tambien:
http://www.qualityinfosolutions.com/solucion-al-error-no-se-puede-cargar-el-archivo-o-ensamblado-crdb_adoplus-dll-cystal-report-visual-studio/
Este comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarjejejeje gracias te amare toda la vida :*
ResponderEliminarjeje de nada, que bueno que te sirvio ;)
EliminarBuenos dìas, actualmente estoy trabajando en version 11.5,,, pero se tuvo que desinstalar la version y montar la v13, pero tengo errores de codigo, uno ya lo solucione que es cambiar ek control 'crystalreportviewer' por el control 'reportviewer' pero tengo un lio con el metodo 'ReportSource',,, ya no lo distingue,,, en version 13 cual lo sustituye, o algun ejemplo,,, por favor colaborenme.
ResponderEliminarmi mail es: montilla.eduardoe@gmail.com
Que tal mi amigo, una disculpa apenas voy checando mi cuenta por cuestiones de estas fechas de celebrar, primero unas preguntas: ¿Que framework estas usando o tienes instalado en tu pc y que tipo de arquitectura y windows manejas? Saludos.
Eliminarbuenas Noches misael
ResponderEliminarHe seguido tu tutorial para hacer reporte con Crystal report en vs2010, todo ha salido muy bien en el desarrollo, el problema es que cuando despliego mi app en el pc cliente me arroja el siguiente error
{"No se puede cargar el archivo o ensamblado 'file:///C:\\Program Files (x86)\\SAP BusinessObjects\\Crystal Reports for .NET Framework 4.0\\Common\\SAP BusinessObjects Enterprise XI 4.0\\win32_x86\\dotnet1\\crdb_adoplus.dll' ni una de sus dependencias. El sistema no puede encontrar el archivo especificado.":"file:///C:\\Program Files (x86)\\SAP BusinessObjects\\Crystal Reports for .NET Framework 4.0\\Common\\SAP BusinessObjects Enterprise XI 4.0\\win32
_x86\\dotnet1\\crdb_adoplus.dll"}
esto solo sucede con el programa objeto cuando abro algun reporte , a mi entender creo que tiene que ver con alguna dll del cristal report.
Favor pasame el link donde explica los de los netframework para cristal report , gracias de ante mano.....
Hola que tal, la solución a ese problema es la siguiente:
EliminarTienes que agregar las siguientes lineas en tu archivo App.config de la solución de tu proyecto.
Yo también tuve el mismo problema que me comentas y la solución fue esa, intenta hacerla y me dices que tal si te funciono, si no para ir viendo poco a poco y resolverlo.
Que raro no se porque el código se pone en blanco, no se publica, pero mira te dejo una pagina donde describe el error y pone la solucion, como te comento fue lo que yo hice cuando me salio ese mismo error:
Eliminarhttp://www.qualityinfosolutions.com/solucion-al-error-no-se-puede-cargar-el-archivo-o-ensamblado-crdb_adoplus-dll-cystal-report-visual-studio/
Haces la solución y me dices que tal si te funciono, si no para ir viendo poco a poco la resolución a tu problema.
oye puedes ayudar me sale este error "no se ah podido encontrar la tabla 'datatable1' error en el archivo temp despues muchos numeros"
ResponderEliminarHola! Primero checa bien si tu cadena de conexión desde Visual a SQL sea la correcta y este bien el enlace, muchas veces pasa por eso porque no esta bien la cadena de conexión, también checa que datatable1 exista dentro de tu proyecto porque quizá le pusiste otro nombre al objeto.
EliminarEste comentario ha sido eliminado por el autor.
EliminarExcelente aporte amigo!
EliminarPara los que les da el error
No se puede cargar el archivo o ensamblado ‘file: ... crdb_adoplus.dll
Vayan al archivo App.Config del proyecto y cambien la línea Linea a reemplazar por:
Como debe quedar
Y listo!
y como le hago para conectarlo por medio de Npgsql, el único error que me marca es en la palabra ReportSource........
ResponderEliminarTe marca error porque probablemente no se le esta pasando ninguno dato al reporte para poder llenarlo, si estas utilizando PostgreSQL primero que nada tienes que agregar la las referencias de las .dlls para conectarse al PostgreSQL,creo que son Npgsql.dll, policy.2.0.Npgsql.dll, Mono.Security.dll, y pues hacer el mismo procedimiento para llenado del DataSet pero por lógica tu cadena de conexion asi como el codigo para poder ejecutar tu query y te regrese datos para el llenado pues cambiaria.
ResponderEliminarsi.....pude resolver ese asunto, pero me dice al tratar de entrar al formulario que no pudo conectarse a la base de datos.....algún error en el temp.....realmente desconozco de esto.......
EliminarOk entiendo, y haciendo un debug con un breakpoint en la linea donde se encuentra el código: "objRpt.SetDataSource(Ds)" puedes verificar que el objeto Ds traiga datos? Porque si te marca que no se pudo conectar a la BD probablemente tengas algun dato mal en la cadena de conexion y es por eso que no te hace el llenado del DataSet,si puedes haz un debug hasta ese punto y verifica que traiga datos, si no trae datos ve a un punto anterior y verifica que la BD haga su conexion a tu BD correctamente, por ahi debe de estar el detalle.
EliminarExcelente tutoríal! Solo tengo una duda, tengo dos parámetros de fechas para un rango. Fechainicio y fechafinal. Dónde debe ir eso??
ResponderEliminarEsos parámetros van directamente en la sentencia SQL de tu Query, por ejemplo SELECT * FROM TABLA_SQL WHERE FECHAINICIO BETWEEN 'FECHA1' AND 'FECHA2' Por lo cual tu Fecha1 corresponde a tu fecha de inicio y Fecha2 a tu fecha final, claro que esos datos los tienes que mandar directamente desde tu form al controlador o a la clase donde tengas el método para cachar las fechas y calcular el reporte.
ResponderEliminarEstoy haciendo una aplicación en Visual Basic 2015, Access 2016 y SAP Crystal Reports. Toda la aplicación me funciona perfectamente, el gran problema que tengo es que cuando creo el instalador e implemento el sistema en otro equipo los reportes me los muestra en blanco :'( alguna sugerencia que me puedan dar!!!
ResponderEliminarMe paso algo parecido una ves ese mismo detalle pero con SQL y era porque el servidor donde estaba alojada SQL Server no aceptaba conexiones remotas, la solucion fue que habilite esa opcion y listo, quiza te este pasando algo similar con la BD que tienes de Access, o puede ser que el Firewall este bloqueando la peticion.
EliminarIncluso instalé la aplicación en mi PC en C:\Program Files\etc\etc...
EliminarTodo el manejo con la DB funciona perfectamente, inserciones, actualizaciones, eliminar, búsqueda, etc. El problema que tengo es que, cuando genero reportes, estos se quedan apuntando a la ruta de la base de datos en la carpeta del proyecto (Debug). Por ejemplo si le meto datos manualmente a la DB que esta en la carpeta del proyecto y pruebo generar reportes ahí si me los crea, pero cuando pruebo con las datos ingresados en la base de datos de la aplicación al instalarse ahí si no muestra nada. HELP ME.
Ah pues ahí tienes tú problema que siempre estás apuntando a una dirección y no tiene que ser así, debes utilizar la librería Path que está en System.IO si no mal recuerdo y definir una carpeta predeterminada en tu proyecto.
EliminarTodo bien con una tabla, pero que tal si quieres hacer un reporte donde "jales" campos de 5 tablas???
ResponderEliminarSi son 5 sentencias diferentes y necesitas cargar el detalle por separado de cada tabla puedes utilizar mas DataSets para el llenado de información solamente pues tienes que llenar cada correspondiente con su tabla y ya con eso puedes poner los datos en el reporte, o quizá a lo mejor necesitas hacer uso de uniones de tablas y las ponga en una sola.
EliminarY para hacer el tiket a una sola persona???
ResponderEliminarPodrías ser un poco más específico? Es que no entendí de que a solo una persona.
EliminarHola muchas gracias por el comentario, si me imagino jeje es un proyecto del 2011 ahorita ya la metodología es muy diferente.
ResponderEliminarMI HERMANO, PLENO 2020 Y ME FUNCIONO DE LUJO, ME SACASTE DE UN GRAN APURO! ESTO ES JUSTO LO QUE ESTABA BUSCANDO... SIMPLEMENTE QUERIA LLENAR EL REPORTE MEDIANTE DATASET Y CODIGO Y NO POR ASISTENTE PARA NO ESTAR ACTUALIZANDO LA CONEXION Y DE IGUAL MANERA APLICAR PARAMETROS DE FILTRACION! MUCHAS GRACIAS! UN SALUDO!
ResponderEliminarQue buena onda, hace ya 8 años de este post pero pues que bueno que te haya funcionado a la perfección, saludos! ;)
EliminarGracias! me ayudaste mucho!
Eliminarya logre generar todo tal como quería realizarlo e incluso acabe el sistema jaja.
Muchas gracias amigo por este gran post, he tenido grandes problemas de compatibilidad y buscando buscando pues encontre esta alternativa al problema que tenia con los informes. Bendiciones.
ResponderEliminarPerfecto mi amigo, bendiciones igual.
Eliminar