Está en la página 1de 21

Sistema de Vendedores usando Visual Basic Net -1-

SISTEMA DE VENDEDORES TRABAJO DE BASE DE DATOS


1. USANDO EXCEL CREE LAS SIGUIENTES TABLAS

TABLA VENDEDORES
CODVENDEDOR NOMBRE
1 JUAN
2 PEDRO
3 LUIS
4 CARLOS
5 MARIA

TABLA VENTAS
IDVENTAS FECHA CODVENDEDOR MONTO DISTRITO
1 01/01/2009 1 1000 PAUCARPATA
2 01/01/2009 2 2000 CERCADO
3 01/01/2009 3 3000 HUNTER
4 01/01/2009 4 4000 MIRAFLORES
5 01/01/2009 5 5000 PAUCARPATA
6 01/02/2009 1 6000 CERCADO
7 01/02/2009 2 7000 HUNTER
8 01/02/2009 1 100 CERCADO

Usando el men ( en el Editor de VB de Excel ) herramientas referencias ponga las


siguientes referencias

Disee un botn de comando en la hoja Excel para practicar SQL


Sistema de Vendedores usando Visual Basic Net -2-
Disee un formulario como la mostrada que se muestra al hacer clic en el botn de
comando de la hoja de Excel para ello agregue un cuadro de texto con propiedad
multiline y dos botones de comando . la sentencia SQL se escribe en el cuadro de
Texto y al hacer clic en el botn GenerarSQL lista los resultados de la sentencia SQL
en la hoja de clculo activo

Los cdigos en Excel tanto del formulario como de los botones es lo siguiente

CODIGO EN LA HOJA EXCEL

Private Sub CommandButton1_Click()


UserForm1.Show vbModeless
End Sub

CODIGO DEL FORMULARIO

Option Explicit
Dim HojaActiva As String
Dim Encontrado As Boolean

Private Sub generarSQL_Click()


Dim BDNombre As String
Dim Conexion As ADODB.Connection
Dim Grabar As ADODB.Recordset
Dim col As Integer
On Error GoTo p1
HojaActiva = ActiveSheet.Name
Encontrado = False
Cells.Clear
BDNombre = ThisWorkbook.Path & "\VENDEDORES.xls"
Set Conexion = New ADODB.Connection
Dim Cadenaconexion As String
Cadenaconexion = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" &
BDNombre & ";" & _ "Extended Properties=""Excel 8.0;HDR=YES"""
Conexion.Open ConnectionString:=Cadenaconexion
Set Grabar = New ADODB.Recordset
Dim CadenaSQL As String
CadenaSQL = TextBox1.Text
Grabar.Open Source:=CadenaSQL, ActiveConnection:=Conexion
For col = 0 To Grabar.Fields.Count - 1
Sistema de Vendedores usando Visual Basic Net -3-
Range("a1").Offset(0, col).Value = Grabar.Fields(col).Name
Next
Range("a1").Offset(1, 0).CopyFromRecordset Grabar
Set Grabar = Nothing
Conexion.Close
Set Conexion = Nothing
Exit Sub
p1:
MsgBox Err.Description
End Sub

Private Sub Iniciar_Click()


Dim hoja As String
hoja = "hoja1"
rango = "A1:D10"
If rango <> ":" Then
hoja = hoja & "$" & rango
End If
TextBox1.Text = "SELECT * from [" & hoja & "]"
End Sub

Usando la aplicacin realizada pruebe los siguientes SQL y vea los resultados

1 Listar la tabla vendedores SELECT * FROM [VENDEDORES$]


CODVENDEDOR NOMBRE
1 JUAN
2 PEDRO
3 LUIS
4 CARLOS
5 MARIA

2. Listar la Tabla Ventas SELECT * FROM [VENTAS$]

IDVENTAS FECHA CODVENDEDOR MONTO DISTRITO


1 01/01/2009 1 1000 PAUCARPATA
2 01/01/2009 2 2000 CERCADO
3 01/01/2009 3 3000 HUNTER
4 01/01/2009 4 4000 MIRAFLORES
5 01/01/2009 5 5000 PAUCARPATA
6 01/02/2009 1 6000 CERCADO
7 01/02/2009 2 7000 HUNTER

