vb. net y sql server - arquitectura tres capas

26
Ing. Hobby Saavedra Rosas VB.NET Y SQL SERVER APLICACIÓN VB.NET Y SQL SERVER ARQUITECTURA TRES CAPAS 1. Desarrollar una aplicación en VB.NET y Ms SQL Server, basada en la arquitectura tres capas, para la siguiente base de datos de nombre pedidos: Se le pide lo siguiente: 1. Formulario Mantenimiento de Categorías (Reportar, Insertar, Actualizar y Eliminar) 2. Búsqueda por código, nombre y precio 3. Formulario Mantenimiento de Productos(Reportar, Insertar, Actualizar y Eliminar) 4. Búsqueda por Nombre de categoría Ayuda: Crear para cada tabla una clase: Primeramente empezamos con la creación de la base de datos y nuestros procedimientos almacenados: Procedimientos para generar los códigos de los nuevos registros.

Upload: hobby-s

Post on 18-Dec-2014

6.394 views

Category:

Education


28 download

DESCRIPTION

 

TRANSCRIPT

Page 1: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

APLICACIÓN VB.NET Y SQL SERVER ARQUITECTURA TRES CAPAS

1. Desarrollar una aplicación en VB.NET y Ms SQL Server, basada en la arquitectura

tres capas, para la siguiente base de datos de nombre pedidos:

Se le pide lo siguiente:

1. Formulario Mantenimiento de Categorías (Reportar, Insertar, Actualizar y

Eliminar)

2. Búsqueda por código, nombre y precio

3. Formulario Mantenimiento de Productos(Reportar, Insertar, Actualizar y

Eliminar)

4. Búsqueda por Nombre de categoría

Ayuda:

Crear para cada tabla una clase:

Primeramente empezamos con la creación de la base de datos y nuestros

procedimientos almacenados:

Procedimientos para generar los códigos de los nuevos registros.

Page 2: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Procedimientos para insertar tanto productos como categorías.

Procedimientos almacenados para actualizar productos y categorías

Page 3: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Procedimientos almacenados para listar productos y categorías

Procedimientos almacenados para buscar productos y categorías

Procedimiento almacenado para llenar el ComboBox categoría

Claro siempre y cuando desee recuperar solo algunos registros o en todo caso

usar el listar categorías:

Biblioteca Entidades

1. Clase Categoría

Public Class Categoria Private midCategoria As Integer Private mNombreCategoria As String Private mDescripcionCategoria As String Public Sub New() End Sub Public Sub New(ByVal nombrecate As String) mNombreCategoria = nombrecate

Page 4: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

End Sub Public Property idCategoria() As Integer Get Return midCategoria End Get Set(ByVal value As Integer) midCategoria = value End Set End Property Public Property NombreCategoria() As String Get Return mNombreCategoria End Get Set(ByVal value As String) mNombreCategoria = value End Set End Property Public Property DescripcionCategoria() As String Get Return mDescripcionCategoria End Get Set(ByVal value As String) mDescripcionCategoria = value End Set End Property End Class

2. Clase Producto

Public Class Producto Private midproducto As Integer Private mDescripcion As String Private mprecio As Decimal Private midCategorias As String Private mStock As String Public Property idProducto() As Integer Get Return midproducto End Get Set(ByVal value As Integer) midproducto = value End Set End Property Public Property DescripcionProducto() As String Get Return mDescripcion End Get Set(ByVal value As String) mDescripcion = value End Set End Property Public Property PrecioProducto() As Decimal Get Return mprecio End Get Set(ByVal value As Decimal)

Page 5: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

mprecio = value End Set End Property Public Property StockProducto() As String Get Return mStock End Get Set(ByVal value As String) mStock = value End Set End Property Public Property idCategoriaProducto() As String Get Return midCategorias End Get Set(ByVal value As String) midCategorias = value End Set End Property End Class

Biblioteca Datos

Clase: ProductoDAO

