miércoles, 8 de abril de 2020

Agenda con reporte c#.Net





Ok creamos la Base de datos:

CREATE DATABASE bdagenda

use bdagenda
Creamos las siguientes tablas

create table tblusuarios(
idusr int identity(1,1) primary key,
usuario varchar(100),
contra varchar(100)
)



Creamos los procedimientos almacenados para gestionar cada tabla.
--Procedimiento para guardar
create procedure spguardaralumno(@Nombre varchar(60),@Apaterno varchar(80),@Amaterno varchar (80))
as
insert into tblalumno (Nombre,Apaterno,Amaterno)
values(@Nombre,@Apaterno,@Amaterno)

--Procedimiento para modificar
create procedure spmodificarusuario @idusuario int,@Nombre varchar(60),@Apaterno varchar(80),@Amaterno varchar(80)
as
update tblalumno set Nombre=@Nombre, Apaterno=@Apaterno,Amaterno=@Amaterno where idalumno=@idusuario
--Procedimiento para eliminar
create procedure speliminaralumno @idusuario int
as
delete from tblalumno where idalumno=@idusuario
--Procedimiento para consultar
create procedure spconsultar_por_id @idusuario int
as
select * from tblalumno where idalumno=@idusuario


OK Ahora viene lo bueno Crear Un sitio web para usar los procedimientos almacenados.

Abrimos Visual Studio.
Damos click en  Archivo -> Nuevo -> Sitio web
Seleccionamos Sitio web Asp

Vamos a crear la Clase de conexion se va a llamar  Classconexion
Click derecho en el proyecto ->Agregar-> nuevo elemento -> elige Clase
--------------------------------La clase llevara algo como esto------------------------------------------------
----------------------------Vamos a poner la cadena de conexion sqlserver--------------------------------
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

/// <summary>
/// Descripción breve de Classconexion
/// </summary>
static class Classconexion
{