3. Encontrar el subtotal de ventas por vendedor


SELECT CODVENDEDOR ,SUM(MONTO) AS TOTAL from [VENTAS$] GROUP
BY CODVENDEDOR
CODVENDEDOR TOTAL
1 7100
2 9000
3 3000
4 4000
5 5000
Sistema de Vendedores usando Visual Basic Net -4-
4 Muestre tambin el nombre del vendedor en los totales

SELECT A.CODVENDEDOR, A.NOMBRE,B.TOTAL FROM [VENDEDORES$] A


LEFT JOIN (SELECT CODVENDEDOR, SUM(MONTO) AS TOTAL FROM [VENTAS$] GROUP
BY CODVENDEDOR) B ON A.CODVENDEDOR=B.CODVENDEDOR

CODVENDEDOR NOMBRE TOTAL


1 JUAN 7100
2 PEDRO 9000
3 LUIS 3000
4 CARLOS 4000
5 MARIA 5000

5. dado cdigo del vendedor mostrar sus ventas


SELECT * FROM [VENTAS$] WHERE CODVENDEDOR =1

IDVENTAS FECHA CODVENDEDOR MONTO DISTRITO


1 39814 1 1000 PAUCARPATA
6 39845 1 6000 CERCADO
8 39845 1 100 CERCADO

6. Ejercicio Adicional Se tiene una tabla llamada CR con los siguietes campos si
quier obtener el saldo siempre que el SCUAD > SRECFAC
SELECT SCUAD, SRECFAC,IIF(SCUAD>SRECFAC,SCUAD-SRECFAC,0) AS SALDO
FROM [CR$]

SCUAD SRECFAC
100 200
200 100
300 0

SCUAD SRECFAC SALDO


100 200 0
200 100 100
300 0 300

PARTE 2. TRABAJANDO EN VISUAL BASIC NET

Cree las siguientes tablas


Tabla Vendedores

Contenido de la tabla vendedores


Sistema de Vendedores usando Visual Basic Net -5-
Tabla Ventas

Contenido de la Tabla Ventas

Disee un formulario de la siguiente manera (TabControl1 con 3 pginas )


Sistema de Vendedores usando Visual Basic Net -6-

CODIGO DEL FORMULARIO