Imports Conexion Imports Entidades Imports System.Data Imports System.Data.SqlClient Public Class ProductoDAO Public daProducto As SqlDataAdapter Public cmdProducto As New SqlCommand Public dsProducto As DataSet Public drProducto As SqlDataReader Dim objConexion As New conexionbd Public Function AgregarProducto(ByVal objProductoE As Producto) As String Dim mensaje As String cmdProducto.CommandType = CommandType.StoredProcedure cmdProducto.CommandText = "sp_insertar_producto" cmdProducto.Connection = objConexion.obtenerconexion If objConexion.obtenerconexion.State = ConnectionState.Open Then objConexion.obtenerconexion.Close() Else objConexion.obtenerconexion.Open() End If With cmdProducto.Parameters .Add("@idProducto", SqlDbType.Int).Value = objProductoE.idProducto .Add("@descripcion", SqlDbType.VarChar).Value = objProductoE.DescripcionProducto .Add("@precio", SqlDbType.Decimal).Value = objProductoE.PrecioProducto .Add("@stock", SqlDbType.Int).Value = objProductoE.StockProducto .Add("@idcategoria", SqlDbType.Int).Value = CInt(objProductoE.idCategoriaProducto) End With Dim registros As Integer registros = cmdProducto.ExecuteNonQuery() If registros = 1 Then mensaje = "Registro guardado correctamente" Return mensaje Else mensaje = "Error en la transaccion" Return mensaje End If

Page 6: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

cmdProducto.Parameters.Clear() objConexion.obtenerconexion.Close() End Function Public Function ActualizarProductos(ByVal objProductoE As Producto) As String Dim mensaje As String cmdProducto.CommandType = CommandType.StoredProcedure 'Nombre procedimiento almacenado cmdProducto.CommandText = "SP_Actualizar_Producto" 'obtener la conexion con la base de datos cmdProducto.Connection = objConexion.obtenerconexion 'Verificar el estado de la conexión If objConexion.obtenerconexion.State = ConnectionState.Open Then objConexion.obtenerconexion.Close() Else objConexion.obtenerconexion.Open() End If 'Creamos los parámetros 'Todos los atributos de la tabla Producto With cmdProducto.Parameters 'Obtenemos el IdProducto, usando el objProductoE .Add("@idProducto", SqlDbType.Int).Value = objProductoE.idProducto .Add("@descripcion", SqlDbType.VarChar).Value = objProductoE.DescripcionProducto .Add("@precio", SqlDbType.Decimal).Value = objProductoE.PrecioProducto .Add("@stock", SqlDbType.Int).Value = objProductoE.StockProducto .Add("@idcategoria", SqlDbType.Int).Value = CInt(objProductoE.idCategoriaProducto) End With Dim registros As Integer registros = cmdProducto.ExecuteNonQuery() If registros = 1 Then mensaje = "Registro Actualizado correctamente" Return mensaje Else mensaje = "Error en la transaccion" Return mensaje End If cmdProducto.Parameters.Clear() objConexion.obtenerconexion.Close() End Function Public Function listarProductos() As List(Of Producto) Dim lista As New List(Of Producto) Dim lector As SqlDataReader Dim objProducto As Producto cmdProducto = New SqlCommand("SP_Listar_Producto", objConexion.obtenerconexion) lector = cmdProducto.ExecuteReader While lector.Read objProducto = New Producto objProducto.IdProducto = lector(0) objProducto.DescripcionProducto = lector(1) objProducto.PrecioProducto = lector(2) objProducto.StockProducto = lector(3) Dim objeCategoria = New Categoria(lector(4)) objProducto.idCategoriaProducto = objeCategoria.NombreCategoria 'objProducto.idCategoriaProducto = lector(4) lista.Add(objProducto) End While Return lista End Function Public Function listarProducto(ByVal codigo As Integer) As Producto Dim lista As New List(Of Producto) Dim lector As SqlDataReader Dim objProducto As Producto

Page 7: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

