Sei sulla pagina 1di 19

VISUAL BASIC .

NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
OBJETIVO
Crear una aplicacin para demostrar un caso de mantenimiento de datos con tablas de SQL Server usando procedimientos
almacenados.
Pasos
1. Crear una base de datos llamada FACTURACION_NET en SQL Server.
Use master
Go
CREATE DATABASE FACTURACION_NET
Go

2. Crear una tabla llamada DISTRITOS, escriba el siguiente cdigo:

CREATE TABLE Distritos


(
IdDistrito Char(10) Primary Key,
nom_dis VarChar(30) Not Null,
iniciales Char(3),
Zona varchar(30) not null
)
Go

3. Crear una tabla llamada CLIENTES, escriba el siguiente cdigo:

CREATE TABLE Clientes


(
IdCliente Char(10)Primary Key,
nom_cli VarChar(50) Not Null,
ape_cli VarChar(50) Not Null,
dir_cli VarChar(50) ,
tel_cli VarChar(8),
Ruc_cli Varchar(15),
DNI_cli Varchar(8) Not Null,
Email_cli Varchar(50),
IdDistrito Char(10) Foreign Key References Distritos(IdDistrito)
)
go

4. Crear un store procedure llamado SP_INSERTAR_CLIENTES en la base de datos para agregar nuevos clientes,
debe tener el siguiente cdigo:

CREATE PROCEDURE SP_INSERTAR_CLIENTES


@XIDCLIENTE CHAR(10),
@XNOM_CLI VARCHAR(50),
@XAPE_CLI VARCHAR(50),
@XDIR_CLI VARCHAR(50),
@XTEL_CLI VARCHAR(8),
@XRUC_CLI VARCHAR(15),
@XDNI_CLI VARCHAR(8),
@XEMAIL_CLI VARCHAR(50),
@XIDDISTRITO CHAR(10)
AS
BEGIN TRANSACTION
INSERT CLIENTES (IDCLIENTE,NOM_CLI,APE_CLI,DIR_CLI,TEL_CLI,RUC_CLI,DNI_CLI,EMAIL_CLI,IDDISTRITO)
VALUES(@XIDCLIENTE,@XNOM_CLI,@XAPE_CLI,@XDIR_CLI,@XTEL_CLI,@XRUC_CLI,@XDNI_CLI,@XEMAIL_CLI,@XI
DDISTRITO)

PAGINA 1
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
BEGIN
ROLLBACK TRANSACTION
END
GO

5. Crear un store procedure llamado SP_ELIMINAR_CLIENTES en la base de datos para agregar nuevos clientes,
debe tener el siguiente cdigo:

CREATE PROCEDURE SP_ELIMINAR_CLIENTES


@XIDCLIENTE CHAR(10)
AS
BEGIN TRANSACTION
DELETE FROM CLIENTES WHERE IDCLIENTE=@XIDCLIENTE

IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
BEGIN
ROLLBACK TRANSACTION
END
GO

6. Crear un store procedure llamado SP_BUSCAR_CLIENTES en la base de datos para localizar clientes, debe tener
el siguiente cdigo:

CREATE PROCEDURE SP_BUSCAR_CLIENTES


AS
SELECT
C.IDCLIENTE,C.NOM_CLI,C.APE_CLI,C.DIR_CLI,C.TEL_CLI,C.RUC_CLI,C.DNI_CLI,C.EMAIL_CLI,D.NOM_DIS,C.IDDISTRIT
O
FROM CLIENTES C INNER JOIN DISTRITOS D ON (C.IDDISTRITO=D.IDDISTRITO)
GO

7. Crear un store procedure llamado SP_ACTUALIZAR_CLIENTES en la base de datos para actualizar clientes,
debe tener el siguiente cdigo:

CREATE PROCEDURE SP_ACTUALIZAR_CLIENTES


@XIDCLIENTE CHAR(10),
@XNOM_CLI VARCHAR(50),
@XAPE_CLI VARCHAR(50),
@XDIR_CLI VARCHAR(50),
@XTEL_CLI VARCHAR(8),
@XRUC_CLI VARCHAR(15),
@XDNI_CLI VARCHAR(8),
@XEMAIL_CLI VARCHAR(50),
@XIDDISTRITO CHAR(10)
AS
BEGIN TRANSACTION
UPDATE CLIENTES SET NOM_CLI=@XNOM_CLI,
APE_CLI=@XAPE_CLI,
DIR_CLI=@XDIR_CLI,
TEL_CLI=@XTEL_CLI,
RUC_CLI=@XRUC_CLI,
DNI_CLI=@XDNI_CLI,

PAGINA 2
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
EMAIL_CLI=@XEMAIL_CLI,
IDDISTRITO=@XIDDISTRITO
WHERE IDCLIENTE=@XIDCLIENTE
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
BEGIN
ROLLBACK TRANSACTION
END
GO