    public static string con()
    {
        string Conexion;
        Conexion = @"data source=CHARLY-PC\SQLEXPRESS;initial catalog =bdagenda;integrated security =true;";

        return Conexion;
       
    }
}
--------------------------------------------------------------------------------------------------------------------------
Ahora vamos a Crear la clase de los constructores de nuestras variables se va a llamar Classcontacto
Agregamos otra Clase y escribimos lo siguiente:
--------------------------------------------------------------------------------------------------------------------------
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public class Classcontacto
{
    public string _Nombre, _Apaterno, _Amaterno;
    public int _idusuario;
    public int idusuario
    {
        get
        {
            return this._idusuario;
        }
        set
        {
            this._idusuario = value;
        }
    }

    
    public string Nombre
    {
        get
        {
            return this._Nombre;
        }
        set
        {
            this._Nombre = value;
        }
    }

    public string Apaterno
    {
        get
        {
            return this._Apaterno;
        }
        set
        {
            this._Apaterno = value;
        }
    }

    public string Amaterno
    {
        get
        {
            return this._Amaterno;
        }
        set
        {
            this._Amaterno = value;
        }
    }


}
---------------------------------------------------------------------------------------------------------------------
Ahora vamos a crear otra clase, la cual va a contener nuestros metodos se va a llamar Classagenda.
Va a contener lo siguiente:
---------------------------------------------------------------------------------------------------------------------
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public class Classagenda
{

    public static string Cadena = Classconexion.con();
    public static SqlConnection cn = new SqlConnection(Cadena);


    private Classcontacto c = new Classcontacto();
    public void guardaralumno(Classcontacto c)
    {
        SqlCommand cmd = new SqlCommand("spguardaralumno", cn);
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@Nombre", c.Nombre);
        cmd.Parameters.AddWithValue("@Apaterno", c.Apaterno);
        cmd.Parameters.AddWithValue("@Amaterno", c.Amaterno);
        try
        {
            cn.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            throw ex;

        }
        finally
        {
            cn.Close();
        }
    }



    public void eliminaralumno(Classcontacto c)
    {
        SqlCommand cmd = new SqlCommand("speliminaralumno", cn);
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@idusuario", c.idusuario);
        try
        {
            cn.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            throw ex;

        }
        finally
        {
            cn.Close();
        }
    }

    public void modificaralumno(Classcontacto c)
    {
        SqlCommand cmd = new SqlCommand("spmodificarusuario", cn);
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@idusuario", c.idusuario);
        cmd.Parameters.AddWithValue("@Nombre", c.Nombre);
        cmd.Parameters.AddWithValue("@Apaterno", c.Apaterno);
        cmd.Parameters.AddWithValue("@Amaterno", c.Amaterno);
        try
        {
            cn.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            throw ex;

        }
        finally
        {
            cn.Close();
        }
    }

    public DataTable listadodealumnos()
    {
        string sql = "Select * from tblalumno";
        SqlCommand cmd = new SqlCommand(sql, cn);
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        try
        {
            cn.Open();
            da.Fill(dt);
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            cn.Close();
        }
        return dt;
    }




    public Classcontacto buscaralumno_por_id(int idusuario)
    {
        SqlCommand cmd = new SqlCommand("spconsultar_por_id", cn);
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@idusuario", idusuario);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        System.Data.DataSet ds = new System.Data.DataSet();
        Classcontacto c = new Classcontacto();
        try
        {
            cn.Open();
            da.Fill(ds, "clave");
            c.idusuario = Convert.ToInt32(ds.Tables["clave"].Rows[0]["idalumno"]);
            c.Nombre = Convert.ToString(ds.Tables["clave"].Rows[0]["Nombre"]);
            c.Apaterno = Convert.ToString(ds.Tables["clave"].Rows[0]["Apaterno"]);
            c.Amaterno = Convert.ToString(ds.Tables["clave"].Rows[0]["Amaterno"]);

        }
        catch (Exception ex)
        {
            throw ex;
        }

        finally
        {
            cn.Close();
        }

        return c;
    }



    public System.Data.DataTable buscarpersona()
    {
        SqlCommand cmd = new SqlCommand("SELECT usuario,contra FROM tblusuarios", cn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        System.Data.DataSet ds = new System.Data.DataSet();
        Classcontacto c = new Classcontacto();
        try
        {
            cn.Open();
            da.Fill(ds, "persona");

            return ds.Tables["persona"];
            cn.Close();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            cn.Close();
        }
    }



}
-----------------------------------------------------------------------------------------------------------------------
Ahora vamos a crear otra clase para Autenticarnos se va a llamar Autentificacion
y va a contener lo siguiente:
-----------------------------------------------------------------------------------------------------------------------
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public class Autentificacion
{
    
    public static string Cadena = Classconexion.con();
    public static SqlConnection cn = new SqlConnection(Cadena);

    public static bool Autenticar(string usuario, string password)
    {

        //consulta a la base de datos
        string sql = @"SELECT COUNT(*)
                          FROM tblusuarios
                          WHERE usuario = @user AND contra = @pass";
        //cadena conexion
//        using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
        {
            cn.Open();//abrimos conexion

            SqlCommand cmd = new SqlCommand(sql, cn); //ejecutamos la instruccion
            cmd.Parameters.AddWithValue("@user", usuario); //enviamos los parametros
            cmd.Parameters.AddWithValue("@pass", password);

            int count = Convert.ToInt32(cmd.ExecuteScalar()); //devuelve la fila afectada
            cn.Close();
            if (count == 0)
                return false;
            else
               return true;

    }
    }
}
------------------------------------------------------------------------------------------------------------
Vamos a crear el formulario y agregar un Reporte
Primero vamos a dar click derecho en el proyecto y vamos a Agregar Nuevo elemento y elegimos Crystal Report. Como nombre va a llevar Reporte1

1.-Damos click en usar Asistente de Informes y Aceptar












-----------------------------------------------------------------------------------------------------------
Damos doble click sobre el login y escribimos lo siguiente
No olvidemos agregar using System.Web.Security;

Hacemos uso de la clase 
Autentificacion antes creada y le pasamos las claves

Autentificacion.Autenticar(Login1.UserName, Login1.Password)
------------------------------------------------------------------------------------------------
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.Security;

public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    
    protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        if (Autentificacion.Autenticar(Login1.UserName, Login1.Password))
        {
            FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet);

        }
    }
}
---------------------------------------------------------------------------------------------
Ahora vamos a el formulario Default.asp
Debe quedar como lo siguiente
--------------------------------------------------------------------------------------------------------------

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Web;
using CrystalDecisions.CrystalReports;
using CrystalDecisions.ReportSource;

