Está en la página 1de 9

I.E.S.

CESCA
Taller de Desarrollo III (Visual Net II)

Visual Basic .Net III


Aplicaciones distribuidas (N-Capas)
Objetivo
Crear Componentes (Dlls).
Hacer uso de los componentes creados.
Crear componentes que puedan ser consumidos por varios Clientes (Windows y Web)
Crear Capas de: Entidades, Reglas, Presentacin del Negocio.

Ejercicio
- Usar La Base de Datos Almacen
- Antes de Desarrollar este ejercicio deberemos de crear los Stored Procedures
- Desde el analizador de consultas (SQL Server) codificar:
Use Almacen
GO
CREATE PROCEDURE usp_GuardarCliente
@CodClie CHAR(8)output,
@ApeClie CHAR(30),
@NomClie
CHAR(30),
@DirClie CHAR(30),
@CodDis
CHAR(4),
@DniClie CHAR(8)
AS
declare @Codigo CHAR(8)
declare @cod char(7)
declare @max int
select @cod=max(SUBSTRING(codclie,3,6) + 1) from cliente
select @max=max(len(SUBSTRING(codclie,3,6) + 1)) from cliente
select @Codigo=max(left(codclie,len(codclie)- @max)) + @cod from cliente
insert into Cliente (CodClie,ApeClie,NomClie,DirClie,CodDis,DniClie)
VALUES(@Codigo,@ApeClie,@NomClie,@DirClie,@CodDis,@DniClie)
select @CodClie=CodClie from Cliente where CodClie=@Codigo
GO
Create Proc Usp_Jala_Distrito
As
Select CodDis,Rtrim(NomDis)as [NomDis] From Distrito
GO
Create Proc Usp_Consulta_Cliente
As
Select C.CodClie,C.ApeClie,C.NomClie,C.DirClie,RTrim(D.NomDis) as [Distrito],C.DniClie
From Cliente C inner join Distrito D
on C.CodDis=d.CodDis
GO
Prof: Eder Manuelo Garca / .Net Developer Specialist
Email: emanuelo_garcia@hotmail.com

Pgina 1 de 9

I.E.S. CESCA
Taller de Desarrollo III (Visual Net II)

Create Proc usp_Actualiza_Cliente


@CodClie CHAR(8),
@ApeClie CHAR(30),
@NomClie
CHAR(30),
@DirClie CHAR(30),
@CodDis
CHAR(4),
@DniClie CHAR(8)
As
update Cliente set Apeclie=@ApeClie,
NomClie=@NomClie,
DirClie=@DirClie,
CodDis=@CodDis,
DniClie=@DniClie
where CodClie=@CodClie
GO
Create Proc usp_Elimina_Cliente
@CodClie CHAR(8)
As
delete Cliente where CodClie=@CodClie
GO

Empecemos:
Pasos
1.- Crear una Solucin en Blanco
Men Archivo/ Nuevo / Solucin En Blanco, poner de nombre: N-Capas.

Crear capa de Entidades del Negocio


2.- Agregar a la solucin un nuevo proyecto de tipo Biblioteca de clases.

Men Archivo/ Agregar Proyecto / Nuevo Proyecto.


Seleccionar en plantillas Biblioteca de Clases, y poner nombre Layer_Business_Entity.

Prof: Eder Manuelo Garca / .Net Developer Specialist


Email: emanuelo_garcia@hotmail.com

Pgina 2 de 9

I.E.S. CESCA
Taller de Desarrollo III (Visual Net II)

Eliminar La clase que se crea por defecto Class1 y agregar una nueva con nombre
BE_Cliente.
La Solucin Quedara de la siguiente Forma:

3.- Escribir el cdigo en la clase Cliente


