domingo, 23 de marzo de 2014

Programacion Basica n Capas Asp.net

crear 4 proyectos
que seran nuestas capas
Capa 1: Datos
Capa 2: Entidad
Capa 3: Logica
Capa 4: Interfaz

Contenido.

Capa1

  • AccesoDatos.vb
  • Conexion.vb
  • Datos_Tabla.vb
  • MetodosDatos.vb

Capa2

  • Entidad_Tabla.vb

Capa3

  • AccesoLogica.vb

Capa4

  • Default.aspx




Programación
Imports Microsoft.VisualBasic
Imports Entidad
Imports System.Data
Imports System.Data.SqlClient
Public Class AccesoDatos
    Public Shared Function Listar_Persona() As DataTable
        Dim Query As SqlCommand = MetodosDatos.CrearComando() ' Indicamos de Clase MetodosDatos que se creara una Consulta en el Query
        Query.CommandText = "select * from Persona" ' Ejecutamos la Consulta
        Return MetodosDatos.EjecutarComandoQuery(Query)
    End Function
    Public Shared Function Mantenimiento_Persona(Entidad_Persona As Entidad_Persona) As DataTable
        Return Datos_Persona.Mantenimiento_Persona(Entidad_Persona)
    End Function

    Public Shared Function BuscarResultados(Proceso As String) As DataTable
        Dim Query As SqlCommand = MetodosDatos.CrearComando() ' Indicamos de Clase MetodosDatos que se creara una Consulta en el Query
        Query.CommandText = Proceso
        Return MetodosDatos.EjecutarComandoQuery(Query) ' Retornoamos le Consulta para ser usada en otro lado
    End Function
End Class

Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient
Public Class Conexion
    Shared Cnx As String = "server=PC;database=BaseDatos;User ID=sa;Password="
    ' Objeto de Conexion para utilizarla en todos lados
    Public Shared ReadOnly Property CadenaConexion() As String
        ' Enviando
        Get
            'Devuelve la Cadena de Conexion donde se solicite
            Return Cnx
            ' Fin Envio
        End Get
    End Property


End Class

Imports System.Data
Imports System.Data.SqlClient
Imports Entidad
Public Class Datos_Persona
    Public Shared Function Mantenimiento_Persona(Entidad_Persona As Entidad_Persona) As DataTable
        Dim CadenaCnx = Conexion.CadenaConexion ' Guardamos la Cadena de Conexion de la Capa Datos
        Dim Cnx As New SqlConnection() ' Declaramos Cnx para Conexiones
        Cnx.ConnectionString = CadenaCnx ' Reindicamos Conexion
        Dim cmd As New SqlCommand("SP_PERSONA", Cnx)
        With cmd ' enviaremos parametros
            .CommandType = CommandType.StoredProcedure
            .Parameters.AddWithValue("@T", Entidad_Persona.T)
            '******************* Puros datos  ******************************
            .Parameters.AddWithValue("@codigo", Entidad_Persona.codigo)
            .Parameters.AddWithValue("@nombre", Entidad_Persona.nombre)
            .Parameters.AddWithValue("@estado", Entidad_Persona.estado)
            .Parameters.AddWithValue("@fecha", Entidad_Persona.fecha)

        End With
        Try
            Cnx.Open() ' abrimos conexion
            cmd.ExecuteNonQuery() ' ejecutamos todo el grupo del Cmd
            MsgBox("Los Datos se Guardaron Satisfactoriamente", MsgBoxStyle.Information, "Información del Sistema") ' Mensaje de Confirmacion de PRoceso de Guardado
        Catch ex As Exception
            MsgBox("No se Pudo Procesar la operación, Datos: " & Err.Description, MsgBoxStyle.Critical, "Información del Sistema")
            ' Mensaje de Error informativo del Sistema
        Finally
            Cnx.Close() ' Cerramos la conexion
        End Try
    End Function

End Class


Imports Entidad
Imports System.Data
Imports System.Data.SqlClient

