capa negocio con clases en vb

31
Capa Negocio Usando clases en VB Jesús Alejandro Flores Hernández 1

Upload: unacar

Post on 04-Jul-2015

2.373 views

Category:

Education


6 download

DESCRIPTION

Programación de la capa de negocio con clases en VB

TRANSCRIPT

Page 1: Capa negocio con clases en VB

Capa NegocioUsando clases en VB

Jesús Alejandro Flores Hernández

1

Page 2: Capa negocio con clases en VB

IntroducciónEsta presentación muestra un ejemplo de codificación de la capa de negocio en Visual

Basic, conectando con procedimientos almacenados en MySql.

Objetivo. Programar la capa de negocio para la aplicación ProvPar

Materias: Programación avanzada, Bases de datos

Requerimientos

1. Tener la base de datos provPar en MySql (ver

http://es.slideshare.net/ltidesdaci/procedimientosalmacenados)

2. Tener definidos los SP para insertar y consultar a porvPar (ver

http://es.slideshare.net/ltidesdaci/capadatosconprocedimientosalmacenados)

3. Tener instalado el Sharp Develop (ver http://www.icsharpcode.net/opensource/sd/)

4. Tener instalado el controlador de MySql para NET (ver

http://es.slideshare.net/ltidesdaci/instalardrivernetparamysql)

2

Page 3: Capa negocio con clases en VB

Pasos para programar la capa de negocio

Los pasos para programar nuestra capa de negocio son:

Paso 1 Tener una narrativa que describa el problema

Paso 2 Diseñar las clases del sistema a partir de la narrativa

Paso 3 Tener programada la capa de datos del sistema (en este caso con

procedimientos almacenados en MySql)

Paso 4 Codificar la Capa de negocio.

3

Page 4: Capa negocio con clases en VB

Paso 1 Crear una aplicación para VB

en Sharp Develop

Suponga que se tiene una descripción de un problema ( aquí un extracto):

La empresa PROVPAR.S.A. Dedicada a la venta de refacciones desea llevar elcontrol de su información para los proveedores, partes, pedidos y notas deventa, para esto la empresa cuenta con una agenda de proveedores en dondeguarda el rfc, nombre, teléfono, dirección, e-mail y calificación delproveedor, donde calificación es un número del 1 al 10 con el que nuestraempresa califica el servicio prestado por el proveedor, si una empresa tiene unservicio excelente tendrá una calificación de 10 y si es pésimo será de 0. Laempresa también cuenta con una lista de partes donde almacena unaclave, nombre, existencia, stock mínimo, stock máximo, peso, cc y cv, donde stockmínimo es la cantidad mínima de este artículo que la empresa requiere enexistencia es decir su existencia en almacén no debe bajar de estacantidad, stock máximo es la cantidad máxima de artículos o partes que puedealmacenar la empresa en su almacén, peso es el peso de la parte en kg y será unnúmero entero, ...

4

Page 5: Capa negocio con clases en VB

Paso 2 A partir de ahí se diseñaron las clases en UML5

Page 6: Capa negocio con clases en VB

Métodos

Siguiendo el ejemplo se asocia la funcionalidad (métodos) a las clases, aquí

se muestran algunos que usaremos en este material:

Métodos clsAlmacen

insertaParte(p as clsParte)

Métodos clsListaPedidos

traePedidos

6

Page 7: Capa negocio con clases en VB

Paso 3 En la capa de datos se tiene

En MySql se tienen los procedimientos almacenados:

spAltaParte

spPedidos

7

Page 8: Capa negocio con clases en VB

En la capa de datos se tiene el spPedidos8

spPedidos con el parámetro de

entrada opción y devuelve la lista

de pedidos según la opción

1 Todos

2 Todos con nombre de proveedor y

descripción de parte, etcétera

Page 9: Capa negocio con clases en VB

Y además tiene el spAltaParte9

El spAltaparte tiene 7 parámetros los

primeros 6 (que se muestran aquí)

corresponden a los valores de los

campos a insertar y el séptimo es

una parámetro de salida (llamado

miSalida) donde se almacenará un

letrero que indica si se realizó

correctamente la inserción.

Page 10: Capa negocio con clases en VB

Resumen paso 1,2 y 3

Por lo tanto se tiene una narrativa, un diseño de clases y una capa de datos

con procedimientos almacenados en MySql llamados:

spAltaParte

spPedidos

A continuación la capa de negocio.

10

Page 11: Capa negocio con clases en VB

Paso 4 Capa de negocio

En esta capa se programa las reglas pertinentes a la aplicación particular, en nuestro caso aesta capa corresponde ejecutar las solicitudes de acceso a la información de la base dedatos, solicitada por la capa de presentación (formularios). Para este ejemplo la capa dereglas del negocio corresponde a las clases en UML:

AgendaProveedores

Almacen

ListaPedidos

ListaNotaVenta

Pedido

Proveedor

Parte

NotaVenta

11

Page 12: Capa negocio con clases en VB

Clase clsParte12

Page 13: Capa negocio con clases en VB

Clase clsAlmacen13

Page 14: Capa negocio con clases en VB

Clase clsListaPedidos14

Page 15: Capa negocio con clases en VB

Y para conexión a la BD15

Se tiene la clase clsDBMySql con

los atributos que se muestran aquí

y los métodos que se muestran en

las siguiente diapositiva.

Page 16: Capa negocio con clases en VB

16

Métodos de la clase clsDBMySql

Page 17: Capa negocio con clases en VB

Explicación

La clase clsBdMySql sirve para realizar la conexión a la base de datos, tiene los atributos:

Dim cadCon as String="server=localhost;user id=root; password=; database=provpar;

pooling=false"

Dim conn As MySqlConnection

Dim da As MySqlDataAdapter

Dim comando As MySqlCommand = nothing

Dim miError As String=""

Dim ps as Object

17

Page 18: Capa negocio con clases en VB

Explicación clase clsBdMySql - atributos

La clase clsBdMySql sirve para realizar la conexión a la base de datos, tiene los atributos:

Dim cadCon as String="server=localhost;user id=root; password=; database=provpar;

pooling=false"

Dim conn As MySqlConnection

Dim comando As MySqlCommand = nothing

cadCon contiene la cadena de conexión para conectarse a un servidor local de MySql a labase de datos provpar.

Conn en el objeto conexión que realizará el enlace a partir de la cadena de conexión.

Comando en el objeto que permitirá ejecutar los procedimientos almacenados.

18

Page 19: Capa negocio con clases en VB

Explicación clase clsBdMySql - métodos

La clase clsBdMySql tiene el método:

Public Sub defineSP(miSp As String )

conn = New MySqlConnection(cadCon)

comando = New MySqlCommand(miSP, conn)

comando.CommandType = CommandType.StoredProcedure

End sub

Esté método crea una conexión utilizando la cadena definida en cadCon, crea un nuevo comando

con la conexión creada y el nombre del procedimiento almacenado que le enviaron en el

parámetro miSP, indica que lo que ejecutará es un procedimiento almacenado y listo, aun no lo

ejecuta nada solo define el comando.

19

Page 20: Capa negocio con clases en VB

Explicación clase clsBdMySql - métodosLa clase clsBdMySql tiene el método:

Public Function agregaParametro_IN(miParametro as String, miTipo as MySql.Data.MySqlClient.MySqlDbType, miValor as String) As Boolean

If isnothing(Me.comando ) Then

return false

End If

'si ya esta definido el comando

Dim p As New MySqlParameter("?" & miParametro, miTipo) 'MySql.Data.MySqlClient.MySqlDbType.VarChar)

p.Value = miValor

p.Direction = ParameterDirection.Input

comando.Parameters.Add(p)

return true

End Function

Esté método permite agregar al procedimiento almacenado un parámetro de entrada (Input), unparámetro de entrada sirve para enviarle datos al SP. El SP debe estar previamente definido en elobjeto comando, el nombre del parámetro se envía en el parámetro miParametro, su tipo en miTipo ysu contenido en miValor. A partir de estos datos agrega este parámetro al SP.

20

Page 21: Capa negocio con clases en VB

Explicación clase clsBdMySql - métodos

La clase clsBdMySql tiene el método:

Public Function agregaParametro_OUT(miParametro as String ) As Boolean

If isnothing(Me.comando ) Then

return false

End If

'si ya esta definido el comando

ps = New MySqlParameter("?" & miParametro, MySql.Data.MySqlClient.MySqlDbType.VarChar)

ps.Value = ""

ps.Direction = ParameterDirection.InputOutput

comando.Parameters.Add(ps)

return true

End Function

Esté método permite agregar un parámetro de salida al SP que servirá para recibir una repuesta de

como se ejecute el procedimiento almacenado.

21

Page 22: Capa negocio con clases en VB

Explicación clase clsBdMySql - métodos

„Finalmente la clase clsBdMySql tiene el método:

Public Function ejecutaSP( ) As String

If isnothing(Me.comando ) Then

return "No se ha definido el SP"

End If

'conectar a mysql

conn.Open()

comando.ExecuteNonQuery

conn.Close()

Return ps.Value

End Function

Esté método permite ejecutar el SP previamente definido y devolver el valor de su parámetro de salida.

22

Page 23: Capa negocio con clases en VB

Explicación capa de negocio

A continuación la explicación del código de la capa de negocio

23

Page 24: Capa negocio con clases en VB

Clase clsAlmacen – método insertaParte

„Y el método de la clase clsAlmacen:

Public Function insertaParte (miP as clsParte ) As String

Dim respuesta As String=""

Dim objdb As New clsDBMySql

objdb.defineSP("spAltaParte")

objdb.agregaParametro_IN("miID",MySql.Data.MySqlClient.MySqlDbType.VarChar,mip.id)

objdb.agregaParametro_IN("miDescripcion",MySql.Data.MySqlClient.MySqlDbType.VarChar,mip.descripcion)

objdb.agregaParametro_IN("miPeso",MySql.Data.MySqlClient.MySqlDbType.Int32,mip.peso)

objdb.agregaParametro_IN("miColor",MySql.Data.MySqlClient.MySqlDbType.VarChar,mip.color)

objdb.agregaParametro_IN("miCU",MySql.Data.MySqlClient.MySqlDbType.Double ,mip.CU)

objdb.agregaParametro_IN("miExistencia",MySql.Data.MySqlClient.MySqlDbType.Int32 ,mip.existencia)

objdb.agregaParametro_OUT("miSalida")

respuesta= objdb.ejecutaSP()

return respuesta

End Function

24

Crea un objeto de la clase clsDBMySql (1) define el

procedimiento almacenado “spAltaParte” (2), le agrega

los parámetros que contienen los datos a insertar y un

parámetro de salida (3) y ejecuta el procedimiento alta

parte (4), finalmente devuelve la respuesta que dio el SP.

1

2

3

4

Page 25: Capa negocio con clases en VB

Clase clsListaPedidos– método traePedidos

„El método de la clase clsListaPedidos:

Public Function traePedidos As Data.DataTable

Dim t As New Data.DataTable

Dim objdb As New clsDBMySql

Dim sql As String="call spPedidos(1)"

t=objdb.traeTabla(sql)

return t

End Function

25

Ejecuta el procedimiento almacenado “spPedidos”

este llamado es mas fácil por que el procedimiento

almacenado no tiene parámetros que dependan de

los valores del usuario, solo el parámetro (1) que

indica el tipo de consulta que se desea (ver la

definición del SP).

Page 26: Capa negocio con clases en VB

Capa de presentación

Finalmente estamos listos para; desde la capa de presentación llamar a la

capa de negocio para que se realicen las operaciones de acceso a la base

de datos.

26

Page 27: Capa negocio con clases en VB

Capa de presentación – insertar parte27

Para dar de alta podemos tener un

formulario con sus campos de texto y su

botón agregar.

Page 28: Capa negocio con clases en VB

Código del evento clic del botón28

El evento clic del botón agregar sería:

Sub BtnAltaClick(sender As Object, e As EventArgs)

Dim miParte As New clsParte

'recuperar los datos desde los controles de interfaz

miParte.id=Me.txtID.Text

miParte.descripcion=Me.txtDescripcion.Text

miParte.color=Me.txtColor.Text

miParte.CU=iif(isnumeric(me.txtCU.Text),me.txtCU.Text ,0)

miParte.Peso=iif(isnumeric(Me.txtPeso.Text),Me.txtPeso.Text ,0)

miParte.Existencia=iif(isnumeric(me.txtExistencia.Text),me.txtExistencia.Text ,0)

'

Dim miAlmacen As New clsAlmacen

'insertar el dato en el almacen

Dim s As String= miAlmacen.insertaParte(miParte)

Me.lblLetrero.Text=s

me.limpiaTexto()

End Sub

El evento clic del botón tendría el código:

obtiene los datos de los controles y los

almacena en un objeto del tipo clsParte

(1), Crea un objeto del tipo clsAlmacen (2),

ejecuta el método insertaParte del objeto

de la clase clsAlmacen (3).

1

2

3

Page 29: Capa negocio con clases en VB

Capa de presentación – consulta datos29

Suponga que para mostrar los datos de todos los pedidos tiene un formulario

con un control del tipo DataGridView llamado dgvDatos, el código del evento

Load del formulario podría quedar así:

Sub frmMostrarPartesLoad(sender As Object, e As EventArgs)

Dim a As New clsListapedidos

Me.dgvDatos.DataSource = a.traePedidos()

End Sub

Page 30: Capa negocio con clases en VB

Resumen

La capa de interfaz solo contiene los controles y el código que tienen que ver conla presentación de los datos como colores formatos etcétera, esta capa depresentación o interfaz toma los datos de los controles introducidos por el usuariolos almacena en algún objeto y solicita a la capa de negocio introducirlos comoen la diapositiva 24. La capa de negocio a su vez recibe los datos y solicita lainserción a la capa de datos por medio de la ejecución de procedimientosalmacenados. De forma similar cuando se requieren consultas como en ladispositiva 29, la capa de interfaz solicita los datos a la capa de negocio y esta asu vez a la capa de datos.

Trabajar de esta manera ahorra mucho tiempo en el mantenimiento, por ejemplose puede modificar toda la interfaz sin tocar las otras capas. O se puedenmodificar los métodos de la capa de negocio solo teniendo el cuidado derespetar los nombres y parámetros de los métodos. Se pueden optimizar losprocedimientos almacenados sin tocar nada de la codificación de la aplicación.

30

Page 31: Capa negocio con clases en VB

Fin

http://www.elguille.info/colabora/2007/gatonegro_parametros_MySQL.htm

http://dev.mysql.com/doc/refman/5.0/es/stored-procedure-syntax.html

http://dev.mysql.com/doc/refman/5.0/es/stored-procedures.html

http://es.slideshare.net/ltidesdaci/procedimientosalmacenados

http://fcocastan.wordpress.com/2010/12/29/procedimiento-almacenado-y-

estructuras-de-control-en-mysql-while-if-then-else-switch/

http://es.slideshare.net/ltidesdaci/instalaciondmysqlwamp-y-heidisql

31