objProducto = New Producto Dim objProducto1 As New Producto cmdProducto.CommandType = CommandType.StoredProcedure 'Nombre procedimiento almacenado cmdProducto.CommandText = "Sp_BuscarProducto" 'obtener la conexion con la base de datos cmdProducto.Connection = objConexion.obtenerconexion 'Verificar el estado de la conexión 'cmdProducto = New SqlCommand("Sp_BuscarProducto", objConexion.obtenerconexion) With cmdProducto.Parameters 'Obtenemos el IdProducto, usando el objProductoE .Add("@codigo", SqlDbType.Int).Value = codigo End With If objConexion.obtenerconexion.State = ConnectionState.Open Then objConexion.obtenerconexion.Close() Else objConexion.obtenerconexion.Open() End If lector = cmdProducto.ExecuteReader 'objProducto = New Producto If lector.Read Then objProducto.idProducto = lector(0) objProducto.DescripcionProducto = lector(1) objProducto.PrecioProducto = lector(2) objProducto.StockProducto = lector(3) Dim objeCategoria = New Categoria(lector(4)) objProducto.idCategoriaProducto = objeCategoria.NombreCategoria End If Return objProducto End Function Public Function codProducto() As Integer Dim codigo As Integer Dim lector As SqlDataReader cmdProducto = New SqlCommand("SP_Generar_Codigo_Producto", objConexion.obtenerconexion) lector = cmdProducto.ExecuteReader If lector.Read Then codigo = lector(0) End If Return codigo End Function End Class

Clase: CategoriaDAO

Imports Conexion Imports Entidades Imports System.Data Imports System.Data.SqlClient Public Class CategoriaDAO Public daCategoria As SqlDataAdapter Public cmdCategoria As New SqlCommand Public dsCategoria As DataSet Public drCategoria As SqlDataReader 'Dim conn As New SqlConnection("Data Source=.;Initial Catalog=SistemaFacturacion;Integrated Security=True") Dim objConexion As New conexionbd Public Function AgregarCategoria(ByVal objCategoriaE As Categoria) As String Dim mensaje As String cmdCategoria.CommandType = CommandType.StoredProcedure cmdCategoria.CommandText = "SP_Inserta_Categoria"

Page 8: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

cmdCategoria.Connection = objConexion.obtenerconexion If objConexion.obtenerconexion.State = ConnectionState.Open Then objConexion.obtenerconexion.Close() Else objConexion.obtenerconexion.Open() End If With cmdCategoria.Parameters .Add("@idCategoria", SqlDbType.Int).Value = objCategoriaE.idCategoria .Add("@nombre", SqlDbType.VarChar).Value = objCategoriaE.NombreCategoria .Add("@descripcion", SqlDbType.VarChar).Value = objCategoriaE.DescripcionCategoria End With Dim registros As Integer registros = cmdCategoria.ExecuteNonQuery() If registros = 1 Then mensaje = "Registro guardado correctamente" Return mensaje Else mensaje = "Error en la transaccion" Return mensaje End If cmdCategoria.Parameters.Clear() objConexion.obtenerconexion.Close() End Function Public Function ActualizarCategorias(ByVal objCategoriaE As Categoria) As String Dim mensaje As String cmdCategoria.CommandType = CommandType.StoredProcedure cmdCategoria.CommandText = "SP_Actualizar_Categoria" cmdCategoria.Connection = objConexion.obtenerconexion If objConexion.obtenerconexion.State = ConnectionState.Open Then objConexion.obtenerconexion.Close() Else objConexion.obtenerconexion.Open() End If 'cmdCliente.Connection = With cmdCategoria.Parameters .Add("@idCategoria", SqlDbType.Int).Value = objCategoriaE.idCategoria .Add("@nombre", SqlDbType.VarChar).Value = objCategoriaE.NombreCategoria .Add("@descripcion", SqlDbType.VarChar).Value = objCategoriaE.DescripcionCategoria End With Dim registros As Integer registros = cmdCategoria.ExecuteNonQuery() If registros = 1 Then mensaje = "Registro Actualizado correctamente" Return mensaje Else mensaje = "Error en la transaccion" Return mensaje End If cmdCategoria.Parameters.Clear() objConexion.obtenerconexion.Close() End Function Public Function listarCategorias() As List(Of Categoria) Dim lista As New List(Of Categoria) Dim lector As SqlDataReader Dim objCategoria As Categoria cmdCategoria = New SqlCommand("SP_Listar_Categoria", objConexion.obtenerconexion)

