domingo, 17 de junio de 2012

Como Hacer Reporte Crystal Reports y Asp .Net

Recientemente una amiga me pidio ayuda para hacer un reporte rápido con crystal reports y asp .net.

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 Class

Me 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.

Saludos.