using System.Web.Security;
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //si se autentica mostramos mensaje y nombre de usuario
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            Response.Write("Bienvenido : " + User.Identity.Name);
        }

        if (IsPostBack)
        {
            Label6.Text = DropDownList1.SelectedItem.ToString();
            Label7.Text = DropDownList1.SelectedValue.ToString();
        }

        Classagenda ag= new Classagenda();
        System.Data.DataTable dt;
        dt = ag.buscarpersona();
        this.DropDownList1.DataSource = dt;
        this.DropDownList1.DataValueField = "contra";
        this.DropDownList1.DataTextField = "usuario";
        this.DropDownList1.DataBind();


    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Reporte1 rp = new Reporte1();
        rp.SetParameterValue("@idusuario", Convert.ToInt16(this.txtidusuario.Text));
        CrystalReportViewer1.ReportSource = rp;

    }


    protected void btnguardar_Click(object sender, EventArgs e)
    {
        Classcontacto c = new Classcontacto();
        c.Nombre = this.txtnombre.Text;
        c.Apaterno = this.txtapaterno.Text;
        c.Amaterno = this.txtamaterno.Text;
        try
        {
            Classagenda ag = new Classagenda();
            ag.guardaralumno(c);
            this.Label5.Text = "Se guardo con exito";
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception Message: " + ex.Message);
        }

    }
    protected void btneliminar_Click(object sender, EventArgs e)
    {
        Classcontacto c = new Classcontacto();
        c.idusuario = Convert.ToInt16(this.txtidusuario.Text);
        try
        {
            Classagenda ag = new Classagenda();
            ag.eliminaralumno(c);
            this.Label5.Text = "Se elimino con exito";
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception Message: " + ex.Message);
        }

    }
    protected void btnconsultar_Click(object sender, EventArgs e)
    {
        Classagenda ag = new Classagenda();
        this.GridView1.DataSource = ag.listadodealumnos();
        this.GridView1.DataBind();

    }
    protected void btnmodificar_Click(object sender, EventArgs e)
    {
        Classcontacto c = new Classcontacto();
        c.idusuario = Convert.ToInt32(this.txtidusuario.Text);
        c.Nombre = this.txtnombre.Text;
        c.Apaterno = this.txtapaterno.Text;
        c.Amaterno = this.txtamaterno.Text;
        try
        {
            Classagenda ag = new Classagenda();
            ag.modificaralumno(c);
            this.Label5.Text = "Se modifico con exito";
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception Message: " + ex.Message);
        }


    }

    protected void btnconsultarporid_Click(object sender, EventArgs e)
    {
        Classcontacto c = new Classcontacto();
        c.idusuario = Convert.ToInt32(this.txtidusuario.Text);

        try
        {
            Classagenda ag = new Classagenda();
            c = ag.buscaralumno_por_id(c.idusuario);

            this.txtidusuario.Text = Convert.ToString(c.idusuario);
            this.txtnombre.Text = Convert.ToString(c._Nombre);
            this.txtapaterno.Text = Convert.ToString(c._Apaterno);
            this.txtamaterno.Text = Convert.ToString(c.Amaterno);


            this.Label5.Text = "Se consulto con exito";
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception Message: " + ex.Message);
        }

    }
    protected void btncerrar_Click1(object sender, EventArgs e)
    {
        //se borra la cookie de autenticacion
        FormsAuthentication.SignOut();

        //se redirecciona al usuario a la pagina de login
        Response.Redirect(Request.UrlReferrer.ToString());


    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
}

-----------------------------------------------------------------------------------------------------------
Por ultimo compilamos y probamos.

No hay comentarios:

Publicar un comentario