Page 9: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

lector = cmdCategoria.ExecuteReader While lector.Read objCategoria = New Categoria objCategoria.idCategoria = lector(0) objCategoria.NombreCategoria = lector(1) objCategoria.DescripcionCategoria = lector(2) lista.Add(objCategoria) End While Return lista End Function Public Function listarCategoria(ByVal codigo As Integer) As Categoria Dim lista As New List(Of Categoria) Dim lector As SqlDataReader Dim objCategoria As Categoria objCategoria = New Categoria Dim objCategoria1 As New Producto cmdCategoria.CommandType = CommandType.StoredProcedure 'Nombre procedimiento almacenado cmdCategoria.CommandText = "Sp_Buscar_Categoria" 'obtener la conexion con la base de datos cmdCategoria.Connection = objConexion.obtenerconexion 'Verificar el estado de la conexión 'cmdProducto = New SqlCommand("Sp_BuscarProducto", objConexion.obtenerconexion) With cmdCategoria.Parameters 'Obtenemos el IdProducto, usando el objProductoE .Add("@idCategoria", SqlDbType.Int).Value = codigo End With If objConexion.obtenerconexion.State = ConnectionState.Open Then objConexion.obtenerconexion.Close() Else objConexion.obtenerconexion.Open() End If lector = cmdCategoria.ExecuteReader 'objProducto = New Producto If lector.Read Then objCategoria.idCategoria = lector(0) objCategoria.NombreCategoria = lector(1) objCategoria.DescripcionCategoria = lector(2) End If Return objCategoria End Function Public Function buscarCodxNombre(ByVal nombre As String) As Categoria Dim lista As New List(Of Categoria) Dim lector As SqlDataReader Dim objCategoria As Categoria objCategoria = New Categoria cmdCategoria.CommandType = CommandType.StoredProcedure 'Nombre procedimiento almacenado cmdCategoria.CommandText = "sp_categoria_buscaridxnombre" 'obtener la conexion con la base de datos cmdCategoria.Connection = objConexion.obtenerconexion 'Verificar el estado de la conexión 'cmdProducto = New SqlCommand("Sp_BuscarProducto", objConexion.obtenerconexion) With cmdCategoria.Parameters 'Obtenemos el IdProducto, usando el objProductoE .Add("@nombre", SqlDbType.VarChar).Value = nombre End With If objConexion.obtenerconexion.State = ConnectionState.Open Then objConexion.obtenerconexion.Close() Else

Page 10: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

objConexion.obtenerconexion.Open() End If lector = cmdCategoria.ExecuteReader 'objProducto = New Producto If lector.Read Then objCategoria.idCategoria = lector(0) objCategoria.NombreCategoria = lector(1) objCategoria.DescripcionCategoria = lector(2) End If Return objCategoria End Function Public Function llenarComboCategoria() As Categoria Dim lista As New List(Of Categoria) Dim lector As SqlDataReader Dim objCategoria As Categoria objCategoria = New Categoria cmdCategoria = New SqlCommand("sp_combo_categoria", objConexion.obtenerconexion) If objConexion.obtenerconexion.State = ConnectionState.Open Then objConexion.obtenerconexion.Close() Else objConexion.obtenerconexion.Open() End If lector = cmdCategoria.ExecuteReader If lector.Read Then objCategoria.idCategoria = lector(0) objCategoria.NombreCategoria = lector(1) End If Return objCategoria End Function Public Function codCategoria() As Integer Dim codigo As Integer Dim lector As SqlDataReader cmdCategoria = New SqlCommand("SP_Generar_Codigo_Categoria", objConexion.obtenerconexion) lector = cmdCategoria.ExecuteReader If lector.Read Then codigo = lector(0) End If Return codigo End Function End Class

