Programación Orientada a Objetos en VB.NET con base de datos Access 2010
Entrada Relacionada: El Patrón Modelo-Vista-Controlador y Programación Orientada a Objetos en PHP Profesional
Como bien es sabido, la Programación orientada a objetos es una metodología de programación la cual se basa en modelar el mundo real y ha ganado importancia significativa en los últimos tiempos, en este tipo de programación se trabaja con objetos en el sistema que interactuan unos con otros. No es para nada difícil de entender si sabemos reconocer cuales son cada una de esas entidades que forman parte de un problema a resolver. Sin mas a que ahondar, continuamos con un breve ejemplo sobre el cual ya hemos venido trabajando en tutoriales anteriores, como la programación orientada a objetos en PHP, que es básicamente lo mismo, pero para efectos de este tutorial, usaremos el maravilloso Visual Studio y su VB.NET Tenemos la clase "persona", objeto de la vida real que en nuestro caso, tiene una cédula de identidad (Numero de identificación único), nombres, apellidos, edad y sexo, y las funciones de la misma serán Registrar, Modificar, Buscar y Eliminar.
Ahora, que ingredientes necesitamos para empezar?
1. Un formulario (frm_persona) Aplicación de Windows Forms
2. 5 Labels (Cedula, Nombres, Apellidos, Edad, Sexo)
3. 5 TextBox (txt_cedula, txt_nombres, txt_apellidos, txt_edad, txt_sexo)
4. 4 Botones (btn_registrar, btn_modificar, btn_buscar, btn_eliminar)
Una vez que tengamos nuestro formulario armado de la siguiente manera, proseguimos con lo siguiente:
Crear y conectar a la base de datos
Vamos a Microsoft Office Access 2010 (funciona para Access 2007 o 2013) y creamos una nueva base de datos, a la cual llamaremos bd.accdb y contendra dentro de ella la tabla persona. Su ubicación será la carpeta "Debug" de tu proyecto la cual se genera a la hora de compilarlo, sus estructura quedará de la siguiente manera.
Una vez realizado esto, volvemos a nuestro Visual Studio, y vamos al menu Proyecto > Agregar Modulo y agregamos un nuevo modulo el cual llamaremos conexion.vb, borra todo el codigo que pueda haber, y copia y pega el siguiente.
Module conexion
Public conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=bd.accdb;Persist Security Info=False")
Public cmd As New OleDb.OleDbCommand
Public dr As OleDb.OleDbDataReader
Public sql As String
Public Sub conectarse()
Try
conn.Open()
Catch ex As Exception
If ex.ToString.Contains("No se pudo encontrar") Then
MsgBox("La base de datos a la que intentas conectar no se encuentra en el directorio, por favor, verifica e intenta nuevamente", MsgBoxStyle.Critical, "Error")
End If
End Try
End Sub
End Module
El texto en Rojo será el nombre de nuestra base de datos solamente, siempre y cuando este dentro de la carpeta "Debug", si este archivo no se encuentra allí, debes colocar la ruta entera de su respectiva ubicación, yo personalmente recomiendo trabajar con los archivos dentro de la carpeta del proyecto en cuestión.
Crear el Modulo de Funciones
Crearemos un nuevo modulo en donde se introducirán ciertas funciones que se suponen, deberían ser usadas en todo el proyecto, y por tal motivo, se globaliza de tal modo, en este caso, el modulo se llamara funciones.vb y solo contendrá el siguiente código
Module funciones
Public Sub campoVacio(ByRef cadena As TextBox, ByRef campo As String)
MsgBox("El campo de " + campo + " esta vacio")
cadena.Select()
End Sub
End Module
Crear la clase del Objeto
Ahora, es momento de crear el codigo de la clase, objeto o entidad "persona'
Nos dirigimos al menu Proyecto > Agregar clase, con esto agregaremos una nueva clase al proyecto, la cual, debemos nombrar como persona.vb, y la misma contendra el siguiente codigo
Public Class persona
Public Property cedula As String
Public Property nombres As String
Public Property apellidos As String
Public Property edad As Integer
Public Property sexo As String
Public Sub registrarPersona(cedula, nombres, apellidos, edad, sexo)
cmd.CommandType = CommandType.Text
cmd.Connection = conn
sql = "INSERT INTO persona(cedula,nombres,apellidos,edad,sexo) VALUES ('" & cedula.ToString.ToUpper & "','" & nombres.ToString.ToUpper & "','" & apellidos.ToString.ToUpper & "','" & edad & "','" & sexo.ToString.ToUpper & "')"
cmd.CommandText = sql
Try
cmd.ExecuteNonQuery()
MsgBox("Registro Exitoso", MsgBoxStyle.Information, "Enhorabuena")
Catch ex As Exception
If ex.ToString.Contains("valores duplicados") Then
MsgBox("El numero de identificacion ya esta registrado", MsgBoxStyle.Information, "Información")
ElseIf ex.ToString.Contains("No coinciden los tipos de datos") Then
MsgBox("El valor introducido no es un dato valido", MsgBoxStyle.Critical, "Error")
Else
MsgBox(ex.ToString)
End If
End Try
End Sub
Public Sub modificarPersona(cedula, nombres, apellidos, edad, sexo)
cmd.CommandType = CommandType.Text
cmd.Connection = conn
sql = "UPDATE persona SET nombres = '" & nombres.ToString.ToUpper & "', apellidos = '" & apellidos.ToString.ToUpper & "', edad = '" & edad.ToString.ToUpper & "', sexo = '" & sexo.ToString.ToUpper & "' WHERE cedula = '" & cedula & "'"
cmd.CommandText = sql
Try
cmd.ExecuteNonQuery()
MsgBox("Modificado con éxito", MsgBoxStyle.Information, "Enhorabuena")
Catch ex As Exception
If ex.ToString.Contains("No coinciden los tipos de datos") Then
MsgBox("El valor introducido no es un dato valido", MsgBoxStyle.Critical, "Error")
Else
MsgBox(ex.ToString)
End If
End Try
End Sub
Public Sub buscarPersona(cedula As Object, ByRef cmp_cedula As TextBox, ByRef cmp_nombres As TextBox, ByRef cmp_apellidos As TextBox, ByRef cmp_edad As TextBox, ByRef cmp_sexo As TextBox, ByRef btn_registrar As Button, ByRef btn_modificar As Button, ByRef btn_eliminar As Button)
cmd.Connection = conn
cmd.CommandType = CommandType.Text
sql = "SELECT * FROM persona WHERE cedula = '" & cedula & "'"
cmd.CommandText = sql
Try
dr = cmd.ExecuteReader()
If dr.HasRows Then
btn_eliminar.Enabled = True
btn_modificar.Enabled = True
btn_registrar.Enabled = False
cmp_cedula.Enabled = False
While dr.Read()
cmp_cedula.Text = dr(0).ToString.ToUpper
cmp_nombres.Text = dr(1).ToString.ToUpper
cmp_apellidos.Text = dr(2).ToString.ToUpper
cmp_edad.Text = dr(3).ToString.ToUpper
cmp_sexo.Text = dr(4).ToString.ToUpper
End While
Else
btn_eliminar.Enabled = False
btn_modificar.Enabled = False
btn_registrar.Enabled = True
cmp_cedula.Enabled = True
MsgBox("No hay ningún usuario registrado con la cedula consultada", MsgBoxStyle.Critical, "Usuario no registrado")
End If
dr.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Public Sub eliminarPersona(cedula)
cmd.CommandType = CommandType.Text
cmd.Connection = conn
sql = "DELETE FROM persona WHERE cedula = '" & cedula & "'"
cmd.CommandText = sql
Try
cmd.ExecuteNonQuery()
MsgBox("Eliminado con éxito", MsgBoxStyle.Information, "Enhorabuena")
Catch ex As Exception
ex.ToString()
End Try
End Sub
End Class
Establecer las funcionalidadesLo que tenemos hasta ahora, no es mas que un monto de codigo "independiente" y una ventana con un formulario que no hace absolutamente nada, pero ahora, llego el tiempo de la acción. Nos vamos a dirigir hasta nuestro formulario en su vista de codigo, borramos cualquier codigo autogenerado y pegamos lo siguiente
Public Class frm_persona
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
conectarse()
Me.btn_modificar.Enabled = False
Me.btn_eliminar.Enabled = False
End Sub
Private Sub btn_registrar_Click(sender As Object, e As EventArgs) Handles btn_registrar.Click
Dim nueva_persona As New persona
If txt_cedula.Text = "" Then
campoVacio(txt_cedula, "cedula")
ElseIf txt_nombres.Text = "" Then
campoVacio(txt_nombres, "nombres")
ElseIf txt_apellidos.Text = "" Then
campoVacio(txt_apellidos, "apellidos")
ElseIf txt_edad.Text = "" Then
campoVacio(txt_edad, "edad")
ElseIf txt_nombres.Text = "" Then
campoVacio(txt_sexo, "sexo")
Else
nueva_persona.registrarPersona(txt_cedula.Text, txt_nombres.Text, txt_apellidos.Text, txt_edad.Text, txt_sexo.Text)
End If
End Sub
Private Sub btn_buscar_Click(sender As Object, e As EventArgs) Handles btn_buscar.Click
Dim buscar_persona As New persona
If txt_cedula.Text = "" Then
campoVacio(txt_cedula, "cedula")
Else
buscar_persona.buscarPersona(txt_cedula.Text, txt_cedula, txt_nombres, txt_apellidos, txt_edad, txt_sexo, btn_registrar, btn_modificar, btn_eliminar)
End If
End Sub
Private Sub btn_eliminar_Click(sender As Object, e As EventArgs) Handles btn_eliminar.Click
Dim eliminar_persona As New persona
If txt_cedula.Text = "" Then
campoVacio(txt_cedula, "cedula")
Else
If MsgBox("Estás seguro que deseas eliminar a esta persona", MsgBoxStyle.YesNo, "Mensaje de confirmación") = MsgBoxResult.Yes Then
eliminar_persona.eliminarPersona(txt_cedula.Text)
End If
End If
End Sub
Private Sub btn_modificar_Click(sender As Object, e As EventArgs) Handles btn_modificar.Click
Dim modificar_persona As New persona
If txt_cedula.Text = "" Then
campoVacio(txt_cedula, "cedula")
ElseIf txt_nombres.Text = "" Then
campoVacio(txt_nombres, "nombres")
ElseIf txt_apellidos.Text = "" Then
campoVacio(txt_apellidos, "apellidos")
ElseIf txt_edad.Text = "" Then
campoVacio(txt_edad, "edad")
ElseIf txt_nombres.Text = "" Then
campoVacio(txt_sexo, "sexo")
Else
modificar_persona.modificarPersona(txt_cedula.Text, txt_nombres.Text, txt_apellidos.Text, txt_edad.Text, txt_sexo.Text)
modificar_persona.buscarPersona(txt_cedula.Text, txt_cedula, txt_nombres, txt_apellidos, txt_edad, txt_sexo, btn_registrar, btn_modificar, btn_eliminar)
End If
End Sub
End Class
Con esto realizado, no queda mas que probar el programa, pulsando la tecla F5 o yendo al menú Compilar > Generar Nombre de tu Proyecto, y probar como funcionan cada una de las funciones, es importante recalcar en que analizar un poco cada código no estaría de mas, el secreto de todo buen programador es entender todas y cada una de las lineas presentes en su proyecto, sin mas que agregar, espero hayan disfrutado el tutorial, suerte.
Enlaces para compartir en tu blog o pagina web.
No hay comentarios :
Publicar un comentario