Public Class MetodosDatos
    '
    'Funciones Generales Para Ser Ejecutadas
    Public Shared Function CrearComando() As SqlCommand ' Creamos un Comendo para Ejecutar Procedimientos, Select,  Vistas, Funciones , Etc

        Dim CadenaCnx = Conexion.CadenaConexion ' Guardamos la Cadena de Conexion de la Capa Datos
        Dim Cnx As New SqlConnection() ' Declaramos Cnx para Conexiones
        Dim Cmd As New SqlCommand() ' Declaramos Cnx para Comandos
        Cnx.ConnectionString = CadenaCnx ' Reindicamos Conexion
        Cmd = Cnx.CreateCommand() ' Indicamos que crearemos una consulta(Select, Vistas, Procedimientos, Etc)
        Cmd.CommandType = CommandType.Text ' Indicamos que guardara este tipo texto
        Return Cmd ' Devuelve el Cmd para ser utilizado 

    End Function

    Public Shared Function EjecutarComandoQuery(Comando As SqlCommand) As DataTable ' Metodo que recibe parametro "Comando" 

        Dim Tabla As New DataTable() ' Declaramos Variable Tipo DataTable donde se guardara el resultado de nuestra consulta
        Try ' Try para obtener en caso de error o fuera de intervalos de ingresos
            Comando.Connection.Open() 'Ejecutamos y abrimos conexion
            Dim Dap As New SqlDataAdapter() ' Creamos DataAdapter
            Dap.SelectCommand = Comando 'Obtenemos el resultado del Comando en el Dap
            Dap.Fill(Tabla) ' Guardamos en Tabla el resultado 
        Catch ex As Exception
        Finally
            Comando.Connection.Close()
        End Try
        Return Tabla ' Retornamos Tabla listo con la consulta realizada

    End Function

End Class

CAPA ENTIDAD
Imports Microsoft.VisualBasic

Public Class Entidad_Persona
    Public T As String
    Public codigo As String
    Public nombre As String
    Public estado As String
    Public fecha As String



End Class

CAPA LÓGICA
Imports Microsoft.VisualBasic
Imports Datos
Imports Entidad
Public Class AccesoLogica
    Public Shared Function Listar_Persona() As DataTable
        ' Obtiene los parametros y los reenvia a Capa Datos
        Return AccesoDatos.Listar_Persona()
    End Function

    Public Shared Function Mantenimiento_Persona(Entidad_Persona As Entidad_Persona) As DataTable
        Return AccesoDatos.Mantenimiento_Persona(Entidad_Persona)
    End Function

    Public Shared Function BuscarResultados(Proceso As String) As DataTable
        ' Obtiene los parametros y los reenvia a Capa Datos
        Return AccesoDatos.BuscarResultados(Proceso)
    End Function

End Class

CAPA INTERFAZ

Default
Imports Logica
Imports Entidad
Imports Datos
Imports System.Data
Imports System.Data.SqlClient
Partial Class Page1_M
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        TextBox3.Text = Date.Today



        GridView1.DataSource = AccesoLogica.Listar_Persona()
        GridView1.DataBind()
    End Sub

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        limpiar()
    End Sub

    Sub limpiar()
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = Date.Today
        DropDownList1.SelectedIndex = 0
        lblestado.Text = "NUEVO"
        GridView1.DataSource = AccesoLogica.Listar_Persona()
        GridView1.DataBind()
    End Sub

    Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click


        grabar()
    End Sub
    Sub grabar()
        Dim Entidad_Persona = New Entidad_Persona()

        Entidad_Persona.codigo = TextBox1.Text
        Entidad_Persona.nombre = TextBox2.Text
        Entidad_Persona.estado = DropDownList1.Text
        Entidad_Persona.fecha = TextBox3.Text

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        If lblestado.Text = "NUEVO" Then

            Entidad_Persona.T = "I"
            AccesoLogica.Mantenimiento_Persona(Entidad_Persona)
        ElseIf lblestado.Text = "EDICION" Then

            Entidad_Persona.T = "U"
            AccesoLogica.Mantenimiento_Persona(Entidad_Persona)

        End If
        lblestado.Text = "EDICION"
        GridView1.DataSource = AccesoLogica.Listar_Persona()
        GridView1.DataBind()

        'End 'If

    End Sub
    Protected Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        GridView1.DataSource = AccesoLogica.BuscarResultados("SELECT * FROM PERSONA WHERE NOMBRE LIKE '%" & TextBox2.Text & "%'")
        GridView1.DataBind()
    End Sub

    Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        If lblestado.Text = "EDICION" Then
            Dim Entidad_Persona = New Entidad_Persona()

            Entidad_Persona.codigo = TextBox1.Text
            Entidad_Persona.nombre = TextBox2.Text
            Entidad_Persona.estado = DropDownList1.Text
            Entidad_Persona.fecha = TextBox3.Text


            Entidad_Persona.T = "D"
            AccesoLogica.Mantenimiento_Persona(Entidad_Persona)

            lblestado.Text = "NUEVO"
            limpiar()
            GridView1.DataSource = AccesoLogica.Listar_Persona()
            GridView1.DataBind()
        End If

    End Sub

    Protected Sub DropDownList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DropDownList1.SelectedIndexChanged

    End Sub

    Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged
        On Error GoTo Error1
        TextBox1.Text = GridView1.SelectedRow().Cells(1).Text
        TextBox2.Text = GridView1.SelectedRow().Cells(2).Text
        DropDownList1.SelectedValue = GridView1.SelectedRow().Cells(3).Text.ToString()
        TextBox3.Text = GridView1.SelectedRow().Cells(4).Text
        lblestado.Text = "EDICION"
        Exit Sub