Biblioteca Negocio

Clase: ProductoNE

Imports Datos Imports Entidades Public Class ProductoNE Private objProductoDAO As ProductoDAO Public Sub New() objProductoDAO = New ProductoDAO End Sub Public Function AgregarProducto(ByVal objProductoE As Producto) As String Return objProductoDAO.AgregarProducto(objProductoE) End Function Public Function ActualizarProducto(ByVal objProductoE As Producto) As String Return objProductoDAO.ActualizarProductos(objProductoE) End Function Public Function CodProducto() As Integer

Page 11: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Return objProductoDAO.codProducto() End Function Public Function listarProductos() As List(Of Producto) Return objProductoDAO.listarProductos End Function Public Function listarProducto(ByVal codigo As Integer) As Producto Return objProductoDAO.listarProducto(codigo) End Function Public Function llenarComboProducto() As Producto Return objProductoDAO.llenarComboProducto End Function End Class

Clase: CategoriaNE

Imports Datos Imports Entidades Public Class CategoriaNE Private objCategoriaDAO As CategoriaDAO Public Sub New() objCategoriaDAO = New CategoriaDAO End Sub Public Function AgregarCategoria(ByVal objCategoriaE As Categoria) As String Return objCategoriaDAO.AgregarCategoria(objCategoriaE) End Function Public Function ActualizarCategoria(ByVal objCategoriaE As Categoria) As String Return objCategoriaDAO.ActualizarCategorias(objCategoriaE) End Function Public Function listarCategorias() As List(Of Categoria) Return objCategoriaDAO.listarCategorias End Function Public Function listarCategoria(ByVal codigo As Integer) As Categoria Return objCategoriaDAO.listarCategoria(codigo) End Function Public Function buscarCodxNombre(ByVal nombre As String) As Categoria Return objCategoriaDAO.buscarCodxNombre(nombre) End Function Public Function CodCategoria() As Integer Return objCategoriaDAO.codCategoria() End Function End Class

Biblioteca Conexión

Clase:conexionbd

Imports System.Data Imports System.Data.SqlClient Public Class conexionbd Public cadena As String = "Data Source=.;Initial Catalog=BDEXA_TALLER_PRO;Integrated Security=True" Public conexion As SqlConnection Public Function obtenerconexion() As SqlConnection conexion = New SqlConnection(cadena) conexion.Open() Return conexion End Function

Page 12: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Public Function AbrirConexion() As SqlConnection Dim con As SqlConnection con = New SqlConnection(cadena) con.Open() Return con End Function Public Function CerrarConexion() As SqlConnection Dim con As SqlConnection con = New SqlConnection(cadena) If con.State = ConnectionState.Open Then con.Close() End If con.Close() Return con End Function End Class

Capa Presentación

Menú Principal:

Formularios:

FrmProducto

Page 13: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

FrmCategoria

Código fuente de la aplicación

Formulario FrmProducto

Imports Entidades Imports Negocio Public Class FrmProducto Dim objCategoria As List(Of Categoria) Dim objCategoriaNE As CategoriaNE Dim objProductoNE As New ProductoNE Private Sub FrmProducto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim objProductoNE1 As ProductoNE objProductoNE1 = New ProductoNE dgvProducto.DataSource = objProductoNE1.listarProductos ConfigurarDataGrid() BuscarProductos(1) cargarCategorias() HabilitarCajas(False) habilitarBotones(True, False, False, False) End Sub Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click cargarCategorias() Me.txtcodigo.Text = objProductoNE.CodProducto limpiar_cajas() End Sub Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click Nuevo_Producto() End Sub