Imports System.Data.SqlClienT
Public Class Form1
Inherits System.Windows.Forms.Form
Dim CadenaConexion As String = "Persist Security Info=False;Integrated
Security=SSPI;Initial Catalog=ventas1;server=(local)"
Dim con As New SqlConnection(CadenaConexion)
Dim dap As New SqlDataAdapter("SELECT * FROM VENDEDORES", con)
Dim dst As New DataSet
Dim pos As Integer
Dim opera As Integer
Private dvw As DataView
Private Sub MostrarDatos()
TextBox1.Text = dvw(pos)(0)
Sistema de Vendedores usando Visual Basic Net -7-
TextBox2.Text = dvw(pos)(1)
Label4.Text = (pos + 1).ToString & " de " & dvw.Count
End Sub
Private Sub MoverRegistro(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnPrimero.Click, BtnAnterior.Click,
BtnSiguiente.Click, BtnUltimo.Click
Select Case sender.Tag
Case "1"
pos = 0
Case "2"
If pos > 0 Then pos = pos - 1
Case "3"
If pos < dvw.Count - 1 Then pos = pos + 1
Case "4"
pos = dvw.Count - 1
End Select
DataGrid1.CurrentRowIndex = pos
MostrarDatos()
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
dap.Fill(dst, "VENDEDORES")
With ComboBox1
.DataSource = dst.Tables(0)
.DisplayMember = "NOMBRE"
.ValueMember = "CODVENDEDOR"
End With
dap.SelectCommand.CommandText = "Select * FROM VENTAS"
dap.Fill(dst, "VENTAS")
dvw = dst.Tables(0).DefaultView
DataGrid1.DataSource = dvw
DataGrid2.DataSource = dst.Tables(1)
GroupBox1.Enabled = False
pos = 0
MostrarDatos()
End Sub

Private Sub FiltrarPorVendedor(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Try
dvw.RowFilter = "CodVendedor=" & ComboBox1.SelectedValue
Catch ex As Exception
End Try
End Sub
Private Sub LImpiarTextos()
TextBox1.Clear()
TextBox2.Clear()
End Sub

Private Sub BtnAceptar_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles BtnAceptar.Click
Dim fila As DataRow
Select Case opera
Case 1
fila = dst.Tables(0).NewRow
fila(0) = TextBox1.Text
fila(1) = TextBox2.Text
dst.Tables(0).Rows.Add(fila)
Case 2
dst.Tables(0).BeginInit()
fila = dst.Tables(0).Rows(pos)
fila(0) = TextBox1.Text
fila(1) = TextBox2.Text
Sistema de Vendedores usando Visual Basic Net -8-
dst.Tables(0).EndInit()
Case 3
fila = dst.Tables(0).Rows(pos)
fila.Delete()
End Select
GroupBox1.Enabled = False
GroupBox2.Enabled = True
End Sub
Private Sub MostrarVendedor()
TextBox1.Text = dst.Tables(0).Rows(pos).Item(0)
TextBox2.Text = dst.Tables(0).Rows(pos).Item(1)
End Sub
Private Sub MostrarDetalle(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnNuevo.Click, BtnEditar.Click, BtnEliminar.Click
GroupBox2.Enabled = False
pos = DataGrid1.CurrentRowIndex
opera = sender.Tag
Select Case opera
Case 1
Me.Text = "Adicionar un vendedor"
GroupBox1.Enabled = True
LImpiarTextos()
Case 2
Me.Text = "Actualizar VENDEDOR"
GroupBox1.Enabled = True
MostrarVendedor()
Case 3
Me.Text = "Eliminar un VENDEDOR"
GroupBox1.Enabled = True
MostrarVendedor()
End Select
End Sub
Private Sub EnviarCambios(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnEnviarCambios.Click
Try
dap.SelectCommand.CommandText = "Select * FROM VENDEDORES"
Dim cbd As New SqlCommandBuilder(dap)
dap.Update(dst, "VENDEDORES")
MessageBox.Show("Operacion Realizada", "Aviso",
MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error)
Finally
dst.Tables(0).Clear()
dap.Fill(dst, "vendedores")
DataGrid1.DataSource = dst.Tables(0)
End Try
End Sub
Private Sub BtnCancelar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnCancelar.Click
GroupBox1.Enabled = False
GroupBox2.Enabled = True
End Sub
End Class

1. listar la tabla ventas


Dim dap As New SqlDataAdapter("Select * From Ventas", con)
2. Encontrar el subtotal de ventas por vendedor
Modificar a
Dim dap As New SqlDataAdapter("SELECT CODVENDEDOR ,SUM(MONTO) AS TOTAL
from VENTAS GROUP BY CODVENDEDOR", con)
Sistema de Vendedores usando Visual Basic Net -9-
3 Muestre tambin el nombre del vendedor
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim CadenaConexion As String = "Persist Security
Info=False;Integrated Security=SSPI;Initial Catalog=ventas1;server=(local)"
Dim con As New SqlConnection(CadenaConexion)
Dim dap As New SqlDataAdapter("SELECT A.CODVENDEDOR,A.NOMBRE,B.TOTAL
FROM VENDEDORES A LEFT JOIN (SELECT CODVENDEDOR ,SUM(MONTO) AS TOTAL FROM
VENTAS GROUP BY CODVENDEDOR) B ON A.CODVENDEDOR =B.CODVENDEDOR", con)
Dim dst As New DataSet
dap.Fill(dst, "ventas")
DataGrid1.DataSource = dst.Tables(0)
End Sub

RELIZAR EL EJERCICIO EN FORMA CONECTADA

Disee el siguiente formulario


Sistema de Vendedores usando Visual Basic Net - 10 -
CODIGO DEL FORMULARIO
Imports System.Data.SqlClienT
Imports System.Text 'Para usar StringBuilder
Public Class Form1
Inherits System.Windows.Forms.Form
Dim CadenaConexion As String = "Persist Security Info=False;Integrated
Security=SSPI;Initial Catalog=ventas1;server=(local)"
Dim con As New SqlConnection(CadenaConexion)
Dim cmd As New SqlCommand("", con)
Dim stb As New StringBuilder 'Concatenar datos
Dim reg As Integer 'Numero de Registros Afectados

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
ListarVendedores()
BtnAdicionar.Enabled = False
End Sub
Private Sub ListarVendedores()
ListBox2.Items.Clear()
con.Open()
cmd.CommandText = "Select CodVendedor,Nombre From Vendedores"
Dim drd As SqlDataReader = cmd.ExecuteReader
Do While drd.Read
stb.Append(drd.GetSqlString(0).ToString.PadRight(5))REM codvendedor
stb.Append(drd.GetSqlString(1).ToString.PadRight(25)) REM nombre
ListBox2.Items.Add(stb.ToString)
stb.Length = 0
Loop
drd.Close()
con.Close()
End Sub

Private Sub MostrarVendedores(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles ListBox2.SelectedIndexChanged
With ListBox2.SelectedItem.ToString
TextBox1.Text = .Substring(0, 5).Trim REM codvendedor
TextBox2.Text = .Substring(5, 25).Trim REM nombre
End With
End Sub

Private Sub BtnEstadistica_Click(ByVal sender As System.Object, ByVal e


As System.EventArgs) Handles BtnEstadistica.Click
Dim cmd As New SqlCommand("", con)
con.Open()
With cmd
.CommandText = "Select Count(Nombre) From Vendedores"
Dim intTotalItems As Integer = .ExecuteScalar
ListBox1.Items.Add(intTotalItems.ToString & " vendedores")
End With
con.Close()
End Sub

Private Sub BtnListarVendedores_Click(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles BtnListarVendedores.Click
cmd.CommandText = "select Nombre from Vendedores"
con.Open()
Dim drd As SqlDataReader = cmd.ExecuteReader
Do While drd.Read
ListBox1.Items.Add(drd.GetSqlString(0))
Loop
drd.Close()
con.Close()
End Sub
Sistema de Vendedores usando Visual Basic Net - 11 -

Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles BtnNuevo.Click
con.Open()
TextBox1.Clear()
con.Close()
TextBox2.Clear()
TextBox2.Focus()
BtnAdicionar.Enabled = True
End Sub

Private Sub AdicionarVendedor(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles BtnAdicionar.Click
Dim nombre1 As String
If TextBox1.Text <> "" And TextBox2.Text <> "" Then
Try
stb.Length = 0
stb.Append("Insert Into Vendedores(codVendedor,nombre) Values('")
stb.Append(TextBox1.Text)
stb.Append("','")
stb.Append(TextBox2.Text)
stb.Append("')")
nombre1 = stb.ToString
con.Open()
cmd.CommandText = stb.ToString
reg = cmd.ExecuteNonQuery()
If reg <= 0 Then Throw New Exception("No se pudo adicionar el Alumno")
Catch ex As Exception
MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK,
MessageBoxIcon.Error)
Finally
If con.State = ConnectionState.Open Then con.Close()
stb.Length = 0
ListarVendedores()
BtnAdicionar.Enabled = False
End Try
End If
End Sub

Private Sub BtnEliminar_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles BtnEliminar.Click
If TextBox1.Text <> "" Then
Try
stb.Length = 0
stb.Append("Delete From Vendedores Where CodVendedor='")
stb.Append(TextBox1.Text)
stb.Append("'")
con.Open()
cmd.CommandText = stb.ToString
reg = cmd.ExecuteNonQuery()
If reg <= 0 Then Throw New Exception("No se pudo eliminar el alumno")
MessageBox.Show("registro eliminado")
Catch ex As Exception
MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK,
MessageBoxIcon.Error)
Finally
If con.State = ConnectionState.Open Then con.Close()
stb.Length = 0
ListarVendedores()
BtnAdicionar.Enabled = False
End Try
End If
End Sub
Sistema de Vendedores usando Visual Basic Net - 12 -
Private Sub ActualizarVendedor(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnActualizar.Click
Dim nombre As String
If TextBox1.Text <> "" And TextBox2.Text <> "" Then
Try
stb.Length = 0
stb.Append("Update Vendedores Set CodVendedor='")
stb.Append(TextBox1.Text)
stb.Append("',Nombre='")
stb.Append(TextBox2.Text)
stb.Append("' Where CodVendedor='")
stb.Append(TextBox1.Text)
con.Open()
stb.Append("'")
nombre = stb.ToString
cmd.CommandText = stb.ToString
reg = cmd.ExecuteNonQuery()
If reg <= 0 Then Throw New Exception("No se pudo actualizar el vendedor")
MessageBox.Show("registro actualizado")
Catch ex As Exception
MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK,
MessageBoxIcon.Error)
Finally
If con.State = ConnectionState.Open Then con.Close()
stb.Length = 0
ListarVendedores()
BtnAdicionar.Enabled = False
End Try
End If
End Sub
End Class

ELABORAR LA APLICACION CON PROCEDIMIENTOS ALMACENADOS


Usando procedimientos almacenados para el caso de vendedores
Disee un formulario como la mostrada para inserte un control listview

Escribir el siguiente procedimiento almacenado


ALTER PROCEDURE up_ListaVendedores
As
Select CodVendedor,Nombre From VENDEDORES

CODIGO DEL FORMULARIO

Imports System.Data.SqlClient
Public Class Form1
Sistema de Vendedores usando Visual Basic Net - 13 -
Inherits System.Windows.Forms.Form
Private Sub CrearColumnasListView()
With ListView1
.Columns.Add("Codigo Vend", 100, HorizontalAlignment.Left)
.Columns.Add("Nombre Vend", 200, HorizontalAlignment.Left)
.View = View.Details
.FullRowSelect = True
End With
End Sub
Private Sub ListarVendedores()
Dim CadenaConexion As String = "Persist Security
Info=False;Integrated Security=SSPI;Initial Catalog=ventas1;server=(local)"
Dim con As New SqlConnection(CadenaConexion)
Dim cmd As New SqlCommand("up_ListaVendedores", con)
Dim drd As SqlDataReader
Dim fila As ListViewItem
Try
con.Open()
cmd.CommandType = CommandType.StoredProcedure
drd = cmd.ExecuteReader
Do While drd.Read
fila = ListView1.Items.Add(drd.GetSqlString(0).Value)
fila.SubItems.Add(drd.GetSqlString(1).Value)
Loop
drd.Close()
Catch
Finally
If con.State = ConnectionState.Open Then con.Close()
End Try
End Sub
Private Sub CargarDatos(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
CrearColumnasListView()
ListarVendedores()
End Sub
End Class

Usando DataAdapter y DataSet para trabajar en forma desconectada


Disee el formulario como la mostrada

El cdigo del frmulario es


Imports System.Data.SqlClient
Public Class Form1
Inherits System.Windows.Forms.Form

Private Sub CargarDatos(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
Sistema de Vendedores usando Visual Basic Net - 14 -
Dim CadenaConexion As String = "Persist Security
Info=False;Integrated Security=SSPI;Initial Catalog=ventas1;server=(local)"
Dim con As New SqlConnection(CadenaConexion)
Dim dap As New SqlDataAdapter("up_ListaVendedores", con)
Dim dst As New DataSet
Try
dap.SelectCommand.CommandType = CommandType.StoredProcedure
dap.Fill(dst, "Vendedores")
DataGrid1.DataSource = dst.Tables(0)
Catch
End Try
End Sub
End Class

Usando un Procedimiento Con Parmetros


Procedimientos con Parmetros de Entrada
Escribir los siguietes procedimientos almacenados
ALTER PROCEDURE up_ListaVendedores
As
Select CodVendedor,Nombre From VENDEDORES

ALTER PROCEDURE Up_DevolverVentas


@CodVendedor int
As
Select IdVenta,Fecha,CodVendedor,Monto,Distrito From Ventas Where
CodVendedor= @CodVendedor

ALTER PROCEDURE up_ListaVentas


As
Select IdVenta,Fecha,CodVendedor,Monto,Distrito From VENTAS

ALTER PROCEDURE Up_VentaPorVendedor


@CodVendedor int
As
Select Sum(Monto) From Ventas Where CodVendedor= @CodVendedor

ALTER PROCEDURE up_Detalles_ListarPorVendedor


@CodVendedor int As
Select a.CodVendedor,a.Nombre,b.IdVenta,B.Fecha,b.Monto,b.Distrito
from vendedores a, Ventas b Where b.CodVendedor=@CodVendedor and
a.codVendedor=b.codvendedor
Sistema de Vendedores usando Visual Basic Net - 15 -
Codigo del Formulario
Imports System.Data.SqlClient
Public Class Form1
Inherits System.Windows.Forms.Form
Dim CadenaConexion As String = "Persist Security Info=False;Integrated
Security=SSPI;Initial Catalog=ventas1;server=(local)"
Private con As New SqlConnection(CadenaConexion)
Private dap As New SqlDataAdapter("", con)
Private dst As New DataSet
Private par As SqlParameter
Private Sub CargarDatos(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
With dap.SelectCommand
.CommandType = CommandType.StoredProcedure
.CommandText = "up_ListaVendedores"
End With
dap.Fill(dst, "Vendedores")
With ComboBox1
.DataSource = dst.Tables(0)
.DisplayMember = "CODVENDEDOR"
.ValueMember = "CODVENDEDOR"
End With
With dap.SelectCommand
.CommandType = CommandType.StoredProcedure
.CommandText = "up_Detalles_ListarPorVendedor"
par = .Parameters.Add("@CodVendedor", SqlDbType.Int)
par.Direction = ParameterDirection.Input
End With
End Sub
Private Sub FiltrarDetallesPorOrden(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Try
par.Value = ComboBox1.SelectedValue
If dst.Tables.Count > 1 Then
dst.Tables(1).Clear()
End If
dap.Fill(dst, "Detalles")
DataGrid1.DataSource = dst.Tables(1)
Catch
End Try
End Sub
End Class

Procedimientos con Parmetros de Salida y Valor de Retorno


ALTER PROCEDURE up_VendedoresListarConTotal
As
Select CodVendedor,Nombre From Vendedores
Declare @@Total int
Select @@Total=Count(Nombre) From Vendedores
Return(@@Total)
Sistema de Vendedores usando Visual Basic Net - 16 -
Cdigo del formulario
Imports System.Data.SqlClient
Public Class Form1
Inherits System.Windows.Forms.Form

Private Sub CargarDatos(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
Dim CadenaConexion As String = "Persist Security
Info=False;Integrated Security=SSPI;Initial Catalog=ventas1;server=(local)"
Dim con As New SqlConnection(CadenaConexion)
Dim dap As New SqlDataAdapter("up_VendedoresListarCOnTotal", con)
Dim dst As New DataSet
Dim par As SqlParameter
Try
With dap.SelectCommand
.CommandType = CommandType.StoredProcedure
par = .Parameters.Add("@@Total", SqlDbType.Int)
par.Direction = ParameterDirection.ReturnValue
End With
dap.Fill(dst, "Vendedores")
TextBox1.Text = par.Value
DataGrid1.DataSource = dst.Tables(0)
Catch
End Try
End Sub
End Class

ELABORAR EL MANTENIMIENTO DE LA TABLA VENDEDORES USANDO


PROCEDIMIENTOS ALMACENADOS

Procedimiento Almacenado Listar Vendedores


ALTER PROCEDURE up_ListaVendedores
As
Select CODVENDEDOR,NOMBRE From VENDEDORES

Procedimiento Almacenado para adicionar un vendedor


ALTER PROCEDURE up_VendedoresAdicionar
@CodVendedor int,
@Nombre VarChar(50) AS
Insert Into Vendedores(CodVendedor,Nombre) Values(@CodVendedor,@Nombre)

Procedimiento Almacenado para actualizar vendedor


ALTER PROCEDURE up_Vendedores_Actualizar
@CodVendedor int,
@Nombre VarChar(50)
AS
Update Vendedores
Set Nombre=@Nombre
Where CodVendedor = @Codvendedor
Sistema de Vendedores usando Visual Basic Net - 17 -
Procedimiento Almacenado para Eliminar vendedor
ALTER PROCEDURE up_Vendedores_Eliminar
@CodVendedor int
AS
Delete From Vendedores Where CodVendedor=@CodVendedor

1. Disear los siguientes formularios


Inserte un Datagrid 3 botones de comando ( con propiedad tag 1,2,3)

2. Adicionar un Nuevo formulario con las siguientes caractersticas

CODIGO DEL PRIMER FORMULARIO


Imports System.Data.SqlClient
Public Class Form1

Inherits System.Windows.Forms.Form
Dim CadenaConexion As String = "Persist Security Info=False;Integrated
Security=SSPI;Initial Catalog=ventas1;server=(local)"
Private con As New SqlConnection(CadenaConexion)
Private dap As New SqlDataAdapter("up_ListaVendedores", con)

Private Sub CargarDatos(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
dap.SelectCommand.CommandType = CommandType.StoredProcedure
dap.Fill(dst, "Vendedores")
DataGrid1.DataSource = dst.Tables(0)
End Sub
Sistema de Vendedores usando Visual Basic Net - 18 -
Private Sub MostrarDetalle(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnNuevo.Click, BtnEditar.Click, BtnEliminar.Click
pos = DataGrid1.CurrentRowIndex
opera = sender.Tag
Dim objManteEmpleado As New Form2
If objManteEmpleado.ShowDialog() = DialogResult.OK Then
dst.Tables(0).Clear()
dap.Fill(dst, "Vendedores")
DataGrid1.DataSource = dst.Tables(0)
End If
End Sub
End Class

CODIGO DEL FORMULARIO 2


Imports System.Data.SqlClient
Public Class Form2
Inherits System.Windows.Forms.Form

Private Sub LimpiarTextos()


TextBox1.Clear()
TextBox2.Clear()
End Sub
Private Sub MostrarEmpleado()
With dst.Tables(0).Rows(pos)
TextBox1.Text = .Item(0)
TextBox2.Text = .Item(1)
End With
End Sub

Private Sub MostrarDatos(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
If opera = Module1.Operacion.Nuevo Then
Me.Text = "Adicionar un Vendedor"
GroupBox1.Enabled = True
LimpiarTextos()
ElseIf opera = Module1.Operacion.Editar Then
Me.Text = "Actualizar un Vendedor"
GroupBox1.Enabled = True
MostrarEmpleado()
ElseIf opera = Module1.Operacion.Eliminar Then
Me.Text = "Eliminar un Vendedor"
GroupBox1.Enabled = False
MostrarEmpleado()
End If
End Sub
Private Sub Aceptar(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnAceptar.Click
Dim CadenaConexion As String = "Persist Security
Info=False;Integrated Security=SSPI;Initial Catalog=ventas1;server=(local)"
Dim con As New SqlConnection(CadenaConexion)
Dim cmd As New SqlCommand("", con)
Dim par As SqlParameter
Dim n As Integer
Try
con.Open()
cmd.CommandType = CommandType.StoredProcedure
If opera = Module1.Operacion.Nuevo Then
cmd.CommandText = "up_VendedoresAdicionar"
par = cmd.Parameters.Add("@CodVendedor", SqlDbType.Int)
par.Direction = ParameterDirection.Input
par.Value = TextBox1.Text
par = cmd.Parameters.Add("@Nombre", SqlDbType.VarChar, 50)
Sistema de Vendedores usando Visual Basic Net - 19 -
par.Direction = ParameterDirection.Input
par.Value = TextBox2.Text
n = cmd.ExecuteNonQuery()
If n <= 0 Then Throw New Exception("No se pudo adicionar el vendedor")
ElseIf opera = Module1.Operacion.Editar Then
cmd.CommandText = "up_Vendedores_Actualizar"
par = cmd.Parameters.Add("@CodVendedor", SqlDbType.Int)
par.Direction = ParameterDirection.Input
par.Value = Convert.ToInt32(TextBox1.Text)

par = cmd.Parameters.Add("@Nombre", SqlDbType.VarChar, 50)


par.Direction = ParameterDirection.Input
par.Value = TextBox2.Text
n = cmd.ExecuteNonQuery()
If n <= 0 Then Throw New Exception("No se pudo actualizar al vendedor")
ElseIf opera = Module1.Operacion.Eliminar Then
cmd.CommandText = "up_Vendedores_Eliminar"
par = cmd.Parameters.Add("@CodVendedor", SqlDbType.Int)
par.Direction = ParameterDirection.Input
par.Value = Convert.ToInt32(TextBox1.Text)
n = cmd.ExecuteNonQuery()
If n <= 0 Then Throw New Exception("No se pudo eliminar el vendedor")
End If
MessageBox.Show("Operacion realizada", "Aviso",
MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error)
Finally
If con.State = ConnectionState.Open Then con.Close()
End Try
End Sub
End Class

CODIGO DEL MODULO


Module Module1
Public dst As New DataSet
Public pos As Integer
Public opera As Operacion
Public Enum Operacion
Nuevo = 1
Editar = 2
Eliminar = 3
End Enum
End Module

ELABORAR LA APLICACION DE VENDEDORES USAND O PROCEDIMIENTOS


ALMACENADOS

Los procedimientos almacenados


ALTER PROCEDURE up_ListarVendedorCodigo
@CodVendedor int
As
Select IdVenta,Fecha,CodVendedor,Monto,Distrito
From VENTAS where CodVendedor=@CodVendedor

Elabore la aplicacin
Sistema de Vendedores usando Visual Basic Net - 20 -

Usando procedimientos almacenados Imports System.Data.SqlClienT


CODIGO DEL FORMULARIO
Public Class Form1
Inherits System.Windows.Forms.Form
Public dst As New DataSet

Dim CadenaConexion As String = "Persist Security Info=False;Integrated


Security=SSPI;Initial Catalog=ventas1;server=(local)"
Private con As New SqlConnection(CadenaConexion)
Private dap As New SqlDataAdapter("", con)
Dim par As SqlParameter

Private Sub CargarDatos(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
dap.SelectCommand.CommandType = CommandType.Text
dap.SelectCommand.CommandText = "Select CODVENDEDOR, NOMBRE from
VENDEDORES"
dap.Fill(dst, "VENDEDORES")
ComboBox1.DataSource = dst.Tables(0)
ComboBox1.DisplayMember = "NOMBRE"
ComboBox1.ValueMember = "CODVENDEDOR"
ComboBox1.SelectedIndex = 1
dap.SelectCommand.CommandText = "Select CODVENDEDOR, NOMBRE from
VENDEDORES"
dap.Fill(dst, "VENDEDORES1")
DataGrid1.DataSource = dst.Tables(1)

dap.SelectCommand.CommandText = "Select
IDVENTA,FECHA,CODVENDEDOR,MONTO,DISTRITO from VENtas"
dap.Fill(dst, "VENTAS")
DataGrid2.DataSource = dst.Tables(2)
dap.SelectCommand.CommandType = CommandType.StoredProcedure
dap.SelectCommand.CommandText = "up_ListarVendedorCodigo"
par = dap.SelectCommand.Parameters.Add("@CodVendedor", SqlDbType.Int)
par.Direction = ParameterDirection.Input
End Sub
Sistema de Vendedores usando Visual Basic Net - 21 -
Private Sub BtnFiltrar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnFiltrar.Click
Try
par.Value = ComboBox1.SelectedValue
Catch ex As Exception
MsgBox(ex.ToString)
Finally
If dst.Tables.Count > 2 Then
dst.Tables(2).Clear()
End If
dap.Fill(dst, "VENTAS")
DataGrid2.DataSource = dst.Tables(2)
End Try
End Sub

End Class

Continue con la parte de mantenimiento

También podría gustarte