Error1:
        MsgBox(Err.Description)
    End Sub
End Class


2 comentarios:

  1. muy buen aporte...solo una pregunta como le podria hacer para llenar un dropdown utilizando un procedimiento almacenado?

    ResponderEliminar
  2. --------------



    CREATE TABLE [dbo].[Tabla1](
    [id] [tinyint] IDENTITY(1,1) NOT NULL,
    [nom] [nvarchar](15) NULL,
    [ape] [nvarchar](15) NULL,
    [dir] [nvarchar](15) NULL,
    [est] [tinyint] NULL
    ) ON [PRIMARY]

    go


    ALTER PROCEDURE [dbo].[sp_mantenimiento]

    --exec sp_mantenimiento '','','','','',4
    --go


    @par_t_id tinyint,
    @par_nv_nom nvarchar(15),
    @par_nv_ape nvarchar(15),
    @par_nv_dir nvarchar(15),
    @par_t_est tinyint,

    @par_t_tipooper tinyint
    AS
    BEGIN

    if @par_t_tipooper=1-- insert
    BEGIN
    INSERT INTO tabla1(nom,ape,dir,est) VALUES (@par_nv_nom,@par_nv_ape,@par_nv_dir,@par_t_est)
    END

    if @par_t_tipooper=2-- update
    BEGIN
    UPDATE tabla1 SET nom=@par_nv_nom,ape=@par_nv_ape,dir=@par_nv_dir
    WHERE id = @par_t_id
    END

    if @par_t_tipooper=3-- delete
    BEGIN
    UPDATE tabla1 SET est=1
    WHERE id = @par_t_id
    END

    if @par_t_tipooper=4--select
    BEGIN
    select * from tabla1 where
    (id = case when @par_t_id ='' then id else @par_t_id end) and
    (nom = case when @par_nv_nom ='' then nom else @par_nv_nom end) and
    (ape = case when @par_nv_ape ='' then ape else @par_nv_ape end) and
    (dir = case when @par_nv_dir ='' then dir else @par_nv_dir end)
    END

    END

    ---------------------------------------------

    Imports System.Data
    Imports System.Data.SqlClient

    Partial Class _Default
    Inherits System.Web.UI.Page

    Dim Cnx As New SqlConnection("Data Source=MIGUEL-PC\MIGUEL_R2; initial Catalog=Prueba; User ID=TITAN;password=SOFT")

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Mostrar()
    End Sub

    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click

    Dim cmd As New SqlCommand("sp_mantenimiento", Cnx)
    With cmd
    .CommandType = CommandType.StoredProcedure
    .Parameters.Add("par_t_id", TextBox1.Text)
    .Parameters.Add("par_nv_nom", TextBox2.Text)
    .Parameters.Add("par_nv_ape", TextBox3.Text)
    .Parameters.Add("par_nv_dir", TextBox4.Text)
    .Parameters.Add("par_t_est", IIf(CheckBox1.Checked = True, 1, 0))
    .Parameters.Add("par_t_tipooper", 1) '1 = insert
    End With


    Try
    Cnx.Open()
    cmd.ExecuteNonQuery()
    Catch ex As Exception

    Finally
    Cnx.Close()
    Mostrar()

    End Try
    End Sub

    Sub Mostrar()
    Dim Dap As New SqlDataAdapter("exec sp_mantenimiento '','','','','',4", Cnx)
    Dim dst As New DataSet
    dst.Clear()
    Dap.Fill(dst, "PRUEBA")
    GridView1.DataSource = dst.Tables("PRUEBA")
    GridView1.DataBind()
    End Sub
    End Class

    ResponderEliminar