<Serializable()> Public Class BE_Cliente
Private _CodClie As String
Private _NomClie As String
Private _ApeClie As String
Private _DirClie As String
Private _CodDis As String
Private _DniClie As String
Public Property CodClie() As String
Get
Return Me._CodClie
End Get
Set(ByVal Value As String)
Me._CodClie = Value
End Set
End Property
Public Property NomClie() As String
Get
Return _NomClie
End Get
Set(ByVal Value As String)
_NomClie = Value
End Set
End Property
Public Property ApeClie() As String
Get
Return _ApeClie
End Get
Set(ByVal Value As String)
_ApeClie = Value
End Set
End Property
Public Property DirClie() As String
Get
Return _DirClie
Prof: Eder Manuelo Garca / .Net Developer Specialist
Email: emanuelo_garcia@hotmail.com

Agregar el Atributo
<Serializable> antes de la
declaracin de la Clase

Pgina 3 de 9

I.E.S. CESCA
Taller de Desarrollo III (Visual Net II)
End Get
Set(ByVal Value As String)
_DirClie = Value
End Set
End Property
Public Property CodDis() As String
Get
Return _CodDis
End Get
Set(ByVal Value As String)
_CodDis = Value
End Set
End Property
Public Property DniClie() As String
Get
Return _DniClie
End Get
Set(ByVal Value As String)
_DniClie = Value
End Set
End Property
Sub New(ByVal CCodClie As String, ByVal CNomClie As String, ByVal CApeClie As String, _
ByVal CDirClie As String, ByVal CCodDis As String, ByVal CDniClie As String)
_CodClie = CCodClie
_NomClie = CNomClie
_ApeClie = CApeClie
_DirClie = CDirClie
_CodDis = CCodDis
_DniClie = CDniClie
End Sub
End Class

4.- Ir Generando el Proyecto (Crear la Dll).


Clic derecho en el proyecto/ Generar:

Prof: Eder Manuelo Garca / .Net Developer Specialist


Email: emanuelo_garcia@hotmail.com

Pgina 4 de 9

I.E.S. CESCA
Taller de Desarrollo III (Visual Net II)

Al Generar se crea la dll de nombre Layer_Business_Entityque contiene la clase


BE_Cliente.
Ubicarla en la carpeta donde se guardo el proyecto; por defecto se genera en la carpeta bin de
nuestro proyecto.
Ejemplo:

Crear capa de Reglas del Negocio


1.- Agregar un Proyecto a la Solucin de tipo Biblioteca de Clase

Men Archivo/ Agregar Proyecto / Nuevo Proyecto.


Seleccionar en plantillas Biblioteca de Clases, y poner nombre Layer_Rules_Business.
Ver Paso 2 de Crear Capa de Entidades de Negocio.
Eliminar La clase que se crea por defecto Class1 y agregar una nueva con nombre
OperacionesCliente.
La Solucin Quedara de la siguiente Forma:

Prof: Eder Manuelo Garca / .Net Developer Specialist


Email: emanuelo_garcia@hotmail.com

Pgina 5 de 9

I.E.S. CESCA
Taller de Desarrollo III (Visual Net II)

3.- Agregar la referencia (la dll Layer_Business_Entity) al proyecto para poder


hacer uso de la clase BE_Cliente que se encuentra dentro de esta:
Clic derecho en Referentes/ Agregar Referencia

En la ventana que despliega Agregar Referencia seleccionamos la ficha Proyectos:


Seleccionamos la dll Clic en el botn seleccionar, y aceptar.

Prof: Eder Manuelo Garca / .Net Developer Specialist


Email: emanuelo_garcia@hotmail.com

Pgina 6 de 9

I.E.S. CESCA
Taller de Desarrollo III (Visual Net II)

Notar que se agrega el componente a las referencias:

Ahopra si podremos hacer uso de la Clase BE_Cliente

4.- Codificar en la Clase OperacionesCliente


En el general de la clase:
Imports Layer_Business_Entity
Imports System.Data.SqlClient
Serializar la Clase (Quedara de la siguiente manera):
<Serializable()> Public Class OperacionesCliente

