Professional Documents
Culture Documents
en tres capas
con interfase Cliente Windows,
uso de Data Access A. Blocks,
DataSets tipados
y ...
http://www.desarrolladoras.com - info@desarrolladoras.com
otras yerbas…
Inspirada en la Aplicación Pachacamac de Daniel Seara.
Gracias Daniel por enseñarnos tanto!
En el día de la Tradición…
¿nos darán un mate al menos …?
http://www.desarrolladoras.com - info@desarrolladoras.com
Temas a tratar.... si llegamos a tiempo!
• DataSet tipados
http://www.desarrolladoras.com - info@desarrolladoras.com
….mas temas
• La Clase Entidad y sus derivadas
• Herencia de Formularios
http://www.desarrolladoras.com - info@desarrolladoras.com
La Aplicación
http://www.desarrolladoras.com - info@desarrolladoras.com
Identificando las capas
Usuario Repositorio
de Datos
Aplicación
http://www.desarrolladoras.com - info@desarrolladoras.com
Capas
Cliente
Interfaz gráfica con el Usuario, puede ser Web o Windows
Negocio
Clases cuyos métodos implementan
Reglas de negocio las reglas de negocio globales
Datos
Acceso a repositorios de Datos directo o a través del DAAB
http://www.desarrolladoras.com - info@desarrolladoras.com
Creando la solución y los proyectos
http://www.desarrolladoras.com - info@desarrolladoras.com
Relación entre las capas y los proyectos
APLICACION
Cliente Negocio Datos
ALU
Negocio ALU
NEGOCIO DATOS
ALUMNOS
ALU
DAAB
Cliente GLOBAL
http://www.desarrolladoras.com - info@desarrolladoras.com
Capa
de
Datos
http://www.desarrolladoras.com - info@desarrolladoras.com
DataSets tipados
La difícil tarea de crear
DataSets tipados
en tan solo 4 Pasos...
http://www.desarrolladoras.com - info@desarrolladoras.com
• Agregar un Archivo DataSet.xsd al proyecto
http://www.desarrolladoras.com - info@desarrolladoras.com
1. Agregar una conexión a datos en el Explorador de
Servidores
http://www.desarrolladoras.com - info@desarrolladoras.com
Dos pasos mas
para llegar a tener...
http://www.desarrolladoras.com - info@desarrolladoras.com
1. Agregar la definición de la tabla al DataSet tipado
( drag and drop – arrastrar y soltar )
http://www.desarrolladoras.com - info@desarrolladoras.com
1. Generar la clase (Generar conjunto de datos)
y..... LISTO!!!!!
http://www.desarrolladoras.com - info@desarrolladoras.com
Este es nuestro DataSet tipado
Para facilitarnos...
¡LA VIDA!
http://www.desarrolladoras.com - info@desarrolladoras.com
Escribiendo código
con un
DataSet tipado
http://www.desarrolladoras.com - info@desarrolladoras.com
La definición del dataset ahora será
Tabla o Procedimiento
Almacenado Dim dstCliente As New dsCliente
TCliente
Nombre
del
Tipo del La tabla será dstCliente.TCliente
Campo
Campo
Nombre varchar A los campos de la fila n los
Direccion varchar
llamamos:
Saldo decimal
dstCliente.TCliente(n).Nombre
Clave varbinary dstCliente.TCliente(n).Direccion
Sucursal smallint dstCliente.TCliente(n).Saldo
dstCliente.TCliente(n).Clave
dstCliente.TCliente(n).Sucursal
http://www.desarrolladoras.com - info@desarrolladoras.com
donde antes escribíamos…
ComboBox1.DataSource = dstCliente.Tables( _
“TCliente”)
“TCliente”).Rows(n).Item(0).ToString
ahora podemos a escribir…..
txtnombre.Text = dstCliente.TCliente(n).Nombre
http://www.desarrolladoras.com - info@desarrolladoras.com
¿Donde guardamos la
cadena de conexión?
http://www.desarrolladoras.com - info@desarrolladoras.com
Almacenaremos la cadena de conexión
en el archivo de configuración
de la Aplicación
Al proyecto...
ALUMNOS
http://www.desarrolladoras.com - info@desarrolladoras.com
Agregamos un archivo App.Config
al Proyecto Alumnos (Capa Cliente)
http://www.desarrolladoras.com - info@desarrolladoras.com
Agregamos la clave y el valor de la cadena de
conexión al archivo de configuración
<appSettings>
<add key=“StrConn“
value="server=MiServidor;database=DB
;trusted_connection=true"/>
</appSettings>
http://www.desarrolladoras.com - info@desarrolladoras.com
Así se verá en el Visual Studio nuestro
archivo de configuración
http://www.desarrolladoras.com - info@desarrolladoras.com
Accedemos al valor desde el código
Configuration.ConfigurationSettings.AppSettings( _
“StrConn")
http://www.desarrolladoras.com - info@desarrolladoras.com
Data Access
Application Blocks
http://www.desarrolladoras.com - info@desarrolladoras.com
La clase y los métodos
principales
Clase SqlHelper
Métodos
ExecuteReader
ExecuteNonQuery
ExecuteDataset
FillDataset
http://www.desarrolladoras.com - info@desarrolladoras.com
ExecuteReader
Devuelve un SQLDataReader con el cual accedemos a las filas
ExecuteNonQuery
http://www.desarrolladoras.com - info@desarrolladoras.com
ExecuteDataset
Devuelve un DataSet
FillDataset
Llena de datos un DataSet que le pasamos como argumento, no devuelve
ningún valor
Imports Microsoft.ApplicationBlocks.Data.SqlHelper
...
Dim drCat1 As SqlDataReader
drCat1 = SqlHelper.ExecuteReader( strconn, _
CommandType.StoredProcedure, _
"GetProductsByCategory", _
New SqlParameter("@CategoryID", 1))
...
drCat1.Close()
http://www.desarrolladoras.com - info@desarrolladoras.com
Ejemplos
ExecuteNonQuery
Imports Microsoft.ApplicationBlocks.Data.SqlHelper
http://www.desarrolladoras.com - info@desarrolladoras.com
Ejemplos
ExecuteDataset
Imports Microsoft.ApplicationBlocks.Data.SqlHelper
http://www.desarrolladoras.com - info@desarrolladoras.com
Ejemplos
FillDataset
Imports Microsoft.ApplicationBlocks.Data.SqlHelper
http://www.desarrolladoras.com - info@desarrolladoras.com
Pausa
Mate
Break
http://www.desarrolladoras.com - info@desarrolladoras.com
Escribiendo el código de la
Capa de Datos
• Agregamos una clase al proyecto AluDatos.
• Esta clase va a tener varios métodos compartidos para las
distintas operaciones que necesitemos hacer sobre la Base de
Datos.
TraerDataSet
Actualizar
Borrar
GuardarValor
http://www.desarrolladoras.com - info@desarrolladoras.com
Escribiendo el código de la
Capa de Datos
Public Class CGrlDatos
http://www.desarrolladoras.com - info@desarrolladoras.com
Escribiendo el código de la
Capa Negocio
•Agregamos una Clase CEntidad al proyecto AluNegocio.
•Va a ser la Clase base de la cual vamos a heredar para crear
mas fácilmente las demás.
•Esta Clase va a estar compuesta por:
Declaración de Variables
Un constructor
Propiedades
Métodos
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Declaración de Variables
Constructores
Propiedades
Metodos
End Class
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Variables
#Region "Declaración de Variables“
#End Region
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Constructor
#Region "Constructores"
#End Region
http://www.desarrolladoras.com - info@desarrolladoras.com
C #Region "Propiedades" P
l r
Public Overridable Property Id() As Integer
a Get
o
Return mId
s
e
End Get
p
Set(ByVal Value As Integer)
Try i
C
mId = Value
CGrlDatos.TraerDataset(mTDatos, mNomEnt, mId) e
E If mTDatos.Tables(0).Rows.Count > 0 Then
mDatos = mTDatos.Tables(0).Rows(0) d
n Else
mDatos = mTDatos.Tables(0).NewRow a
t mTDatos.Tables(0).Rows.Add(mDatos)
d
End If
i Catch ex As Exception
e
Throw ex
d
a End Set
End Try
s
End Property
d
#End Region
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Métodos
Public Overridable Function TraerTodos() As DataSet
Try
Return CGrlDatos.TraerDataset(New DataSet, _
mNomEnt, mNomEnt & "_GetAll")
Catch ex As Exception
Throw ex
End Try
End Function
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Métodos
Public Overridable Sub Actualizar()
Try
Dim DatosUno() As Object = _
mTDatos.Tables(0).Rows(0).ItemArray()
If Me.Id <> -1 Then
CGrlDatos.Actualizar(mDatos, mNomEnt & "_Update")
Else
CGrlDatos.ActualizarSal(mDatos, mNomEnt & "_Insert")
Me.Id = DatosUno(0)
End If
Catch ex As Exception
Throw ex
End Try
End Sub
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Métodos
Public Overridable Function Eliminar(ByVal Id As Integer, _
ByVal nomparam As Array) As Integer
Try
Return CGrlDatos.Borrar(nomparam, _
mNomEnt & "_Delete", Id)
Catch ex As Exception
Throw ex
End Try
End Function
http://www.desarrolladoras.com - info@desarrolladoras.com
Escribiendo el código de la
Capa Negocio
• Agregamos una Clase por cada entidad que necesitemos, en
este caso Alumnos, Curso, Asignaturas, Localidades,
Paises, etc... al proyecto AluNegocio.
• Estas Clases van a heredar de la Clase base CEntidad
• Cada una de estas Clases va a estar compuesta por:
Declaración de Variables
Un constructor
Propiedades
Métodos
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CPais
Inherits ALU.AluNegocio.CEntidad
Declaración de Variables
Constructores
Propiedades
Actualización
End Class
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CPais
Variables
#Region "Declaración de Variables“
#End Region
http://www.desarrolladoras.com - info@desarrolladoras.com
#Region "Constructores"
a
Pais = mTodosDatos.Paises.Rows(0) c
End If
i MyBase.mTDatos = mTodosDatos t
MyBase.mDatos = Pais
s Catch ex As Exception o
Throw ex
End Try
r
End Sub
#End Region
http://www.desarrolladoras.com - info@desarrolladoras.com
C #Region "Propiedades" P
l Public Overrides Property Id() As Integer r
a Get
Return MyBase.mId
o
s End Get p
e Set(ByVal Value As Integer) i
MyBase.mId = Value
End Set e
C End Property
d
P Public Property Desc() As String
Get
a
i Return Pais.PaiDesc d
End Get
a Set(ByVal Value As String) e
Pais.PaiDesc = Value
s End Set s
End Property
#End Region
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CPais
Métodos
#Region "Actualización"
#End Region
http://www.desarrolladoras.com - info@desarrolladoras.com
Capa
Cliente
http://www.desarrolladoras.com - info@desarrolladoras.com
Herencia
de
Formularios
http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario Base
• Creamos un Formulario del cual van a heredar la mayoría de los
Formularios de nuestra Aplicación
• Colocamos
P este Formulario en el Proyecto AluGlobal para poder hacer
referencia a él desde el Proyecto Alumnos y cualquier otro Proyecto que
u
agreguemos en la capa Cliente.
b
l
i
• Agregamos a este Formulario todas las cosas que se van a repetir en
todos loscformularios. Icono del Sistema, Nombre de la Empresa, etc...
C
• Generamos
l la solución para que se genere el Assembly y así poder
heredarloa
s
s
http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario Heredado
Agregamos un Formulario que va a heredar todas las
características de nuestro Formulario Base
http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario Heredado
http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario Heredado
http://www.desarrolladoras.com - info@desarrolladoras.com
Armado de un Formulario
estilo
“Outlook Express”
http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario estilo
“Outlook Express”
Es fácil!!!
Son sólo 10 pasos
http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario estilo “Outlook Express”
http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario estilo “Outlook Express”
http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario estilo “Outlook Express”
http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles
ImageList
Propiedades
http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles
TreeView
Propiedades
http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles
TreeView
Propiedades
http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles
TreeView
Métodos
http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles
TreeView
Eventos
http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles
ListView
Propiedades
http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles
ListView
Propiedades
http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles
ListView
Eventos
http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles
Splitter
Eventos
http://www.desarrolladoras.com - info@desarrolladoras.com
Links útiles:
Universidad.Net:
Universidad.Net
http://www.microsoft.com/spanish/msdn/comunidad/uni.net/
Sitio de Microsoft dedicado a .Net Windows Forms:
http://www.windowsforms.net
Data Access Aplication Blocks:
http://msdn.microsoft.com/library/en-us/dnbda/html/daab-
rm.asp?frame=true
http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=c20d12b0-
af52-402b-9b7c-aaeb21d1f431
Desarrollador Cinco Estrellas:
http://www.microsoft.com/spanish/msdn/comunidad/dce/default.asp
PanoramaBox: http://www.panoramabox.com/
http://www.desarrolladoras.com - info@desarrolladoras.com
http://www.desarrolladoras.com - info@desarrolladoras.com
Muchas Gracias
desarrolladoras
www.desarrolladoras.com
http://www.desarrolladoras.com - info@desarrolladoras.com
Clases Instanciadas
versus
Clases Compartidas
http://www.desarrolladoras.com - info@desarrolladoras.com
Clases Compartidas
• Las clases NO pueden ser compartidas. Sus métodos,
propiedades y variables SI pueden serlo
• Para que un Método, Propiedad y/o Variable sean
compartidos debemos calificarlos con la palabra reservada
SHARED
• Un Método, Propiedad y/o Variable compartidos pueden ser
usados en cualquier parte del código sin necesidad de crear un
nuevo objeto, haciendo referencia al mismo a través del
nombre de la clase. Ej: MiClase.MiMetodo()
http://www.desarrolladoras.com - info@desarrolladoras.com
Clases Compartidas
Public Class MiClase
End Class
http://www.desarrolladoras.com - info@desarrolladoras.com
Clases Instanciadas
http://www.desarrolladoras.com - info@desarrolladoras.com
Clases Instanciadas
Public Class MiClase
End Class
http://www.desarrolladoras.com - info@desarrolladoras.com