Page 14: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click actualizarProductos() End Sub Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click cancelar_producto() cargarCategorias() End Sub Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click Dim objProductoNE As ProductoNE objProductoNE = New ProductoNE Dim objProductoE As New Producto Dim codigo As Integer = CInt(InputBox("Ingrese Código Producto")) BuscarProductos(codigo) End Sub Sub cargarCategorias() Dim producto1 As New Producto objCategoria = New List(Of Categoria) objCategoriaNE = New CategoriaNE objCategoria = objCategoriaNE.listarCategorias cboCategoria.DataSource = Nothing cboCategoria.DataSource = objCategoria cboCategoria.DisplayMember = "NombreCategoria" cboCategoria.ValueMember = "idCategoria" End Sub Sub limpiar_cajas() HabilitarCajas(True) LimpiarCajas() habilitarBotones(False, True, False, True) Dim objProductoNE = New ProductoNE Me.txtcodigo.Text = objProductoNE.CodProducto() End Sub Sub Nuevo_Producto() Dim objProductoE = New Producto Dim objProductoNE = New ProductoNE objProductoE.idProducto = CInt(txtcodigo.Text) objProductoE.DescripcionProducto = txtDescripcion.Text objProductoE.PrecioProducto = txtprecio.Text objProductoE.idCategoriaProducto = cboCategoria.SelectedValue objProductoE.StockProducto = txtStock.Text Dim salida As String = objProductoNE.AgregarProducto(objProductoE) MsgBox(salida) dgvProducto.DataSource = objProductoNE.listarProductos habilitarBotones(True, False, False, False) HabilitarCajas(False) End Sub Sub actualizarProductos() If txtcodigo.Text <> "" Then Dim objProductoE = New Producto Dim objProductoNE = New ProductoNE objProductoE.idProducto = CInt(txtcodigo.Text) objProductoE.DescripcionProducto = txtDescripcion.Text objProductoE.PrecioProducto = txtprecio.Text objProductoE.idCategoriaProducto = cboCategoria.SelectedValue objProductoE.StockProducto = txtStock.Text Dim salida As String = objProductoNE.ActualizarProducto(objProductoE) MsgBox(salida) dgvProducto.DataSource = objProductoNE.listarProductos Else MsgBox("Ingrese los datos para actualizar")

Page 15: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

End If habilitarBotones(True, False, False, False) HabilitarCajas(False) End Sub Sub cancelar_producto() BuscarProductos(1) HabilitarCajas(False) habilitarBotones(True, False, False, False) End Sub Private Sub dgvProductos_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvProducto.CellClick If dgvProducto.Rows.Count > 0 Then Dim dgvFila As DataGridViewRow = Me.dgvProducto.CurrentRow() Me.txtcodigo.Text = dgvFila.Cells(0).Value Me.txtDescripcion.Text = dgvFila.Cells(1).Value Me.txtprecio.Text = dgvFila.Cells(2).Value Me.txtStock.Text = dgvFila.Cells(3).Value Me.cboCategoria.Text = dgvFila.Cells(4).Value Else MsgBox("No hay ningun registro seleccionado") End If habilitarBotones(False, False, True, True) HabilitarCajas(True) End Sub Sub LimpiarCajas() Me.txtcodigo.Clear() Me.txtDescripcion.Clear() Me.txtprecio.Clear() 'Me.cboCategoria.DataSource = Nothing Me.txtStock.Clear() End Sub Sub HabilitarCajas(ByVal estado) Me.txtcodigo.Enabled = False Me.txtDescripcion.Enabled = estado Me.txtprecio.Enabled = estado Me.cboCategoria.Enabled = estado Me.txtStock.Enabled = estado Me.txtDescripcion.Focus() End Sub Sub ConfigurarDataGrid() dgvProducto.RowsDefaultCellStyle.BackColor = Color.LightYellow dgvProducto.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGreen End Sub Sub habilitarBotones(ByVal btnnuevo As Boolean, ByVal btnAgregar As Boolean, ByVal btnActualizar As Boolean, ByVal btncancelar As Boolean) Me.btnNuevo.Enabled = btnnuevo Me.btnGrabar.Enabled = btnAgregar Me.btnActualizar.Enabled = btnActualizar Me.btnCancelar.Enabled = btncancelar End Sub Sub BuscarProductos(ByVal codigo As Integer) Dim objProductoNE As ProductoNE objProductoNE = New ProductoNE Dim objProductoE As New Producto Dim idProducto As Integer idProducto = objProductoNE.CodProducto() - 1 If codigo > idProducto Then MsgBox("Registros no encontrado") Else objProductoE = objProductoNE.listarProducto(codigo)