A nivel de Clase:
Private cn As New SqlConnection("Integrated Security=True;server=.;database=Almacen")
Rem Creamos los metodos
Public Function getDistrito() As DataTable
Try
Dim da As New SqlDataAdapter("Usp_Jala_Distrito", cn)
Dim ds As New DataSet
da.Fill(ds, "Distrito")
Return ds.Tables("Distrito")
Catch ex As Exception
Throw ex
End Try
End Function
Public Function getCliente() As DataTable
Try
Dim da As New SqlDataAdapter("Usp_Consulta_Cliente", cn)
Dim ds As New DataSet
da.Fill(ds, "Clientes")
Return ds.Tables("Clientes")
Catch ex As Exception
Throw ex
End Try
End Function
Prof: Eder Manuelo Garca / .Net Developer Specialist
Email: emanuelo_garcia@hotmail.com

Pgina 7 de 9

I.E.S. CESCA
Taller de Desarrollo III (Visual Net II)
Public Function setGuardaCliente(ByVal objClient As BE_Cliente) As String
Try
Dim cmd As New SqlCommand("usp_GuardarCliente", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlParameter("@CodClie", SqlDbType.Char, 8)).Direction =
ParameterDirection.Output
cmd.Parameters.Add(New SqlParameter("@ApeClie", SqlDbType.Char, 30)).Value =
objClient.ApeClie
cmd.Parameters.Add(New SqlParameter("@NomClie", SqlDbType.Char, 30)).Value =
objClient.NomClie
cmd.Parameters.Add(New SqlParameter("@DirClie", SqlDbType.Char, 30)).Value =
objClient.DirClie
cmd.Parameters.Add(New SqlParameter("@CodDis", SqlDbType.Char, 4)).Value =
objClient.CodDis
cmd.Parameters.Add(New SqlParameter("@DniClie", SqlDbType.Char, 8)).Value =
objClient.DniClie
cn.Open()
cmd.ExecuteNonQuery()
Dim codigo As String = cmd.Parameters("@CodClie").Value
cn.Close()
Return codigo
Catch ex As Exception
Throw ex
Finally
If cn.State = ConnectionState.Open Then cn.Close()
End Try
End Function
Public Sub setActualizaCliente(ByVal objClient As BE_Cliente)
Try
Dim cmd As New SqlCommand("usp_Actualiza_Cliente", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlParameter("@CodClie", SqlDbType.Char, 8)).Value =
objClient.CodClie
cmd.Parameters.Add(New SqlParameter("@ApeClie", SqlDbType.Char, 30)).Value =
objClient.ApeClie
cmd.Parameters.Add(New SqlParameter("@NomClie", SqlDbType.Char, 30)).Value =
objClient.NomClie
cmd.Parameters.Add(New SqlParameter("@DirClie", SqlDbType.Char, 30)).Value =
objClient.DirClie
cmd.Parameters.Add(New SqlParameter("@CodDis", SqlDbType.Char, 4)).Value =
objClient.CodDis
cmd.Parameters.Add(New SqlParameter("@DniClie", SqlDbType.Char, 8)).Value =
objClient.DniClie
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
Catch ex As Exception
Throw ex
Finally
Prof: Eder Manuelo Garca / .Net Developer Specialist
Email: emanuelo_garcia@hotmail.com

Pgina 8 de 9

I.E.S. CESCA
Taller de Desarrollo III (Visual Net II)
If cn.State = ConnectionState.Open Then cn.Close()
End Try
End Sub
Public Sub setEliminaCliente(ByVal CodClie As String)
Try
Dim cmd As New SqlCommand("usp_Elimina_Cliente", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlParameter("@CodClie", SqlDbType.Char, 8)).Value = CodClie
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
Catch ex As Exception
Throw ex
Finally
If cn.State = ConnectionState.Open Then cn.Close()
End Try
End Sub

Prof: Eder Manuelo Garca / .Net Developer Specialist


Email: emanuelo_garcia@hotmail.com

Pgina 9 de 9

También podría gustarte