El ejemplo que hice para ella y que hoy comparto con usted hace uso del wizard de visual studio válido para las versiones 2005 y 2008. Sé que habrá quienes digan que esta no es la mejor manera de hacerlo, quienes lo hagan seguramente ya tienen experiencia en esto, sin embargo el ejemplo está dirigido para principiantes. En otra ocasión compartiré otro método. Por lo pronto acá les dejo el enlace del video en youtube y el código fuente:
Imports CrystalDecisions.Shared Imports CrystalDecisions.CrystalReports.Engine Partial Class _Default Inherits System.Web.UI.Page Private Sub configureCRYSTALREPORT() Dim myConnectionInfo As New ConnectionInfo() myConnectionInfo.ServerName = "NOMBRE_O_IP_DEL_SERVIDOR" myConnectionInfo.DatabaseName = "Northwind" myConnectionInfo.UserID = "sa" myConnectionInfo.Password = "myserver" setDBLOGONforREPORT(myConnectionInfo) End Sub Private Sub setDBLOGONforREPORT(ByVal myconnectioninfo As ConnectionInfo) Dim mytableloginfos As New TableLogOnInfos() mytableloginfos = CrystalReportViewer1.LogOnInfo For Each myTableLogOnInfo As TableLogOnInfo In mytableloginfos myTableLogOnInfo.ConnectionInfo = myconnectioninfo Next End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load configureCRYSTALREPORT() End Sub End ClassMe han solicitado el código en c#. Acá se los dejo.
using CrystalDecisions.Shared; using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Web; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { configureCRYSTALREPORT(); } private void configureCRYSTALREPORT() { ConnectionInfo myConnectionInfo = new ConnectionInfo(); myConnectionInfo.ServerName = "NOMBRE_O_IP_DEL_SERVIDOR"; myConnectionInfo.DatabaseName = "Northwind"; myConnectionInfo.UserID = "sa"; myConnectionInfo.Password = "mipassword"; setDBLOGONforREPORT(myConnectionInfo); } private void setDBLOGONforREPORT(ConnectionInfo myconnectioninfo) { TableLogOnInfos mytableloginfos = new TableLogOnInfos(); mytableloginfos = CrystalReportViewer1.LogOnInfo; foreach (TableLogOnInfo myTableLogOnInfo in mytableloginfos) { myTableLogOnInfo.ConnectionInfo = myconnectioninfo; } } }Si desean usar la autenticacion de windows en lugar de autenticacion de sql server cambian las lineas correspondientes al UserID y Password por lo siguiente:
myConnectionInfo.IntegratedSecurity = true;Para evitar que durante la publicación recuerde los datos de prueba deben activar la opción Discard Saved Data When Loading Reports en las imagenes siguientes muestro como hacerlo
Actualización:
Para Visual Studio 2010 y versiones posteriores es necesario descargar e instalar SAP Crystal Reports, developer version for Microsoft Visual Studio, despues de la instalación el procedimiento a seguir es el mismo.
Y como sería esto en C#?
ResponderEliminarHe actualizado el artículo con el código para c#
EliminarExcelente aporte, muchas gracias
ResponderEliminarComo hago si no tengo clave ni id en la base de datos y cada vez que genero el reporte me pide estos datos???
ResponderEliminarSi trabajas con autenticación de windows tienes que cambiar los parámetros de conexión. He actualizado el artículo con la respuesta.
EliminarSaludos
Ola Willian necesito ayuda como con el crystal report lo que pasa es que en la empresa donde lo publico mi proyecto web los salen con los datos de la base de datos con la k hago prueva no salen con la base de datos de ese servidor como haria eso ??? y sabes por que sucede
ResponderEliminarDisculpa, pero no entiendo tu pregunta. ¿Puedes ser mas explicíto? Sería de mucha utilidad que describas con precisión el error. Saludos
Eliminarno tengo error pero al momento de llevar mi proyecto final web al cliente con todos los reportes los reportes salen con los datos de la maquina en que estuve trabajando caso es mi laptop ... ese es el detalle man ...
ResponderEliminarlo cual son datos de prueba pero me muestran estos datos de prueba pongo actualizar y nada siguen con esos datos espero puedas ayudarme
EliminarPara evitar que durante la publicación recuerde los datos de prueba debes activar la opción Discard Saved Data When Loading Reports. Actualicé el artículo, en el verás dos imágenes que ilustrar como hacerlo. Espero que eso solucione tu problema, en cualquiera de los casos deja tu comentario.
EliminarSaludos
bueno intente lo que me dijiste active esa opcion pero aun el problema persiste mmm ... hay alguna tipo de inconveniente si el reporte lo hago por codigo o usando la ayuda del administrador ??? por que lo estoy haciendo con la ayuda del administrador
ResponderEliminarSi con "administrador " te refieres al "asistente o wizard" de crystal reports en visual studio no deberías tener ningún problema. Prueba a Deshabilitar la caché del reportsource. Puedes hacer esto desde las propiedades del mismo.
EliminarSaludos
Amigo has probado tu codigo en Windows 7. Pues resulta que a mi me funciona excelente en Windows XP, pero en Windows 7 el reporte me pide autenticacion.
ResponderEliminarSi sabes alguna solucion porfa escribe a: karzierr@hotmail.com
karzierr@gmail.com
Saludos,
Si lo he probado en windows 7 ultimate como entorno de desarrollo y windows server 2008 server r2 como servidor de producción y funciona a la perfección.
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarhola, estoy tratando de probar el codigo pero tengo el problema, que no puedo visualizar el reporte que puede estar pasando
ResponderEliminarsaludos
hola, una preguna mira tengo previamente un reporte hecho en crystal reports pero no se como mandarle los parametros al reporte desde asp.net con C#, debido que dentro de dicho reporte hago una serie de calculos con los datos y una serie de consultas
ResponderEliminarA partir del ejemplo del post puedes hacerlo cambiando (o añadiendo) la sentencia de selección de registros del reporte.
EliminarEsta sentencia debes asignarla a la propiedad RecordSelectionFormula del reporte en cuestión. Esta sentencia es la que el motor de crystal report pondrá en la clausula WHERE cuando envíe la petición al servidor.
CrystalReportSource1.ReportDocument.RecordSelectionFormula = "{Tabla.CampoCadena}='" + miparamstring + "' AND {Tabla.CampoNumero} = " + MiParamNumber.ToString();
Espero que esto te ayude, Saludos.
Existe un método mas eficiente, que es pasar un dataset directamente al reporte; pero por falta de tiempo eso lo trataré en otro post.
Me gustaría que me ayudes como hacerlo para asp.net 2010
ResponderEliminarComo se podría hacer para asp.net 2010 porque no entiendo...gracias
ResponderEliminarhola, mi nombre es moises diaz, de Honduras, deseo consultar algo; estoy realizando mi practica profesional y estoy desarrollando un sistema de inventario de TI, pero el jefe kiere que para los reportes, el seleccione los campos que iran en tal reporte, Lo estoy realizando en SQL 2008 y Asp.net C# 2010. este es mi correo moisesdiaz3105@yahoo.es, moisesdiaz3105@gmail.com, moisesdiaz3105@hotmail.com; si pueden hecharme una mano se les agradece de ante mano..
ResponderEliminarGracias!!! con tu ejemplo logre cargar mostrar en asp.net un informe desde un rpt
ResponderEliminarProtected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim rd As ReportDocument = New ReportDocument()
Dim crConnectionInfo As ConnectionInfo
Dim mytableloginfos As New TableLogOnInfos()
rd.Load(Server.MapPath("~/Rpt/") + "Reporte.rpt")
crConnectionInfo = New ConnectionInfo()
crConnectionInfo.ServerName = "ServerName"
crConnectionInfo.DatabaseName = "DatabaseName"
crConnectionInfo.UserID = "UserName"
crConnectionInfo.Password = "Password"
rd.ParameterFields("Parametro1").CurrentValues.AddValue(Valor1)
rd.ParameterFields("Parametro2").CurrentValues.AddValue("Valor2")
crpViewer1.ReportSource = rd
mytableloginfos = crpViewer1.LogOnInfo
For Each myTableLogOnInfo As TableLogOnInfo In mytableloginfos
myTableLogOnInfo.ConnectionInfo = crConnectionInfo
Next
End If
End Sub
Gracias ..
ResponderEliminarDISCULPEN ALGUN ME PUEDE FACILITAR INFORMACION PARA HACER LOS REPORTES CON PARAMETROS
ResponderEliminarNo he podido refrescar los parametros en el reporte desde mi aplicación, si tuviera algun consejo. Uso Visual Studio 2010 con Mysql.
ResponderEliminarTendría que saber como lo estás haciendo. Por ejemplo si deseas que los parámetros se cambien al momento en que el input (textbox, dropdownlist, check, radio, etc) cambie de valor debes asegurarte que este tenga la opción Autopostback=True.
EliminarSi quieres que se actualice solo el area donde se muestra el reporte deberías incluirlo dentro de un UpdatePanel.
ResponderEliminar