Page 16: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Me.txtcodigo.Text = objProductoE.idProducto Me.txtDescripcion.Text = objProductoE.DescripcionProducto Me.txtprecio.Text = objProductoE.PrecioProducto ' cboCategoria.DataSource = Nothing Me.cboCategoria.Text = objProductoE.idCategoriaProducto Me.txtStock.Text = objProductoE.StockProducto End If habilitarBotones(False, False, True, True) HabilitarCajas(True) End Sub End Class

Formulario: FrmCategoria

Imports Entidades Imports Negocio Public Class FrmCategoria Private Sub FrmCategoria_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim objCategoriaNE1 As CategoriaNE objCategoriaNE1 = New CategoriaNE dgvCategoria.DataSource = objCategoriaNE1.listarCategorias ConfigurarDataGrid() BuscarCategorias(1) HabilitarCajas(False) habilitarBotones(True, False, False, False) End Sub Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click Limpiar_Categoria() End Sub Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click Nueva_Categoria() End Sub Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click actualizar_Categorias() End Sub Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click Cancelar_Categoria() End Sub Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click Buscar_Categoria() End Sub Sub LimpiarCajas() Me.txtCodigo.Clear() Me.txtNombre.Clear() Me.txtdescripcion.Clear() End Sub Sub HabilitarCajas(ByVal estado) Me.txtCodigo.Enabled = False Me.txtNombre.Enabled = estado Me.txtDescripcion.Enabled = estado Me.txtNombre.Focus() End Sub

Page 17: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Sub ConfigurarDataGrid() dgvCategoria.RowsDefaultCellStyle.BackColor = Color.LightYellow dgvCategoria.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGreen End Sub Sub habilitarBotones(ByVal btnnuevo As Boolean, ByVal btnAgregar As Boolean, ByVal btnActualizar As Boolean, ByVal btncancelar As Boolean) Me.btnNuevo.Enabled = btnnuevo Me.btnGrabar.Enabled = btnAgregar Me.btnActualizar.Enabled = btnActualizar Me.btnCancelar.Enabled = btncancelar End Sub Sub Limpiar_Categoria() HabilitarCajas(True) LimpiarCajas() habilitarBotones(False, True, False, True) Dim objCategoriaNE = New CategoriaNE Me.txtCodigo.Text = objCategoriaNE.CodCategoria() End Sub Sub Nueva_Categoria() Dim objCategoriaE = New Categoria Dim objCategoriaNE = New CategoriaNE objCategoriaE.idCategoria = CInt(txtCodigo.Text) objCategoriaE.NombreCategoria = txtNombre.Text objCategoriaE.DescripcionCategoria = txtdescripcion.Text Dim salida As String = objCategoriaNE.AgregarCategoria(objCategoriaE) MsgBox(salida) dgvCategoria.DataSource = objCategoriaNE.listarCategorias habilitarBotones(True, False, False, False) HabilitarCajas(False) End Sub Sub actualizar_Categorias() If txtCodigo.Text <> "" Then Dim objCategoriaE = New Categoria Dim objCategoriaNE = New CategoriaNE objCategoriaE.idCategoria = CInt(txtCodigo.Text) objCategoriaE.NombreCategoria = txtNombre.Text objCategoriaE.DescripcionCategoria = txtdescripcion.Text Dim salida As String = objCategoriaNE.ActualizarCategoria(objCategoriaE) MsgBox(salida) dgvCategoria.DataSource = objCategoriaNE.listarCategorias Else MsgBox("Ingrese los datos para actualizar") End If habilitarBotones(True, False, False, False) HabilitarCajas(False) End Sub Sub Cancelar_Categoria() BuscarCategorias(1) HabilitarCajas(False) habilitarBotones(True, False, False, False) End Sub Sub BuscarCategorias(ByVal codigo As Integer) Dim objCategoriaNE As CategoriaNE objCategoriaNE = New CategoriaNE Dim objCategoriaE As New Categoria Dim idCategoria As Integer idCategoria = objCategoriaNE.CodCategoria() - 1 If codigo > idCategoria Then MsgBox("Registros no Encontrado") Else objCategoriaE = objCategoriaNE.listarCategoria(codigo) Me.txtCodigo.Text = objCategoriaE.idCategoria

