Este documento describe los pasos para implementar un formulario de mantenimiento de inventario en una base de datos de almacén utilizando Visual Basic 2010 y SQL Server. Incluye la creación de procedimientos almacenados, una clase de inventario con métodos, y la codificación del formulario con botones para registrar, buscar, actualizar y eliminar registros de inventario.
1. INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE
GUIA PRACTICA 2 – VISUAL BASIC 2010 + SQL SERVER
MANTENIMIENTO DE TABLAS 1-N
1. En la base de datos BDALMACEN considerada en la Guía Práctica 1, implementar el
formulario para mantenimiento del Inventario de cada ítem. Utilice procedimientos
almacenados para las operaciones con la base de datos.
Solución
Paso 1: Considerar la base de datos BDALMACEN.
PROVEEDOR
id_proveedor
ENTRADA_ALMACEN
nombre_prov
nro_entrada
direc_prov
nro_factura (FK)
FACTURA
fecha
nro_factura id_proveedor (FK)
descripcion
total_bienes AREAS
valor_total id_area
nombre_area
DETALLE_ENTRADA
descripcion
nro_entrada (FK)
nro_factura (FK)
id_item (FK)
DETALLE_FACTURA cantidad SALIDA_ALMACEN
nro_factura (FK)
nro_salida
id_item (FK)
ITEM
empleado_responsable
cantidad id_item fecha_salida
fecha_entrega
nombre
id_area (FK)
nro_entrada (FK)
nro_factura (FK)
DETALLE_ITEM
INVENTARIO
id_item (FK)
cod_unico
nro_salida (FK)
responsable
cantidad
fecha
stock
id_item (FK)
Paso 2: Implementar en la base de datos los siguientes procedimientos almacenados:
a). sp_insertaInventario
b). sp_ListaInventario
c). sp_BuscaInventario
d). sp_ActualizaInventario
e). sp_EliminaInventario
CREATE PROCEDURE SP_INSERTAINVENTARIO
@PIDINV VARCHAR(10),
@RESP VARCHAR(20),
@FECHAINV DATETIME,
@STOCKINV INT,
@PIDITEM VARCHAR(20)
AS
BEGIN
INSERT INTO INVENTARIO(cod_unico,responsable,fecha,stock,id_item)
VALUES (@PIDINV,@RESP, @FECHAINV, @STOCKINV, @PIDITEM)
END
CREATE PROCEDURE SP_LISTAINVENTARIO
AS
BEGIN
SELECT * FROM INVENTARIO
END
ING. FRANCISCO RODRIGUEZ N. Pág 1
2. INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE
Paso 3: En el proyecto trabajado en la guía1, considerar en el menú de opciones en la opción
Mantenimiento, incluir Inventario.
Paso 4: En el explorador de soluciones (superior derecha) Marcar ProyectoAlmacen – click derecho
– Agregar – WindowsForm Agregue un Windows form (Form1). Cambiar el texto y name de este
formulario por el de FormInventario.
Paso 5: En el FormProveedor incorporar los controles (objetos) que se indican
ING. FRANCISCO RODRIGUEZ N. Pág 2
3. INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE
OBJETO ATRIBUTO VALOR
Label1 Text CODIGO INV
Label2 Text ITEM
Label3 Text STOCK
Label4 Text FECHA
Label5 Text RESPONSABLE
GroupBox1 Text Operaciones
TextBox1 Name txtcodigoinv
Text
TextBox2 Name txtrespons
Text
ComboBox1 Name ComboItem
NumericUpDown1 Name NumStock
DateTimePicker Name DTFecha
DataGridView Name DGVInv
Button1 Text Registrar
Name BtnRegInv
Button2 Text Actualizar
Name BtnActInv
Button3 Text Eliminar
Name BtnEliminarInv
Button4 Text Limpiar
Name BtnLimpiarInv
Button5 Text Buscar
Name BtnBuscarInv
Paso 6: En el Menú, en la opción Inventario dar doble click y escribir el siguiente código (para el
llamado del formulario desde el Menu Principal).
Private Sub INVENTARIOToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles INVENTARIOToolStripMenuItem.Click
Dim MnuInventario As New FormInventario
MnuInventario.Show()
End Sub
ING. FRANCISCO RODRIGUEZ N. Pág 3
4. INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE
Paso 7: En el explorador de soluciones (superior derecha) Marcar ProyectoAlmacen – click
derecho – Agregar – Clase. Implementar la clase Inventario con sus correspondientes atributos y
métodos.
Imports System.Data.SqlClient
Public Class Inventario
Private idinv, iditem, respons As String
Private stock As Integer
Private fechainv As Date
Private conn As SqlConnection
Private cmd As SqlCommand
Private strConn As String = "SERVER=localhost;DATABASE=BDALMACEN;Integrated
Security=SSPI;"
Sub New()
conn = New SqlConnection(strConn)
End Sub
Sub New(ByVal tidinv As String, ByVal tiditem As String, ByVal tstock As Integer, ByVal tfecha As
Date, ByVal trespons As String)
Me.idinv = tidinv
Me.iditem = tiditem
Me.stock = tstock
Me.fechainv = tfecha
Me.respons = trespons
conn = New SqlConnection(strConn)
End Sub
ING. FRANCISCO RODRIGUEZ N. Pág 4
5. INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE
Public Property fidinv() As String
Get
Return Me.idinv
End Get
Set(ByVal value As String)
Me.idinv = value
End Set
End Property
Public Property fiditem() As String
Get
Return Me.iditem
End Get
Set(ByVal value As String)
Me.iditem = value
End Set
End Property
Public Property fstock() As Integer
Get
Return Me.stock
End Get
Set(ByVal value As Integer)
Me.stock = value
End Set
End Property
Public Property ffecha() As Date
Get
Return Me.fechainv
End Get
Set(ByVal value As Date)
Me.fechainv = value
End Set
End Property
Public Property frespons() As String
Get
Return Me.respons
End Get
Set(ByVal value As String)
Me.respons = value
End Set
End Property
Public Sub RegistrarInventario()
Try
conn.Open()
cmd = New SqlCommand("SP_INSERTAINVENTARIO", conn)
cmd.CommandType = CommandType.StoredProcedure
ING. FRANCISCO RODRIGUEZ N. Pág 5
6. INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE
cmd.Parameters.AddWithValue("@pidinv", idinv)
cmd.Parameters.AddWithValue("@piditem", iditem)
cmd.Parameters.AddWithValue("@stockinv", stock)
cmd.Parameters.AddWithValue("@fechainv", fechainv)
cmd.Parameters.AddWithValue("@resp", respons)
cmd.ExecuteNonQuery()
Catch ex As Exception
Throw New Exception(ex.Message)
Finally
conn.Close()
End Try
End Sub
Public Function ListarInventarios() As DataTable
Try
Dim ds As DataSet
Dim da As SqlDataAdapter
conn.Open()
cmd = New SqlCommand("SP_LISTAINVENTARIO", conn)
cmd.CommandType = CommandType.StoredProcedure
ds = New DataSet
da = New SqlDataAdapter(cmd)
da.Fill(ds)
Return ds.Tables(0)
Catch ex As Exception
Throw New Exception(ex.Message)
Finally
conn.Close()
End Try
End Function
End Class
Paso 8: Ubicarse en el formulario Inventario. Alli dar doble click Codificar los métodos que se
indican (dentro de la clase FormInventario
ING. FRANCISCO RODRIGUEZ N. Pág 6
7. INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE
Private Sub FormInventario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
FillGridInv()
CargaComboItem()
End Sub
Private Sub FillGridInv()
Try
Dim objInventario As New Inventario
With objInventario
DGVInv.DataSource = .ListarInventarios
End With
Catch ex As Exception
MsgBox("Mensaje: " & ex.Message)
End Try
End Sub
Private Sub CargaComboItem()
Try
Dim objItem As New Item
With objItem
ComboItem.DataSource = .ListarItems
ComboItem.DisplayMember = "Nombre"
ComboItem.ValueMember = "Id_Item"
End With
Catch ex As Exception
MsgBox("Mensaje: " & ex.Message)
End Try
End Sub
Paso 9: Codificar el objeto botón Registrar en el formulario Inventario.
Private Sub BtnRegInv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnRegInv.Click
Try
Dim objInventario As New Inventario
With objInventario
.fidinv = txtcodigoinv.Text
.fiditem = ComboItem.SelectedValue
.fstock = NumStock.Value
.ffecha = DTFecha.Value
.frespons = txtrespons.Text
.RegistrarInventario()
End With
MsgBox("Inventario Registrado !!!!")
FillGridInv() 'Llenar el Grid
Catch ex As Exception
MsgBox("Mensaje: " & ex.Message)
End Try
End Sub
ING. FRANCISCO RODRIGUEZ N. Pág 7
8. INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE
Paso 10: Ejecutar la aplicación y probar el botón registrar inventario.
Ejercicios Propuestos
1. Implementar los procedimientos almacenados para actualizar, buscar y eliminar inventario.
2. En la clase Inventario implementar los métodos de actualizar, buscar y eliminar inventario.
3. En el formulario de Inventario implementar los botones de buscar, actualizar y eliminar
inventario.
ING. FRANCISCO RODRIGUEZ N. Pág 8