Este documento describe los pasos para desarrollar un sistema de contactos sencillo llamado sysAgenda utilizando Visual Basic .NET y SQL Server. Incluye la creación de la base de datos, tablas, procedimientos almacenados, conexión con VB.NET, y diseño de formularios para inicio de sesión, pantalla principal, y mantenimiento de datos. El objetivo es explicar de manera detallada el proceso de desarrollo de una aplicación cliente-servidor siguiendo los pasos secuenciales.
Factores que intervienen en la Administración por Valores.pdf
Manual Visual Basic .NET SQL Server paso a paso
1. Método paso a paso…
Visual Basic .Net
SQL Server
- Desarrollando un Mini Sistema -
Armando Tacza R..
atacza@gmail.com
http://www.facebook.com/atacza
http://twitter.com/atak
Edición: ® 2009
2. Taller Programación Visual Basic.NET paso a paso 2009
Curso Taller Programación Visual Basic .NET Paso a Paso
1. Introducción
2. Herramientas Necesarias
3. Análisis Básico del Sistema
4. Base de Datos SQL Server 2005 XE
5. Tablas
6. Procedimientos Almacenados
7. Conexión Visual Basic.NET con SQL Server 2005 XE
8. Interfaz del usuario Windows Forms con Visual Basic .NET
9. Formulario de Inicio de Sesión (usuario & Password)
10. Formulario Principal
11. Formulario de Mantenimiento de Datos
12. Reportes Crystal Report
13. Pruebas de Funcionalidad
http://systemtak.blogspot.com [ 2 / 36 ] email: systemtak@gmail.com
3. Taller Programación Visual Basic.NET paso a paso 2009
Introducción
A todos mis amigos que se inician en el fabuloso mundo del Desarrollo - de la Programación de
Aplicaciones como quieran decirlo; que me imagino tienen muchas dudas cuando inician un proyecto real, en
esta oportunidad quiero plasmar de manera detallada la secuencia, pasos que nos llevan a obtener un sistema
Cliente / Servidor; “sysAgenda”.
Nuestro sistema registrará a Contactos de Diferentes Carreras Profesionales, Países; los cuales los
tendremos registrados ante una necesidad de obtener sus datos, para hacerlo sencillo y ser comprensible
trabajaremos con 3 tablas en la Base de Datos y una tabla de registro de Usuarios.
Espero que nos permita interactuar y sea este taller de su total satisfacción.
Atentamente,
Armando Tacza
Profesional IT – SystemTak
Noviembre - 2009
http://systemtak.blogspot.com [ 3 / 36 ] email: systemtak@gmail.com
4. Taller Programación Visual Basic.NET paso a paso 2009
Herramientas Necesarias
- Microsoft Visual Studio 2008
- Microsoft SQL Server 2005 Express Edition
- Microsoft Server Management Studio Express
Análisis Básico del Sistema
sysAgenda será analizada básicamente como si Ud. guardara un Contacto que tiene en su teléfono móvil;
con la finalidad de hacer un modelo Entidad Relación y trabajar con más de una tabla es que incrementamos
los detalles de Profesión y País.
Base de Datos SQL Server 2005 XE
Ejecutamos el MS SQL Server Management Studio:
La primera vez que iniciamos nos mostrará lo siguiente:
Click en el botón Conectar:
Asignaremos un Password al usuario sa
Con el fin de conectarnos a través de éste usuario.
- Click Botón derecho >> Propiedades
- Asignar la Contraseña.
- Al lado izquierdo click en Estado y
Habilitar inicio de sesión.
- Click en Aceptar.
http://systemtak.blogspot.com [ 4 / 36 ] email: systemtak@gmail.com
5. Taller Programación Visual Basic.NET paso a paso 2009
- Luego de Aceptar Desconectamos
Nuestro SQL Server.
Iniciaremos nuevamente SQL Server 2005 con el usuario sa y Password.
- Si nos muestra un error cuando intentamos Ingresar.
- Debemos ingresar nuevamente con Autentificacion Windows y hacer lo siguiente:
- Click derecho sobre el Server >> Propiedades :
http://systemtak.blogspot.com [ 5 / 36 ] email: systemtak@gmail.com
6. Taller Programación Visual Basic.NET paso a paso 2009
Click en Seguridad >> Seleccionar Modo de autentificacion de Windows y SQL Server
Reiniciamos el Servicio de SQL Server ( Click >> Inicio>> Programas >> MS SQL Server >> Configuration tools >> SQL Server
Configuration Manager )
- Ahora si nuevamente nos loguearemos con el usuario sa y el password (inicio este es mi PASS)
http://systemtak.blogspot.com [ 6 / 36 ] email: systemtak@gmail.com
7. Taller Programación Visual Basic.NET paso a paso 2009
Ahora crearemos la Base de Datos:
Click Derecho: Nueva Base de Datos
Nombre: sysAgenda
Luego Cick en Aceptar
Tablas:
tb_profesion
Ingresar los campos , seleccionar CodigoProfesion
Click en la LLAVE Primary Key, propiedades
(identidad) : SI Guardar nombre :
tb_profesion
tb_pais
http://systemtak.blogspot.com [ 7 / 36 ] email: systemtak@gmail.com
8. Taller Programación Visual Basic.NET paso a paso 2009
tb_contacto:
tb_usuario:
Relacionando las Tablas:
Click en >> Diagramas de Base de datos
Luego de dar un Click a YES; crearemos el Modelo de la Base de Datos.
http://systemtak.blogspot.com [ 8 / 36 ] email: systemtak@gmail.com
9. Taller Programación Visual Basic.NET paso a paso 2009
Agregar todas las Tablas:
Diagrama de la Base de Datos
De un determinado Pais tenemos Muchos Contactos (Relación de 1 a muchos)
De una determinada Profesion tenemos Muchos Contactos (Relación de 1 a muchos)
Procedimientos Almacenados
(Porciones de Código Reutilizable en el Servidor se programan a través del lenguaje Transact - SQL)
http://systemtak.blogspot.com [ 9 / 36 ] email: systemtak@gmail.com
10. Taller Programación Visual Basic.NET paso a paso 2009
Borrar el código generado por la plantilla, enfocaremos Nuestro Procedimiento Almacenado a cuestiones muy
básicas con fines didácticos.
sp_tbPaisListar (Procedimiento que la usaremos para rellenar un lista de Países) >> En SQL Server Ejecutar
con F5 (ejecuta la consulta)
create procedure sp_tbPaisListar
as
begin
set nocount on;
select * from tb_pais order by NombrePais
end
go
Nota: Haremos un ingreso manual de valores para la tabla tb_pais (Mexico, Ecuador, Chile, Peru)
sp_tbProfesionListar (Procedimiento que la usaremos para rellenar un lista de Profesiones)
create procedure sp_tbProfesionListar
as
begin
set nocount on;
select * from tb_profesion order by NombreProfesion
end
go
Nota: Haremos un ingreso manual de valores para la tabla tb_profesion (Medicina, Ingeniería, Administración,
Economía)
sp_tbUsuarioListar (Procedimiento que la usaremos para rellenar un lista de Usuarios)
create procedure sp_tbProfesionListar
as
begin
set nocount on;
select * from tb_profesion order by NombreProfesion
end
go
Nota: Haremos un ingreso manual de valores para la tabla tb_usuario.
Nick Password Nombres
Admin password Administrador del Sistema
Invitado guest Invitado a Usar el Sistema
http://systemtak.blogspot.com [ 10 / 36 ] email: systemtak@gmail.com
11. Taller Programación Visual Basic.NET paso a paso 2009
Los Procedimientos Almacenados para el Mantenimiento de la tabla tb_contacto a continuación.
sp_tbContactoInsertar (Procedimiento para insertar un nuevo Contacto)
create procedure [dbo].[sp_tbContactoInsertar]
@nombreContacto varchar(45),
@direccionContacto varchar(45),
@telefonoContacto varchar(12),
@celularContacto varchar(12),
@emailContacto varchar(20),
@fechaRegistro smallDateTime,
@fotoContacto varbinary(MAX),
@codigoProfesion int,
@codigoPais int,
@nick varchar(15),
@codigo int output
as
set @codigo=(select top 1 CodigoContacto from tb_contacto order by
CodigoContacto desc)+1
begin
set nocount on;
insert into
tb_contacto(NombreContacto,DireccionContacto,TelefonoContacto,CelularContacto,Email
Contacto,FechaRegistro,FotoContacto,CodigoProfesion,CodigoPais,nick)
values(@nombreContacto,@direccionContacto,@telefonoContacto,@celularContacto,@email
Contacto,@fechaRegistro,@fotoContacto,@codigoProfesion,@codigoPais,@nick)
end
sp_tbContactoModificar (Procedimiento para modificar un Contacto)
CREATE procedure [dbo].[sp_tbContactoModificar]
@codigoContacto int,
@nombreContacto varchar(45),
@direccionContacto varchar(45),
@telefonoContacto varchar(12),
@celularContacto varchar(12),
@emailContacto varchar(20),
@fechaRegistro smallDateTime,
@fotoContacto varbinary(MAX),
@codigoProfesion int,
@codigoPais int,
@nick varchar(15)
as
begin
set nocount on;
update tb_contacto set
NombreContacto=@nombreContacto,DireccionContacto=@direccionContacto,TelefonoContact
o=@telefonoContacto,CelularContacto=@celularContacto,EmailContacto=@emailContacto,F
echaRegistro=@fechaRegistro,FotoContacto=@fotoContacto,CodigoProfesion=@codigoProfe
sion,CodigoPais=@codigoPais,nick=@nick where(CodigoContacto=@codigoContacto)
end
sp_tbContactoEliminar (Procedimiento para Elimina un Contacto)
CREATE procedure [dbo].[sp_tbContactoEliminar]
@codigoContacto int
as
begin
set nocount on;
delete from tb_contacto where(CodigoContacto=@CodigoContacto)
http://systemtak.blogspot.com [ 11 / 36 ] email: systemtak@gmail.com
12. Taller Programación Visual Basic.NET paso a paso 2009
end
sp_tbContactoListar (Procedimiento para Listar Contactos)
create procedure sp_tbContactoListar
as
begin
set nocount on;
select tb_contacto.CodigoContacto,
tb_contacto.NombreContacto,tb_contacto.DireccionContacto,
tb_contacto.TelefonoContacto,tb_contacto.CelularContacto,
tb_contacto.EmailContacto,
tb_contacto.FechaRegistro,tb_contacto.FotoContacto,
tb_pais.NombrePais,tb_profesion.NombreProfesion,tb_contacto.nick
from tb_contacto,tb_pais,tb_profesion
where(tb_contacto.CodigoProfesion=tb_profesion.CodigoProfesion and
tb_contacto.CodigoPais=tb_pais.CodigoPais)
end
sp_tbContactoListarPorPais (Procedimiento para Listar Contactos por Paises)
create procedure sp_tbContactoListarPorPais
@CodigoPais int
as
begin
set nocount on;
select tb_contacto.CodigoContacto,
tb_contacto.NombreContacto,tb_contacto.DireccionContacto,
tb_contacto.TelefonoContacto,tb_contacto.CelularContacto,
tb_contacto.EmailContacto,
tb_contacto.FechaRegistro,tb_contacto.FotoContacto,
tb_pais.NombrePais,tb_profesion.NombreProfesion,tb_contacto.nick
from tb_contacto,tb_pais,tb_profesion
where(tb_contacto.CodigoProfesion=tb_profesion.CodigoProfesion and
tb_contacto.CodigoPais=tb_pais.CodigoPais and tb_contacto.CodigoPais=@CodigoPais)
order by tb_pais.NombrePais
end
sp_tbContactoListarPorProfesion (Procedimiento para Listar Contactos por Profesion)
create procedure sp_tbContactoListarPorProfesion
@CodigoProfesion int
as
begin
set nocount on;
select tb_contacto.CodigoContacto,
tb_contacto.NombreContacto,tb_contacto.DireccionContacto,
tb_contacto.TelefonoContacto,tb_contacto.CelularContacto,
tb_contacto.EmailContacto,
tb_contacto.FechaRegistro,tb_contacto.FotoContacto,
tb_pais.NombrePais,tb_profesion.NombreProfesion,tb_contacto.nick
from tb_contacto,tb_pais,tb_profesion
where(tb_contacto.CodigoProfesion=tb_profesion.CodigoProfesion and
tb_contacto.CodigoPais=tb_pais.CodigoPais and
tb_contacto.CodigoProfesion=@CodigoProfesion)
order by tb_profesion.NombreProfesion,tb_contacto.NombreContacto
end
Hasta este punto trabajamos en el Servidor, seguidamente veremos la aplicación
http://systemtak.blogspot.com [ 12 / 36 ] email: systemtak@gmail.com
13. Taller Programación Visual Basic.NET paso a paso 2009
Desarrollando la Aplicación en Visual Basic.NET 2008
Iniciamos >> Visual Studio 2008
Click File >> New Project
Asignarle nombre >> ok.
(Crear una carpeta en C:)
sysAgenda
Click >> Save All >> Guardar el Proyecto
Guardar el Proyecto >> c:sysAgenda
Ahora Iniciaremos la Conexión VB.NET SQL Server 2005 XE
Click >> Menu Data >> Show Data Sources
Click >> Add New DataSource
http://systemtak.blogspot.com [ 13 / 36 ] email: systemtak@gmail.com
14. Taller Programación Visual Basic.NET paso a paso 2009
Click >> Next
Click >> Botón Nueva Conexión
Seleccionamos SQL Server
El Server name lo obtenemos desde nuestro SQL Server. (sistemas02SQLEXPRESS)
Click en Next
http://systemtak.blogspot.com [ 14 / 36 ] email: systemtak@gmail.com
15. Taller Programación Visual Basic.NET paso a paso 2009
Ingresamos el nombre de la cadena de Conexión (cnnSysAgenda) Click >> Next
Finalmente Click >> Finish
Interfaz del Usuario con VB.NET
- Considerando que hasta aquí todo va muy bien, iniciaremos con la interfaz del usuario, diseños de los
formularios centrándonos básicamente en la tabla (tb_contacto).
Diseño del Formulario: Acceso al Sistema (Usuario & Password)
Form1
Name frmInicio
Text Acceso
StartPosition CenterScreen
ControlBox False
FormBorderStyle FixedSingle
GroupBox1
Text
Label1
Text Usuario:
Labe2
Text Password
ComboBox1
Name Cbousuario
DropDownStyle DropDownList
TextBox1
Name txtPassword
PasswordChar *
Button1
Name btnIngresar
Text &Ingresar
Button2
Name btnCancelar
Text &Cancelar
http://systemtak.blogspot.com [ 15 / 36 ] email: systemtak@gmail.com
16. Taller Programación Visual Basic.NET paso a paso 2009
Diseño del Formulario: Formulario Principal
Click >> Menu Project >> Add Windows Form (Nombre: frmPrincipal.vb)
Propiedades para el formulario
frmPrincipal
Name frmPrincipal
Text Sistema Agenda
WindowState Maximized
IsMDIContainer True
MaximizeBox False
MenuStrip
Name mnuPrincipal
mnuInicio SubMenu
mnuContacto SubMenu
mnuSalir SubMenu
StatusTrip1
ToolStripStatusLabel Tsslusuario
Text Usuario
Diseño del Formulario: Formulario de Contactos
Click >> Menu Project >> Add Windows Form (Nombre: frmContactos.vb)
frmContacto
Name frmContacto
Text Contactos
StartPosition CenterScreen
ControlBox False
FormBorderStyle FixedSingle
GroupBox1, 2, 3, 4
TextBox1
Name txtCodigo
ReadOnly True
TextBox2
Name txtNombres
TextBox3
Name txtDireccion
http://systemtak.blogspot.com [ 16 / 36 ] email: systemtak@gmail.com
17. Taller Programación Visual Basic.NET paso a paso 2009
TextBox4
Name txtTelefono
TextBox5
Name txtCelular
TextBox6
Name txtEmail
ComboBox1
Name cboProfesion
ComboBox2
Name cboPais
Button1
Name btnFoto
PictureBox1
Name picFoto
Button2
Name btnNuevo
Button3
Name btnGrabar
Button4
Name btnModificar
Button5
Name btnEliminar
Button6
Name btnCancelar
Button7
Name btnListar
Button8
Name btnListar
DataGridView1
Name dtgDetalle
AllowUserToAddRows False
AllowUserToDeleteRows False
ReadOnly True
AllowUserToOrderColumns True
Diseño del Formulario:
Todos los TextBox deben estar en: readOnly=True
Los dos combos: Enabled=False
http://systemtak.blogspot.com [ 17 / 36 ] email: systemtak@gmail.com
18. Taller Programación Visual Basic.NET paso a paso 2009
Programación Orientada a Objetos
Clase: conexión.vb (Encargada de Retornar la Cadena de conexión con SQL Server 2005)
Guardar con el nombre conexión.vb
Click >> Add
Para hacer uso de Ciertas librerías para la Conexión Agregaremos una referencia al Proyecto.
Click Derecho Sobre el Proyecto (sysAgendaProyecto)>> Add Reference >> .Net >> SystemConfiguration
>> System.Configuration >> Ok.
Ahora si podemos editar el código de conexión.vb
Public Class conexion
Public Shared Function LeerCadenaConexion() As String
Try
Return
Configuration.ConfigurationManager.ConnectionStrings(1).ConnectionString
Catch ex As Exception
Throw (ex)
End Try
End Function
End Class
http://systemtak.blogspot.com [ 18 / 36 ] email: systemtak@gmail.com
19. Taller Programación Visual Basic.NET paso a paso 2009
Esta clase (conexión.vb) nos permite accede al archivo: app.config
…
<connectionStrings>
<add name="sysAgenda.My.MySettings.cnnSysAgenda" connectionString="Data
Source=sistemas02SQLEXPRESS;Initial Catalog=sysAgenda;User ID=sa;Password=inicio"
providerName="System.Data.SqlClient" />
</connectionStrings>
…
Clase: pais.vb (Encargada de Retornar una consulta desde SQL Server)
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient
Public Class pais
Public Shared Function paisListar() As DataTable
Dim cn As New SqlConnection(conexion.LeerCadenaConexion)
Dim cmd As New SqlCommand("sp_tbPaisListar", cn)
cmd.CommandType = CommandType.StoredProcedure
Try
Dim da As New SqlDataAdapter(cmd)
Dim tb As New DataTable
da.Fill(tb)
Return tb
da.Dispose()
Catch ex As Exception
Throw ex
Finally
cn.Dispose()
cmd.Dispose()
End Try
End Function
End Class
Clase: profesion.vb (Encargada de Retornar una consulta desde SQL Server)
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient
Public Class profesion
Public Shared Function profesionListar() As DataTable
Dim cn As New SqlConnection(conexion.LeerCadenaConexion)
Dim cmd As New SqlCommand("sp_tbProfesionListar", cn)
cmd.CommandType = CommandType.StoredProcedure
Try
Dim da As New SqlDataAdapter(cmd)
Dim tb As New DataTable
da.Fill(tb)
Return tb
da.Dispose()
Catch ex As Exception
Throw ex
Finally
cn.Dispose()
cmd.Dispose()
End Try
End Function
End Class
http://systemtak.blogspot.com [ 19 / 36 ] email: systemtak@gmail.com
20. Taller Programación Visual Basic.NET paso a paso 2009
Clase: usuario.vb (Encargada de buscar el Usuario y Password en la BD)
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient
Public Class usuario
Public Shared Function ExisteUsuario(ByVal xnick As String, ByVal xpass As
String) As Boolean
Dim cn As New SqlConnection(conexion.LeerCadenaConexion)
Dim cmd As New SqlCommand("sp_tbUsuarioBusca", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@nick", xnick)
cmd.Parameters.AddWithValue("@pass", xpass)
Try
cn.Open()
Dim lector As SqlDataReader =
cmd.ExecuteReader(CommandBehavior.CloseConnection)
If lector.HasRows = True Then
Return True
Else
Return False
End If
lector.Close()
Catch ex As Exception
Throw ex
Finally
cn.Dispose()
cmd.Dispose()
End Try
End Function
Public Shared Function usuarioListar() As DataTable
Dim cn As New SqlConnection(conexion.LeerCadenaConexion)
Dim cmd As New SqlCommand("sp_tbUsuarioLista", cn)
cmd.CommandType = CommandType.StoredProcedure
Try
Dim da As New SqlDataAdapter(cmd)
Dim tb As New DataTable
da.Fill(tb)
Return tb
da.Dispose()
Catch ex As Exception
Throw ex
Finally
cn.Dispose()
cmd.Dispose()
End Try
End Function
End Class
http://systemtak.blogspot.com [ 20 / 36 ] email: systemtak@gmail.com
21. Taller Programación Visual Basic.NET paso a paso 2009
Nota: Debemos crear un Procedimiento almacendo en SQL Server
create procedure sp_tbUsuarioBusca
(
@nick varchar(15),
@pass varchar(15)
)
as
set nocount on
select nick,password,nombres from tb_usuario
where(nick=rtrim(@nick) and password=rtrim(@pass))
create procedure sp_tbUsuarioLista
as
set nocount on
select nick from tb_usuario order by nick
Clase: contacto.vb (Encargada del Mantenimiento de la tabla contacto)
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient
Public Class contacto
Public Shared Function contactoListar() As DataTable
Dim cn As New SqlConnection(conexion.LeerCadenaConexion)
Dim cmd As New SqlCommand("sp_tbContactoListar", cn)
cmd.CommandType = CommandType.StoredProcedure
Try
Dim da As New SqlDataAdapter(cmd)
Dim tb As New DataTable
da.Fill(tb)
Return tb
da.Dispose()
Catch ex As Exception
Throw ex
Finally
cn.Dispose()
cmd.Dispose()
End Try
End Function
Public Shared Sub contactoAgregar(ByVal xNombreContacto As String, ByVal
xDireccionContacto As String, ByVal xTelefonocontacto As String, ByVal
xCelularContacto As String, ByVal xEmailContacto As String, ByVal xFechaRegistro As
Date, ByVal xFotoContacto As String, ByVal xCodigoProfesion As Integer, ByVal
xCodigoPais As Integer, ByVal xnick As String)
Dim cn As New SqlConnection(conexion.LeerCadenaConexion)
Dim cmd As New SqlCommand("sp_tbContactoInsertar", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@nombreContacto", xNombreContacto)
cmd.Parameters.AddWithValue("@direccionContacto", xDireccionContacto)
cmd.Parameters.AddWithValue("@telefonoContacto", xTelefonoContacto)
cmd.Parameters.AddWithValue("@celularContacto", xCelularContacto)
cmd.Parameters.AddWithValue("@emailContacto", xEmailContacto)
cmd.Parameters.AddWithValue("@fechaRegistro", xFechaRegistro)
http://systemtak.blogspot.com [ 21 / 36 ] email: systemtak@gmail.com
22. Taller Programación Visual Basic.NET paso a paso 2009
cmd.Parameters.AddWithValue("@fotoContacto", xFotoContacto)
cmd.Parameters.AddWithValue("@codigoProfesion", xCodigoProfesion)
cmd.Parameters.AddWithValue("@codigoPais", xCodigoPais)
cmd.Parameters.AddWithValue("@nick", xnick)
Try
cn.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
Throw ex
Finally
cn.Dispose()
cmd.Dispose()
End Try
End Sub
Public Shared Sub contactoModificar(ByVal xCodigoContacto As Integer, ByVal
xNombreContacto As String, ByVal xDireccionContacto As String, ByVal
xTelefonocontacto As String, ByVal xCelularContacto As String, ByVal xEmailContacto
As String, ByVal xFechaRegistro As Date, ByVal xFotoContacto As String, ByVal
xCodigoProfesion As Integer, ByVal xCodigoPais As Integer, ByVal xnick As String)
Dim cn As New SqlConnection(conexion.LeerCadenaConexion)
Dim cmd As New SqlCommand("sp_tbContactoModificar", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@codigoContacto", xCodigoContacto)
cmd.Parameters.AddWithValue("@nombreContacto", xNombreContacto)
cmd.Parameters.AddWithValue("@direccionContacto", xDireccionContacto)
cmd.Parameters.AddWithValue("@telefonoContacto", xTelefonoContacto)
cmd.Parameters.AddWithValue("@celularContacto", xCelularContacto)
cmd.Parameters.AddWithValue("@emailContacto", xEmailContacto)
cmd.Parameters.AddWithValue("@fechaRegistro", xFechaRegistro)
cmd.Parameters.AddWithValue("@fotoContacto", xFotoContacto)
cmd.Parameters.AddWithValue("@codigoProfesion", xCodigoProfesion)
cmd.Parameters.AddWithValue("@codigoPais", xCodigoPais)
cmd.Parameters.AddWithValue("@nick", xnick)
Try
cn.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
Throw ex
Finally
cn.Dispose()
cmd.Dispose()
End Try
End Sub
Public Shared Sub contactoEliminar(ByVal xCodigoContacto As Integer)
Dim cn As New SqlConnection(conexion.LeerCadenaConexion)
Dim cmd As New SqlCommand("sp_tbContactoEliminar", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@codigoContacto", xCodigoContacto)
Try
cn.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
Throw ex
Finally
cn.Dispose()
cmd.Dispose()
End Try
End Sub
Public Shared Function contactoListarPorPais(ByVal xCodigoPais As Integer) As
DataRow
http://systemtak.blogspot.com [ 22 / 36 ] email: systemtak@gmail.com
23. Taller Programación Visual Basic.NET paso a paso 2009
Dim cn As New SqlConnection(conexion.LeerCadenaConexion)
Dim cmd As New SqlCommand("sp_tbContactoListarPorPais", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@CodigoPais", xCodigoPais)
Try
Dim da As New SqlDataAdapter(cmd)
Dim tb As New DataTable
da.Fill(tb)
Return tb.Rows(0)
da.Dispose()
Catch ex As Exception
Throw ex
Finally
cn.Dispose()
cmd.Dispose()
End Try
End Function
End Class
Programación de los Controles Windows Forms
Formulario: frmInicio (Encargada del Mantenimiento de la tabla contacto)
Los códigos se muestran para este formulario es:
Public Class frmInicio
' Cuando inicia el Formulario debe cargar la lista de Usuarios
Private Sub frmInicio_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Me.cboUsuario.DisplayMember = "nick"
Me.cboUsuario.ValueMember = "nick"
Me.cboUsuario.DataSource = usuario.usuarioListar
End Sub
Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnCancelar.Click
'Esto nos permite abandonar la aplicacion
Application.Exit()
End Sub
Private Sub cboUsuario_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cboUsuario.SelectedIndexChanged
'Activa el Boton de INGRESAR
Me.btnIngresar.Enabled = True
End Sub
Private Sub btnIngresar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnIngresar.Click
'Nos aseguramos que haya ingresado el passwor
If txtPassword.TextLength > 0 Then
'Si el usuario existe
If usuario.ExisteUsuario(Me.cboUsuario.SelectedValue.ToString(),
Me.txtPassword.Text.Trim) Then
http://systemtak.blogspot.com [ 23 / 36 ] email: systemtak@gmail.com
24. Taller Programación Visual Basic.NET paso a paso 2009
Me.Hide()
'Llamamos al formulario principal MDI
Dim frmPrin As frmPrincipal
frmPrin = New frmPrincipal(Me.cboUsuario.SelectedValue.ToString())
frmPrin.Show()
Else
MessageBox.Show("Password Incorrecto", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error)
txtPassword.Focus()
End If
Else
MessageBox.Show("Ingrese Password", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error)
txtPassword.Focus()
End If
End Sub
End Class
Formulario: frmPrincipal (Formulario Principal del Sistema es un form MDI contiene el MENU y StatusStrip)
Los códigos se muestran para este formulario es:
Public Class frmPrincipal
' constructor que recibe el usuario .....
Public Sub New(ByVal xusuario As String)
InitializeComponent()
' muestra el usuario en linea ..
Me.tsslUsuario.Text = "Usaurio: " & xusuario
End Sub
Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
Private Sub mnuSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles mnuSalir.Click
Application.Exit()
End Sub
Private Sub frmPrincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
http://systemtak.blogspot.com [ 24 / 36 ] email: systemtak@gmail.com
25. Taller Programación Visual Basic.NET paso a paso 2009
End Sub
Private Sub frmPrincipal_FormClosing(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
' esto permite que abandonar el sistema por completo
Application.Exit()
End Sub
Private Sub mnuContacto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles mnuContacto.Click
Dim frmCon As frmContacto
frmCon = New frmContacto
frmCon.MdiParent = Me
frmCon.Show()
End Sub
End Class
Formulario: frmContacto (Formulario en la que se desarrollan los mantenimientos de la tabla Contacto)
Este formulario nos permitirá interactuar
Con dos tablas más que son:
Tb_pais
Tb_profesion
Desarrollaremos el Código para cada uno
De los controles (Botones)
DataGridView
Asimismo nos permite cargar la Foto
Los códigos se muestran para este formulario es:
Imports System.IO
Public Class frmContacto
'Variable que nos permite almacenar la ruta del archivo de imagen
'que será almacenado en la BD
Dim rutaFoto As String = ""
'El sistema Registra la fecha de Hoy como ingreso de Registro
Dim fecha As Date = Date.Now
'Variable que representa al usuario en linea
Dim vusuario As String
'Variable nos indica si el usuario quiere Grabar un
'Nuevo Registro o es una Modificacion
Dim vtemp As Integer = 0
' Constructor de la clase formulario (recibe como parametro el usuario en linea)
Public Sub New(ByVal xusuario As String)
InitializeComponent()
' muestra el usuario en linea .. Compre el eBook OnLine ahora!
'asignamos un valor
vusuario = xusuario
( systemtak@gmail.com ) $ 6.00
End Sub
Sub New()
eBook + Código Fuente + Base de Datos
InitializeComponent()
http://systemtak.blogspot.com [ 25 / 36 ] email: systemtak@gmail.com