Page 18: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Me.txtNombre.Text = objCategoriaE.NombreCategoria Me.txtdescripcion.Text = objCategoriaE.DescripcionCategoria End If habilitarBotones(False, False, True, True) HabilitarCajas(True) End Sub Sub Buscar_Categoria() Dim objCategoriaNE As CategoriaNE objCategoriaNE = New CategoriaNE Dim objCategoriaE As New Categoria Dim codigo As Integer = CInt(InputBox("Ingrese Código Categoria")) BuscarCategorias(codigo) End Sub Private Sub dgvCategoria_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvCategoria.CellClick If dgvCategoria.Rows.Count > 0 Then Dim dgvFila As DataGridViewRow = Me.dgvCategoria.CurrentRow() Me.txtCodigo.Text = dgvFila.Cells(0).Value Me.txtNombre.Text = dgvFila.Cells(1).Value Me.txtdescripcion.Text = dgvFila.Cells(2).Value Else MsgBox("No hay ningun registro seleccionado") End If habilitarBotones(False, False, True, True) HabilitarCajas(True) End Sub End Class

Page 19: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Ejecución de la aplicación

1. Ejecutamos el Menú Principal:

2. Menú Mantenimiento: Opción Producto

Ing. Hobby Saavedra Rosas

Page 20: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Opciones:

Nuevo:

Clic en el botón nuevo, y nos genera automáticamente el código del nuevo

producto, procedemos a ingresar los datos del producto y seleccionamos la

categoría:

Grabar:

Después de haber ingresado los datos, hacemos clic en el botón Grabar, y

observamos que el registro fue guardado con éxito.

Page 21: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Actualizar:

Para Actualizar tenemos dos opciones, respecto al registro a modificar,

podemos seleccionar el DataGridView, o realizar la búsqueda por el código del

producto que deseamos modificar.

Actualizamos los datos del producto de código 7.

Cancelar:

Sirve para deshacer alguna acción que no estamos seguros de hacerlo.

Page 22: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Por ejemplo acá intentamos modificar los datos pero abortamos dicha acción

por lo tanto cancelamos y nos muestra el primer registro.

Buscar:

Realizamos la búsqueda del producto de código 8

Page 23: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Clic en aceptar del cuadro de dialogo:

Ahora ya podemos actualizar los datos del producto. Si este existiera en la base de

datos.

3. Menú Mantenimiento: Opción Categoría

Page 24: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Opciones:

Nuevo:

Ingresamos los datos de la nueva categoría:

Grabar:

Hacemos clic en grabar, para registrar la nueva categoría en la base de datos.

Page 25: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Actualizar:

Ahora es parecido al proceso que se realiza para el producto, en este caso vamos

actualizar los datos de la categoría de código 4:

Luego clic en el botón Actualizar.

Page 26: VB. NET y SQL SERVER - ARQUITECTURA TRES CAPAS

Ing. Hobby Saavedra Rosas

VB.NET Y SQL SERVER

Buscar:

Vamos a buscar los datos de la categoría de Código 3: