Este documento describe la creación de una aplicación de tres capas para un sistema de ventas. Se agregan dos formularios para cargar y buscar datos de la tabla "cargos" de la base de datos. La capa de datos contiene la clase CDcargos para conectarse a la base de datos y recuperar los datos. La capa lógica contiene la clase CLCargos. Los formularios usan estas clases para mostrar, cargar y buscar registros de la tabla "cargos".
Sistema de ventas en 3 capas con carga y búsqueda de datos
1. Semana 04
SISTEMA DE VENTAS EN 3 CAPAS
Tomandocomo modelolabase de datosVentas2018, que se le ha proporcionado,vamosa
crear una aplicaciónempleandolascapasde Presentación,capaLógicay la capa de datos.
Continuandoconel proyecto anteriormente creado:Proy_Ventas2018_3capas_VBnet, ahora
agregaremosdosnuevosformulariosanuestroproyecto,donde realizaremoslosprocesosde
carga de datosy búsquedade datosde una tabla.
Para ellotomaremos,latablacargospara realizarlosprocesossiguientes:
Cargar de datosmanual.
Nombre del formulario: FrmConsultaCargos
Diseño
Label1
BtnCargar
DGVCargos
Label2
Lblreg
Label4
4. Agregarel siguiente Procedimientoalmacenadoalabase de datosVentas2018
create proc mostrar_cargos
as
select * from cargos
Agregaren lacapa de Datos laclase CDCargos, y enellaagregarel siguiente código
Códigode la Clase CDCargos
Imports System.Data.SqlClient
Public Class CDcargos
'inherits .- Hace que la clase o interfaz actual herede los atributos,
' variables, propiedades, procedimientos y eventos de otra clase o conjunto
de interfaces.
Inherits Conexion
'Clase SqlCommad.- Representa un procedimiento almacenado o una instrucción
de Transact-SQL
'que se ejecuta en una base de datos de SQL Server. Esta clase no puede
heredarse.
Dim cmd As New SqlCommand
Public Function FnMostrarCargos() As DataTable
Try
Fnconectado()
cmd = New SqlCommand("mostrar_cargos")
'propiedad commandType .- Obtiene o establece un valor que indica
cómo se interpreta la propiedad CommandText.
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
'metodo ExecuteNonQuery .- Ejecuta una instrucción de Transact-SQL
en la conexión y devuelve el
' número de filas afectadas.
If cmd.ExecuteNonQuery Then
Dim dt As New DataTable
' clase SqlDataAdapter .- Representa un conjunto de comandos de
datos y una
'conexión a una base de datos que se usan para rellenar DataSet y
actualizar una
'base de datos de SQL Server. Esta clase no puede heredarse.
Dim da As New SqlDataAdapter(cmd)
da.Fill(dt)
Return dt
Else
Return Nothing
End If
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
Finally
Fndesconectado()
End Try
End Function
End Class
5. Agregaren lacapa Lógivalaclase CLCargos
Códigode la clase CLCargos
Public Class CLcargos
Dim id As String
Dim nombre As String
Public Property gId
Get
Return id
End Get
Set(value)
id = value
End Set
End Property
Public Property gNombre
Get
Return nombre
End Get
Set(value)
nombre = value
End Set
End Property
Public Sub New()
End Sub
Public Sub New(ByVal id As String, ByVal nombre As String)
gId = id
gNombre = nombre
End Sub
End Class
En el formulariode nuestroDiseñoagregarel siguientecódigo
Códigodel Formulario FrmConsultaCargos
Imports CD = CapaDatos
Public Class FrmConsultaCargos
Dim func As New CD.CDcargos
Dim dt As New DataTable
Private Sub BtnCargar_Click(sender As Object, e As EventArgs) Handles
BtnCargar.Click
Try
Dim totreg As Integer
AparienciaTable()
dt = func.FnMostrarCargos
If dt.Rows.Count <> 0 Then
6. DGVCargos.DataSource = dt
totreg = DGVCargos.Rows.Count
lblreg.Text = totreg
Else
DGVCargos.DataSource = Nothing
totreg = 0
lblreg.Text = totreg
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Sub AparienciaTable()
'configuramos el color de las filas impares
DGVCargos.RowsDefaultCellStyle.BackColor = Color.Azure
'configuramos el color de las filas pares
DGVCargos.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige
End Sub
End Class
Búsquedade datos
Nombre del formulario: FrmBuscarCargo
Diseño
7. Imports CD = CapaDatos
Public Class FrmBuscarCargo
Dim func As New CD.CDcargos
Dim dt As New DataTable
Sub mostrar()
Try
Dim totreg As Integer
AparienciaTable()
dt = func.FnMostrarCargos
If dt.Rows.Count <> 0 Then
DGVCargos.DataSource = dt
totreg = DGVCargos.Rows.Count
lblreg.Text = totreg
Else
DGVCargos.DataSource = Nothing
totreg = 0
lblreg.Text = totreg
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Sub AparienciaTable()
'configuramos el color de las filas impares
DGVCargos.RowsDefaultCellStyle.BackColor = Color.Azure
'configuramos el color de las filas pares
DGVCargos.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige
End Sub
Private Sub FrmBuscarCargo_Load(sender As Object, e As EventArgs) Handles
MyBase.Load
mostrar()
End Sub
Private Sub txtnombres_TextChanged(sender As Object, e As EventArgs) Handles
txtnombres.TextChanged
buscar()
End Sub
Private Sub buscar()
Try
'creamos un objeto dataset que me permite recoger los datos de la
fuente de datos y traerlos a nuestra aplicacion
Dim ds As New DataSet
'copiamos a la variable ds todo los registros que contiene la
variable dt que es datatable
ds.Tables.Add(dt.Copy)
Dim dv As New DataView(ds.Tables(0))
'filtramos los datos por el campo elegido el combobox cbocampo y que
inicien con la cadena escrita en el txtbusccar
dv.RowFilter = "nombre_cargo like '%" & txtnombres.Text & "%'"
8. 'si la cantidad de registros es mayor que cero entonces mostramos los
registros filtrados
If dv.Count <> 0 Then
inexistente.Visible = False
DGVCargos.DataSource = dv
'en caso no obtengamos registros no mostramos nada y mostramos el
mensaje del label inexistente "datos inexistentes"
Else
inexistente.Visible = True
DGVCargos.DataSource = Nothing
formateargridview(DGVCargos, "cod_cargo", "Id", "cod_cargo", 100)
formateargridview(DGVCargos, "Nombre_cargo", "Nombres",
"Nombre_cargo", 250)
End If
'mostramos en el label el total de resgistros filtrados
lblreg.Text = dv.Count
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Sub formateargridview(ByVal grid As DataGridView, ByVal nombre As String,
ByVal encabezado As String, ByVal datapro As String, ByVal ancho As Integer)
Dim newCol As New DataGridViewTextBoxColumn
With newCol
.Name = nombre
.HeaderText = encabezado
.DataPropertyName = datapro
.Width = ancho
End With
grid.Columns.Add(newCol)
End Sub
End Class