8. Usando el Analizador de Consultas de SQL Server proceda a ingresar los siguientes registros:
Para la tabla Distritos:
Insert Distritos Values ('Callao-01','Callao','CLL','Callao')
Insert Distritos Values ('Callao-02','Bellavista','BLL','Callao')
Insert Distritos Values ('Callao-03','Carmen de la Legua','CDL','Callao')
Insert Distritos Values ('Callao-04','La Perla','PER','Callao')
Insert Distritos Values ('Callao-05','La Punta','PTA','Callao')
Insert Distritos Values ('Callao-06','Ventanilla','VEN','Callao')

Insert Distritos Values ('Lima-01','Lima(Cercado)','LIM','Lima')


Insert Distritos Values ('Lima-02','Ancon','ANC','Lima')
Insert Distritos Values ('Lima-03','Ate Vitarte','ATE','Lima')
Insert Distritos Values ('Lima-04','Barranco','BAR','Lima')
Insert Distritos Values ('Lima-05','Brea','BRE','Lima')
Insert Distritos Values ('Lima-06','Carabayllo','CRB','Lima')
Insert Distritos Values ('Lima-07','Comas','COM','Lima')
Insert Distritos Values ('Lima-08','Chaclacayo','CHC','Lima')
Insert Distritos Values ('Lima-09','Chorrillos','CHO','Lima')
Insert Distritos Values ('Lima-10','El Agustino','AGU','Lima')

Insert Distritos Values ('Lima-11','Jesus Maria','JMA','Lima')


Insert Distritos Values ('Lima-12','La Molina','MOL','Lima')
Insert Distritos Values ('Lima-13','La Victoria','VCT','Lima')
Insert Distritos Values ('Lima-14','Lince','LIN','Lima')
Insert Distritos Values ('Lima-15','Lurigancho(Chosica)','LRG','Lima')
Insert Distritos Values ('Lima-16','Lurin','LUR','Lima')
Insert Distritos Values ('Lima-17','Magdalena Del Mar','MAG','Lima')
Insert Distritos Values ('Lima-18','Miraflores','MIR','Lima')
Insert Distritos Values ('Lima-19','Pachacamac','PCH','Lima')
Insert Distritos Values ('Lima-20','Pucusana','PUC','Lima')

Insert Distritos Values ('Lima-21','Pueblo Libre','PLI','Lima')


Insert Distritos Values ('Lima-22','Puente Piedra','PTP','Lima')
Insert Distritos Values ('Lima-23','Punta Negra','NEG','Lima')
Insert Distritos Values ('Lima-24','Punta Hermosa','HER','Lima')
Insert Distritos Values ('Lima-25','Rimac','RIM','Lima')
Insert Distritos Values ('Lima-26','San Bartolo','SBR','Lima')
Insert Distritos Values ('Lima-27','San Isidro','SIS','Lima')
Insert Distritos Values ('Lima-28','Independencia','IND','Lima')
Insert Distritos Values ('Lima-29','San Juan De Miraflores','SJM','Lima')
Insert Distritos Values ('Lima-30','San Luis','SLU','Lima')

PAGINA 3
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA

Insert Distritos Values ('Lima-31','San Martin de Porres','SMA','Lima')


Insert Distritos Values ('Lima-32','San Miguel','SMI','Lima')
Insert Distritos Values ('Lima-33','Satiago De Surco','SUR','Lima')
Insert Distritos Values ('Lima-34','Surquillo','SRQ','Lima')
Insert Distritos Values ('Lima-35','Villa Maria Del Triunfo','VMA','Lima')
Insert Distritos Values ('Lima-36','Nuevo San Juan','NSJ','Lima')
Insert Distritos Values ('Lima-37','Santa Maria del Mar','SMR','Lima')
Insert Distritos Values ('Lima-38','Sta Rosa','SRO','Lima')
Insert Distritos Values ('Lima-39','Los Olivos','LOL','Lima')
Insert Distritos Values ('Lima-40','Cieneguilla','CNG','Lima')

Insert Distritos Values ('Lima-41','San Borja','CBO','Lima')


Insert Distritos Values ('Lima-42','Villa El Salvador','VES','Lima')
Insert Distritos Values ('Lima-43','Santa Anita','SAN','Lima')

Para la tabla Clientes:


Insert Clientes Values ('Cli001','Manuel','Carrin Delgado','Calle 29 Coop. Primavera Mz. R1. Lote 16','557-
2147','12345678910','12345678','MCDelg@Hotmail.com','Lima-14')
Insert Clientes Values ('Cli002','Ana','Puelles Salgado','Jr. Viru 406 N8','481-
6507','12345678901','40344427','APuelles@Hotmail.com','Lima-10')
Insert Clientes Values ('Cli003','Daniel','Zapata Ancimas','Jr. Horacio Urteaga 314 ','920-
1090','12346778910','40301579','DZapata@Hotmail.com','Lima-28')
Insert Clientes Values ('Cli004','Fernando','Talledo Cervera','Residencial Rio Sta Mz G Lte 12','539-
0886','21414956715','41495671','Ftc3298@Hotmail.com','Lima-39')

9. Crear en el disco C una carpeta con el nombre Facturacion_NET


10. Crear un proyecto con el nombre de Facturacion_NET
11. Disear el siguiente formulario:

PAGINA 4
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
El formulario debe tener los siguientes controles:

Para el logotipo crear un Control PictureBox llamado PictureBox1, para el Cdigo un TextBox llamado
TXTIDCLIENTE, para Nombres un TextBox llamado TXTNOM_CLI, para Apellidos un TextBox llamado
TXTAPE_CLI, para Telfono un TextBox llamado TXTTELF_CLI, para RUC un TextBox llamado TXTRUC_CLI,
para DNI un TextBox llamado TXTDNI_CLI, para Distritos un ComboBox llamado cmbdistrito, para Direccin un
TextBox llamado TXTDIR_CLI, para EMail un control TextBox llamado TXTEMAIL_CLI.

Crear un CommandButton para Insertar llamado BTN_INSERTAR_GUARDAR, un CommandButton para Editar


llamado BTN_EDITAR_CANCELAR, un CommandButton para Eliminar llamado BTN_ELIMINAR, un
CommandButton para Aceptar llamado BTNACEPTAR, un CommandButton para Cancelar llamado BTNCANCELAR.

Crear una etiqueta llamada LBLETIQUETA, ubicarla debajo del botn Eliminar (Observe la etiqueta con borde en
el diseo).

Debajo de la etiqueta, crear in TextBox llamado TXTBUSCAR.

Adems crear un GroupBox para agrupar a los controles de campo a filtrar. Dentro de este GroupBox debe crear
botones de opcin RadioButton, para DNI debe llamarse RB_DNI, para Apellidos debe llamarse RB_APELLIDO,
para Nombres debe llamarse RB_NOMBRE, para cdigo debe llamarse RB_CODIGO.

En la parte inferior, crear un DataGrid con titulo llamado Listado de Clientes, debe tener como nombre DataGrid1.

12. El formulario creado debe llamarse MAN_CLIENTES


13. Agregar un modulo al proyecto y grabarlo como MODULO_FORMULARIOS.
14. Dentro del mdulo agregado programar el siguiente cdigo para definir la conexin con la base de datos:
Antes de Module:
Imports System.Data
Imports System.Data.SqlClient

Despus de Module:

Public CN As New SqlConnection()

15. Despus de crear la variable de Conexin, crear los siguiente procedimiento para el control del foco:

Public Sub Edit_Foco(ByVal sender As Object, ByVal e As EventArgs)


sender.backcolor = Color.Gold
sender.forecolor = Color.Black
End Sub

Public Sub Edit_Desenfocado(ByVal sender As Object, ByVal e As EventArgs)


sender.backcolor = Color.White
sender.forecolor = Color.Black
End Sub

Public Sub Foco(ByVal sender As Object, ByVal e As EventArgs)


sender.backcolor = Color.White
sender.forecolor = Color.Black
End Sub

Public Sub Desenfocado(ByVal sender As Object, ByVal e As EventArgs)


sender.backcolor = Color.White
sender.forecolor = Color.Black
End Sub

PAGINA 5
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA

16. Programar en el formulario, Antes de Public Class declarar la siguiente instruccin para tener acceso al Cliente de
SQL Server y acceder a los objetos de la base de datos de SQL Server.

Imports System.Data
Imports System.Data.SqlClient

17. Despus de Public Class, declarar las siguientes variables:

Private INSERTANDO As Boolean = False


Private EDITANDO As Boolean = False
Private IDDISTRITO As String
Private DS As New DataSet()

18. Crear un procedimiento llamado Iniciar_Controles que tenga el siguiente cdigo:

Private Sub INICIAR_CONTROLES()


Dim DV As New DataView(DS.Tables("CLIENTES"))
TXTIDCLIENTE.Text = DV.Item(0)("IDCLIENTE")
TXTNOM_CLI.Text = DV.Item(0)("NOM_CLI")
TXTAPE_CLI.Text = DV.Item(0)("APE_CLI")
TXTTELF_CLI.Text = DV.Item(0)("TEL_CLI")
TXTRUC_CLI.Text = DV.Item(0)("RUC_CLI")
TXTDNI_CLI.Text = DV.Item(0)("DNI_CLI")
cmbdistrito.Text = DV.Item(0)("NOM_DIS")
TXTDIR_CLI.Text = DV.Item(0)("DIR_CLI")
TXTEMAIL_CLI.Text = DV.Item(0)("EMAIL_CLI")
DV = Nothing
End Sub

19. Crear un procedimiento llamado Llenar_Controles que tenga el siguiente cdigo:

Private Sub llenar_controles(ByVal valor As String)


Dim DV As New DataView(DS.Tables("CLIENTES"))
DV.RowFilter = "IDCLIENTE ='" + valor + "'"
TXTIDCLIENTE.Text = DV.Item(0)("IDCLIENTE")
TXTNOM_CLI.Text = DV.Item(0)("NOM_CLI")
TXTAPE_CLI.Text = DV.Item(0)("APE_CLI")
TXTTELF_CLI.Text = DV.Item(0)("TEL_CLI")
TXTRUC_CLI.Text = DV.Item(0)("RUC_CLI")
TXTDNI_CLI.Text = DV.Item(0)("DNI_CLI")
cmbdistrito.Text = DV.Item(0)("NOM_DIS")
TXTDIR_CLI.Text = DV.Item(0)("DIR_CLI")
TXTEMAIL_CLI.Text = DV.Item(0)("EMAIL_CLI")
DV = Nothing
End Sub

20. Crear un procedimiento llamado Bloquear_Controles que tenga el siguiente cdigo:

Private Sub BLOQUEAR_CONTROLES(ByVal VALOR As Boolean)


TXTNOM_CLI.ReadOnly = VALOR
TXTAPE_CLI.ReadOnly = VALOR
TXTTELF_CLI.ReadOnly = VALOR

PAGINA 6
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
TXTRUC_CLI.ReadOnly = VALOR
TXTDNI_CLI.ReadOnly = VALOR
cmbdistrito.Enabled = Not VALOR
TXTDIR_CLI.ReadOnly = VALOR
TXTEMAIL_CLI.ReadOnly = VALOR
End Sub

21. Programar el evento Load del formulario con el siguiente cdigo:

Try
CN.ConnectionString = "DATA SOURCE=(LOCAL);INITIAL CATALOG=FACTURACION_NET;USER ID=SA"
CN.Open()

Dim DA As New SqlDataAdapter("SP_BUSCAR_CLIENTES", CN)


DA.SelectCommand.CommandType = CommandType.StoredProcedure
DA.SelectCommand.ExecuteNonQuery()

DA.Fill(DS, "CLIENTES")
DataGrid1.DataSource = DS.Tables("CLIENTES")
DA = New SqlDataAdapter("select * from distritos", CN)
DA.Fill(DS, "DISTRITOS")
Dim DR As DataRow
For Each DR In DS.Tables("DISTRITOS").Rows
cmbdistrito.Items.Add(DR("NOM_DIS"))
Next
Call INICIAR_CONTROLES()
Call BLOQUEAR_CONTROLES(True)

Catch EX As Exception
MsgBox(EX.Message)
End Try

22. Crear una funcin llamada f_validar() que retorne un valor booleano para determinar si ya existe el cliente que se
desea registrar como nuevo:

Private Function f_validar() As Boolean


Dim dv As New DataView(DS.Tables("clientes"))
dv.RowFilter = "nom_cli='" + TXTNOM_CLI.Text + "' and ape_cli ='" + TXTAPE_CLI.Text + "'"
If dv.Count > 0 Then
MsgBox("El Nombre y Apellido ya existen")
TXTNOM_CLI.Focus()
TXTNOM_CLI.BackColor = Color.Red
TXTAPE_CLI.BackColor = Color.Red
TXTNOM_CLI.ForeColor = Color.White
TXTAPE_CLI.ForeColor = Color.White
Return False
End If

dv = New DataView(DS.Tables("clientes"))
dv.RowFilter = "ruc_cli ='" + TXTRUC_CLI.Text + "'"
If dv.Count > 0 Then
MsgBox("El Ruc ya existe")

PAGINA 7
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
TXTRUC_CLI.Focus()
TXTRUC_CLI.BackColor = Color.Red
TXTRUC_CLI.BackColor = Color.White
Return False
End If

dv = New DataView(DS.Tables("clientes"))
dv.RowFilter = "dni_cli ='" + TXTDNI_CLI.Text + "'"
If dv.Count > 0 Then
MsgBox("El DNI ya existe")
TXTDNI_CLI.Focus()
TXTDNI_CLI.BackColor = Color.Red
TXTDNI_CLI.ForeColor = Color.White
Return False
End If
dv = Nothing
Return True
End Function

23. Crear un procedimiento llamado Refrescar que permita cargar los datos considerando los nuevos registros
agregados:

Private Sub REFRESCAR()


Dim DA As New SqlDataAdapter("SP_BUSCAR_CLIENTES", CN)
DA.SelectCommand.CommandType = CommandType.StoredProcedure
DS.Tables("CLIENTES").Clear()
DA.Fill(DS, "CLIENTES")
End Sub

24. Crear en la base de datos una tabla llamada Indices y debe tener el siguiente cdigo :

CREATE TABLE indices(


tabla varchar(20),
indice int
)
Go

25. Aadir a la tabla Indices un registro considerando el valor CLIENTES y como ndice 0, hacerlo desde el
analizador de consultas.

INSERT INDICES VALUES('CLIENTES',0)

26. Crear en la base de datos un procedimiento almacenado llamado SP_NUEVO_CODIGO y debe tener el siguiente cdigo
(este procedimiento se encargar de generar el nuevo cdigo para el Cliente):

CREATE PROCEDURE SP_NUEVO_CODIGO


@TABLA VARCHAR(20),
@INDICE INT OUTPUT
AS

PAGINA 8
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
SELECT @INDICE=INDICE
FROM INDICES WHERE TABLA=@TABLA
GO

27. Crear en el mdulo del proyecto la siguiente funcin:

Public Function f_generar_codigo(ByVal tabla As String) As String


Dim cmd As New SqlCommand()
Dim prm As SqlParameter

Try
cmd.Connection = CN
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "SP_NUEVO_CODIGO"

prm = New SqlParameter("@tabla", tabla)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 20
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter()


prm.ParameterName = "@indice"
prm.SqlDbType = SqlDbType.Int
prm.Direction = ParameterDirection.Output
cmd.Parameters.Add(prm)

cmd.ExecuteNonQuery()

Catch ex As Exception
f_generar_codigo = "FALLO"
Exit Function
End Try

Dim xindice As Integer = cmd.Parameters("@indice").Value + 1

Dim Ncmd As New SqlCommand()


Ncmd.CommandText = "SP_INCREMENTAR"
Ncmd.CommandType = CommandType.StoredProcedure
Ncmd.Connection = CN

prm = New SqlParameter("@TABLA", tabla)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 20
prm.Direction = ParameterDirection.Input
Ncmd.Parameters.Add(prm)

Ncmd.ExecuteNonQuery()

Select Case UCase(tabla)


Case "USUARIOS"
f_generar_codigo = "Usu" + Format(xindice, "000")
Case "DISTRITO_LIMA"
f_generar_codigo = "Lima-" + Format(xindice, "00")
Case "DISTRITO_CALLAO"

PAGINA 9
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
f_generar_codigo = "Callao-" + Format(xindice, "00")
Case "CLIENTES"
Return "Cli" + Format(xindice, "000")
Case "FACTURAS"
f_generar_codigo = Format(xindice, "0000000000")
Case "ARTICULOS"
f_generar_codigo = "Art" + Format(xindice, "000")
Case "BOLETA"
f_generar_codigo = Format(xindice, "0000000000")
End Select
End Function

28. Crear un procedimiento llamado grabar_nuevo que permita grabar el nuevo registro ingresado:

Private Sub grabar_nuevo()


Dim nuevo_codigo As String = f_generar_codigo("CLIENTES")
If nuevo_codigo = "FALLO" Then
MsgBox("FALLO LA AUTOGENERACION DEL CODIGO")
Exit Sub
End If
TXTIDCLIENTE.Text = nuevo_codigo
Try
Dim cmd As New SqlCommand()
Dim prm As SqlParameter
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = CN
cmd.CommandText = "SP_INSERTAR_CLIENTES"

prm = New SqlParameter("@XIDCLIENTE", TXTIDCLIENTE.Text)


prm.SqlDbType = SqlDbType.Char : prm.Size = 10
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XNOM_CLI", TXTNOM_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 50
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XAPE_CLI", TXTAPE_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 50
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XDIR_CLI", TXTDIR_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 50
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XTEL_CLI", TXTTELF_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 8
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

PAGINA 10
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA

prm = New SqlParameter("@XRUC_CLI", TXTRUC_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 15
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XDNI_CLI", TXTDNI_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 8
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XEMAIL_CLI", TXTEMAIL_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 50
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XIDDISTRITO", IDDISTRITO)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 10
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

cmd.ExecuteNonQuery()

Catch EX As Exception
MsgBox(EX.Message)
Exit Sub
End Try

MsgBox("los Datos se Grabaron Correctamente")


Call REFRESCAR()
End Sub

29. Crear un procedimiento llamado Grabar_Actualizacion para mantener grabados los cambios realizados y debe
tener el siguiente cdigo:

Private Sub grabar_actualizacion()


Try
Dim cmd As New SqlCommand()
Dim prm As SqlParameter
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = CN
cmd.CommandText = "SP_ACTUALIZAR_CLIENTES"

prm = New SqlParameter("@XIDCLIENTE", TXTIDCLIENTE.Text)


prm.SqlDbType = SqlDbType.Char : prm.Size = 10
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XNOM_CLI", TXTNOM_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 50
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

PAGINA 11
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA

prm = New SqlParameter("@XAPE_CLI", TXTAPE_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 50
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XDIR_CLI", TXTDIR_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 50
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XTEL_CLI", TXTTELF_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 8
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XRUC_CLI", TXTRUC_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 15
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XDNI_CLI", TXTDNI_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 8
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XEMAIL_CLI", TXTEMAIL_CLI.Text)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 50
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

prm = New SqlParameter("@XIDDISTRITO", IDDISTRITO)


prm.SqlDbType = SqlDbType.VarChar : prm.Size = 10
prm.Direction = ParameterDirection.Input
cmd.Parameters.Add(prm)

cmd.ExecuteNonQuery()

Catch EX As Exception
MsgBox(EX.Message)
Exit Sub
End Try
MsgBox("los Datos se Actualizaron Correctamente")
Call REFRESCAR()
End Sub

30. Crear un procedimiento llamado Buscar que asuma como parmetro un valor booleano, debe tener el siguiente
cdigo:

Private Sub buscar(ByVal valor As Boolean)


RB_CODIGO.Enabled = valor
RB_NOMBRE.Enabled = valor

PAGINA 12
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
RB_APELLIDO.Enabled = valor
RB_DNI.Enabled = valor
TXTBUSCAR.Enabled = valor
BTNACEPTAR.Enabled = valor
BTNCANCELAR.Enabled = valor
DataGrid1.Enabled = valor
End Sub

31. Agregar en el formulario un procedimiento llamado Limpiar con el siguiente contenido:

Private Sub limpiar()


TXTIDCLIENTE.Text = ""
TXTNOM_CLI.Text = ""
TXTAPE_CLI.Text = ""
TXTTELF_CLI.Text = ""
TXTRUC_CLI.Text = ""
TXTDNI_CLI.Text = ""
cmbdistrito.Text = ""
TXTDIR_CLI.Text = ""
TXTEMAIL_CLI.Text = ""
End Sub

32. Crear un procedimiento llamado Colors_Edit que asuma como parmetro un valor booleano, debe tener el siguiente
cdigo:

Private Sub colors_edit(ByVal valor As Boolean)


If valor = True Then
AddHandler TXTNOM_CLI.Enter, AddressOf Edit_Foco
AddHandler TXTNOM_CLI.Leave, AddressOf Edit_Desenfocado

AddHandler TXTAPE_CLI.Enter, AddressOf Edit_Foco


AddHandler TXTAPE_CLI.Leave, AddressOf Edit_Desenfocado

AddHandler TXTTELF_CLI.Enter, AddressOf Edit_Foco


AddHandler TXTTELF_CLI.Leave, AddressOf Edit_Desenfocado

AddHandler TXTRUC_CLI.Enter, AddressOf Edit_Foco


AddHandler TXTRUC_CLI.Leave, AddressOf Edit_Desenfocado

AddHandler TXTDNI_CLI.Enter, AddressOf Edit_Foco


AddHandler TXTDNI_CLI.Leave, AddressOf Edit_Desenfocado

AddHandler cmbdistrito.Enter, AddressOf Edit_Foco


AddHandler cmbdistrito.Leave, AddressOf Edit_Desenfocado

AddHandler TXTDIR_CLI.Enter, AddressOf Edit_Foco


AddHandler TXTDIR_CLI.Leave, AddressOf Edit_Desenfocado

AddHandler TXTEMAIL_CLI.Enter, AddressOf Edit_Foco


AddHandler TXTEMAIL_CLI.Leave, AddressOf Edit_Desenfocado
End If

PAGINA 13
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA

If valor = False Then


AddHandler TXTNOM_CLI.Enter, AddressOf Foco
AddHandler TXTNOM_CLI.Leave, AddressOf desenfocado

AddHandler TXTAPE_CLI.Enter, AddressOf Foco


AddHandler TXTAPE_CLI.Leave, AddressOf desenfocado

AddHandler TXTTELF_CLI.Enter, AddressOf Foco


AddHandler TXTTELF_CLI.Leave, AddressOf desenfocado

AddHandler TXTRUC_CLI.Enter, AddressOf Foco


AddHandler TXTRUC_CLI.Leave, AddressOf desenfocado

AddHandler TXTDNI_CLI.Enter, AddressOf Foco


AddHandler TXTDNI_CLI.Leave, AddressOf desenfocado

AddHandler cmbdistrito.Enter, AddressOf Foco


AddHandler cmbdistrito.Leave, AddressOf desenfocado
AddHandler TXTDIR_CLI.Enter, AddressOf Foco
AddHandler TXTDIR_CLI.Leave, AddressOf desenfocado
AddHandler TXTEMAIL_CLI.Enter, AddressOf Foco
AddHandler TXTEMAIL_CLI.Leave, AddressOf desenfocado
End If
End Sub

33. Programar el evento Clic del botn Insertar con el siguiente cdigo:

If BTN_INSERTAR_GUARDAR.Text = "&Guardar" Then


Dim correcto As Boolean
If INSERTANDO = True Then
correcto = f_validar()
If correcto = False Then Exit Sub
End If
If INSERTANDO = True Then INSERTANDO = False : Call grabar_nuevo()
If EDITANDO = True Then EDITANDO = False : Call grabar_actualizacion()
BTN_INSERTAR_GUARDAR.Text = "&Insertar"
BTN_EDITAR_CANCELAR.Text = "&Editar"
BLOQUEAR_CONTROLES(True)
BTN_ELIMINAR.Enabled = True
Call buscar(True)
Call colors_edit(False)
Else
INSERTANDO = True
colors_edit(True)
BTN_INSERTAR_GUARDAR.Text = "&Guardar"
BTN_EDITAR_CANCELAR.Text = "&Cancelar"
Call limpiar()
BLOQUEAR_CONTROLES(False)
BTN_ELIMINAR.Enabled = False
Call buscar(False)
End If

PAGINA 14
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA

34. Programar el evento Clic del botn Editar con el siguiente cdigo:

If BTN_EDITAR_CANCELAR.Text = "&Cancelar" Then


Dim respuesta As MsgBoxResult
respuesta = MsgBox("Desea Cancelar Cambios", MsgBoxStyle.YesNoCancel + MsgBoxStyle.Exclamation,
"SISTEMA DE FACTURACION .NET")
If respuesta = MsgBoxResult.Yes Then
If INSERTANDO = True Then Call INICIAR_CONTROLES() : INSERTANDO = False
If EDITANDO = True Then Call llenar_controles(TXTIDCLIENTE.Text) : EDITANDO = False
BLOQUEAR_CONTROLES(True)
BTN_EDITAR_CANCELAR.Text = "&Editar"
BTN_INSERTAR_GUARDAR.Text = "&Insertar"
BTN_ELIMINAR.Enabled = True
colors_edit(False)
Call buscar(True)
End If

Else
BLOQUEAR_CONTROLES(False)
colors_edit(True)
EDITANDO = True
BTN_EDITAR_CANCELAR.Text = "&Cancelar"
BTN_INSERTAR_GUARDAR.Text = "&Guardar"
BTN_ELIMINAR.Enabled = False
Call buscar(False)
End If

35. Programar el evento Clic del botn Eliminar con el siguiente cdigo:

Dim RESPUESTA As MsgBoxResult


RESPUESTA = MsgBox("Desea Eliminar el Cliente " + TXTIDCLIENTE.Text, MsgBoxStyle.YesNoCancel +
MsgBoxStyle.Exclamation, "SISTEMA DE FACTURACION .NET")
If RESPUESTA = MsgBoxResult.Yes Then
Dim CMD As New SqlCommand()
CMD.Connection = CN
CMD.CommandType = CommandType.StoredProcedure
CMD.CommandText = "SP_ELIMINAR_CLIENTES"
Dim PRM As SqlParameter
PRM = New SqlParameter("@XIDCLIENTE", TXTIDCLIENTE.Text)
PRM.SqlDbType = SqlDbType.Char : PRM.Size = 10
PRM.Direction = ParameterDirection.Input
CMD.Parameters.Add(PRM)
CMD.ExecuteNonQuery()

Call INICIAR_CONTROLES()
Call REFRESCAR()
End If

36. Programar el evento CheckedChanged del RadioButton DNI con el siguiente cdigo:

LBLETIQUETA.Text = "INGRESE EL D.N.I. A BUSCAR"

PAGINA 15
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
TXTBUSCAR.Focus()

37. Programar el evento CheckedChanged del RadioButton Apellidos con el siguiente cdigo:

LBLETIQUETA.Text = "INGRESE EL APELLIDO A BUSCAR"


TXTBUSCAR.Focus()

38. Programar el evento CheckedChanged del RadioButton Nombres con el siguiente cdigo:

LBLETIQUETA.Text = "INGRESE EL NOMBRE A BUSCAR"


TXTBUSCAR.Focus()

39. Programar el evento CheckedChanged del RadioButton Codigo con el siguiente cdigo:

LBLETIQUETA.Text = "INGRESE EL CODIGO A BUSCAR"


TXTBUSCAR.Focus()

40. Programar el evento TextChanged de la caja de texto TxtBuscar con el siguiente cdigo:

If RB_DNI.Checked = True Then


Dim DV As New DataView(DS.Tables("CLIENTES"))
DV.RowFilter = "DNI_CLI LIKE '" + TXTBUSCAR.Text + "%'"
DataGrid1.DataSource = DV
DV = Nothing
End If

If RB_NOMBRE.Checked = True Then


Dim DV As New DataView(DS.Tables("CLIENTES"))
DV.RowFilter = "NOM_CLI LIKE '" + TXTBUSCAR.Text + "%'"
DataGrid1.DataSource = DV
DV = Nothing
End If

If RB_APELLIDO.Checked = True Then


Dim DV As New DataView(DS.Tables("CLIENTES"))
DV.RowFilter = "APE_CLI LIKE '" + TXTBUSCAR.Text + "%'"
DataGrid1.DataSource = DV
DV = Nothing
End If

If RB_CODIGO.Checked = True Then


Dim DV As New DataView(DS.Tables("CLIENTES"))
DV.RowFilter = "IDCLIENTE LIKE '" + TXTBUSCAR.Text + "%'"
DataGrid1.DataSource = DV
DV = Nothing
End If

41. Programar el evento SelectedIndexChanged de la lista Distritos con el siguiente cdigo:

Dim DV As New DataView(DS.Tables("DISTRITOS"))


DV.RowFilter = "NOM_DIS = '" + cmbdistrito.Text + "'"
IDDISTRITO = DV.Item(0)("IDDISTRITO")
DV = Nothing

PAGINA 16
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA

42. Programar el evento CurrentCellChanged del DataGrid1 con el siguiente cdigo:

Try
Dim CELDA As DataGridCell
CELDA = DataGrid1.CurrentCell
TXTIDCLIENTE.Text = DataGrid1(CELDA.RowNumber, 0)
TXTNOM_CLI.Text = DataGrid1(CELDA.RowNumber, 1)
TXTAPE_CLI.Text = DataGrid1(CELDA.RowNumber, 2)
TXTTELF_CLI.Text = DataGrid1(CELDA.RowNumber, 4)
TXTRUC_CLI.Text = DataGrid1(CELDA.RowNumber, 5)
TXTDNI_CLI.Text = DataGrid1(CELDA.RowNumber, 6)
cmbdistrito.Text = DataGrid1(CELDA.RowNumber, 8)
TXTDIR_CLI.Text = DataGrid1(CELDA.RowNumber, 3)
TXTEMAIL_CLI.Text = DataGrid1(CELDA.RowNumber, 7)
DataGrid1.Select(DataGrid1.CurrentRowIndex)
Catch EX As Exception
MsgBox("Debe Seleccionar Un registro Valido", MsgBoxStyle.Exclamation + MsgBoxStyle.OKOnly,
"SISTEMA DE FACTURACION .NET")
End Try

43. Al ejecutar el proyecto, el formulario debe mostrarse as tal como se indica:

PAGINA 17
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA

44. Programar el cdigo necesario para que al pulsar el botn Aceptar, se considere el filtro indicado, segn la
seleccin hecha por el campo a filtrar.
45. Programe adems cdigo necesario para el botn Cancelar y recupere todos los datos y los muestre en la
cuadricula indicada.

CASO A DESARROLLAR

Usando la base de Datos FACTURACION_NET, crear un formulario que permita realizar el mantenimiento de la tabla de
ARTICULOS usando store procedures, el formulario debe tener la siguiente presentacin:

La estructura de la tabla ARTICULOS es la siguiente:

PAGINA 18
VISUAL BASIC .NET
MANTENIMIENTO DE DATOS
REGISTRO DE CLIENTES

LABORATORIO
PROF. ING. DANTE GARCIA
Considerar los siguientes registros:

Insert Articulos Values ('Art001', 'CL18','PC, Mac.', 'Resolucin de imgen de 640 x 480 captura de imagenes 640 x 480
compresin JPEG, profundidad de color de 24 Bits con visor optico integrado, interfaz USB a 100 Kbps con flash integrado',
366.66, 10)

Insert Articulos Values ('Art002', 'CL50','PC, Mac.', 'Manual 4 modos: 1600Z 1200, 1290 x 960, 640 x 480 VGA, 1280 x 960
(BN), Resolucion de imagen hasta 1600 x 1200 con tecnologia PhotoGenie, interfase RS-232, velocidad de transmision hasta 230,
400 cps; cuatro modos de flash', 1345.04, 5)

Insert Articulos Values ('Art003', 'MAVICA FD85', 'PC, Mac.','600 x 480, graba en disquete', 798.00, 10)

Insert Articulos Values ('Art004', 'MAVICA FD95', 'PC, Mac.','1600 x 1200, graba en disquete y memoria', 1621.00, 10)

Insert Articulos Values ('Art005', 'PHOTO PC 650', 'PC.','1.09 mega pixeles. 8MB estndar, 64MB mximo memoria, pantalla
LCD color 1.8" TFT, capacidad para 88 imgenes mximo, conectividad serial y USB', 420.00, 10)

Insert Articulos Values ('Art006', 'PHOTO PC 750Z', 'PC.','1.25 mega pixeles. 12MB estndar, 64MB mximo memoria,
pantalla LCD color 2.0" solar Assist, capacidad para 178 imgenes mximo, zoom digital 2x, conectividad serial y USB', 680.00,
5)

Al ejecutar el proyecto debe mostrarse as:

PAGINA 19

Potrebbero piacerti anche