Cuando necesite ejecutar un conjunto de instrucciones varias veces

Anuncio
UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACIÓN
GUÍA DE LABORATORIO #11
CICLO: 02-2011
Nombre de la Práctica:
ADO.NET. Parte III
MATERIA: Lenguaje de Programación I
OBJETIVOS ESPECÍFICOS
Qué el estudiante:
•
Desarrolle una aplicación aplicando conceptos de POO y ADO.NET.
•
Desarrolle una aplicación utilizando formularios MDI.
•
Realice operaciones básicas de acceso a datos.
INTRODUCCIÓN TEÓRICA.
Las aplicaciones MDI (interfaz de múltiples documentos) permiten mostrar varios
documentos al mismo tiempo, cada uno de ellos en su propia ventana. Las aplicaciones
MDI suelen tener un elemento de menú Ventana con submenús que permiten cambiar entre
ventanas o documentos.
La base de una Aplicación con Interfaz de múltiples documentos (MDI) es el formulario
primario MDI. Este formulario es el que contiene las ventanas MDI secundarias, que son
las "subventanas" dentro de las cuales los usuarios interactúan con la aplicación MDI. La
creación de un formulario MDI primario resulta sencilla, tanto en el Diseñador de Windows
Forms como mediante programación.
En la presente práctica vamos a desarrollar una aplicación utilizando un formulario MDI, al
mismo tiempo, retomaremos los conceptos de programación orientada a objetos y los
combinaremos con los conceptos de ADO.NET estudiados hasta el momento.
REQUERIMIENTOS O MATERIAL Y EQUIPO
N°
1
2
3
Cantidad
1
1
1
Descripción
PC con Windows 7 y acceso a Internet
Guía de Laboratorio
Memoria USB
PROCEDIMIENTO
La presente guía es un repaso de muchos conceptos que usted ya vio en clase teórica,
cualquier duda recuerde consultar a su instructor.
Vamos a trabajar con la base de datos registro cuyo diagrama se presenta a continuación:
Facultad de Estudios Tecnológicos
1
Cree un nuevo proyecto en Visual Studio, luego agregue una clase llamada Persona, cuyo
código se muestra a continuación:
Public Class Persona
Private _id As Integer
Private _nombres As String
Private _apellido1 As String
Private _apellido2 As String
Private _telefono As String
Private _email As String
Private _direccion As String
Private _edad As Short
Private _tipoP As Short
'+++++++++++++++++++++++++++++Contructores
' Incluyendo parámetros
Public Sub New(ByVal i As Integer, ByVal n As String, ByVal a1 As String, ByVal
a2 As String, ByVal t As String, ByVal mail As String, ByVal d As String, ByVal e As
Short, ByVal tp As Short)
_id = i
_nombres = n
_apellido1 = a1
_apellido2 = a2
_telefono = t
_email = mail
_direccion = d
_edad = e
_tipoP = tp
End Sub
' Si no se incluye el parámetro
Public Sub New()
End Sub
'++++++++++++++++++++++++++++Métodos Properties
Public Property Id() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property
Public Property Nombres() As String
Get
Facultad de Estudios Tecnológicos
2
Return _nombres
End Get
Set(ByVal value As String)
_nombres = value
End Set
End Property
Public Property Apellido1() As String
Get
Return _apellido1
End Get
Set(ByVal value As String)
_apellido1 = value
End Set
End Property
Public Property Apellido2() As String
Get
Return _apellido2
End Get
Set(ByVal value As String)
_apellido2 = value
End Set
End Property
Public Property Telefono() As String
Get
Return _telefono
End Get
Set(ByVal value As String)
_telefono = value
End Set
End Property
Public Property Email() As String
Get
Return _email
End Get
Set(ByVal value As String)
_email = value
End Set
End Property
Public Property Direccion() As String
Get
Return _direccion
End Get
Set(ByVal value As String)
_direccion = value
End Set
End Property
Public Property Edad() As Short
Get
Return _edad
End Get
Set(ByVal value As Short)
_edad = value
End Set
End Property
Public Property TipoP() As Short
Get
Return _tipoP
End Get
Facultad de Estudios Tecnológicos
3
Set(ByVal value As Short)
_tipoP = value
End Set
End Property
End Class
Luego una clase llamada Alumno, esta clase va a heredar de Persona, el código es el
siguiente:
Public Class Alumno : Inherits Persona
Private _grado As String
Private _fechaIngreso As String
'+++++++++++++++++++++++++++++Contructores
' Incluyendo parámetros
Public Sub New(ByVal i As Short, ByVal n As String, ByVal a1 As String, ByVal a2
As String, ByVal t As String, ByVal mail As String, ByVal d As String, ByVal e As
Short, ByVal tp As Short, ByVal gr As String, ByVal fi As String)
Id = i
Nombres = n
Apellido1 = a1
Apellido2 = a2
Telefono = t
Email = mail
Direccion = d
Edad = e
TipoP = tp
Grado = gr
_fechaIngreso = fi
End Sub
' Si no se incluye el parámetro
Public Sub New()
End Sub
' Solamente con el Id de un objeto Alumno
Public Sub New(ByVal idest As Integer)
Id = idest
End Sub
'++++++++++++++++++++++++++++Métodos Properties
Public Property Grado() As String
Get
Return _grado
End Get
Set(ByVal value As String)
_grado = value
End Set
End Property
Public Property FechaIngreso() As String
Get
Return _fechaIngreso
End Get
Set(ByVal value As String)
_fechaIngreso = value
End Set
End Property
End Class
Facultad de Estudios Tecnológicos
4
Agregue una clase llamada Conexion, esta clase va a manejas las conexiones a la base de
datos, los objetos de ADO.NET y las operaciones de agregar, actualizar, buscar y eliminar,
el código es el siguiente:
Imports System.Data.OleDb
Public Class Conexion
Private _sAppPath As String
'ruta
Private _sBaseDatos As String
'base de datos
Private _CadConex As String
'Cadena de Conexion
Private cnDB As OleDbConnection 'Para manipular un objeto conexion
'+++++++++++++++++++++++++++++Contructores
' Incluyendo parámetros
Public Sub New(ByVal path As String, ByVal db As String, ByVal cc As String)
_sAppPath = path
_sBaseDatos = db
_CadConex = cc
End Sub
' Si no se incluye el parámetro
Public Sub New()
_sAppPath = Application.StartupPath.ToString
_sBaseDatos = sAppPath & "\registro.accdb"
_CadConex = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & sBaseDatos &
";Persist Security Info = False"
End Sub
'++++++++++++++++++++++++++++Métodos Properties
Public Property sAppPath() As String
Get
Return _sAppPath
End Get
Set(ByVal value As String)
_sAppPath = value
End Set
End Property
Public Property sBaseDatos() As String
Get
Return _sBaseDatos
End Get
Set(ByVal value As String)
_sBaseDatos = value
End Set
End Property
Public Property CadConex() As String
Get
Return _CadConex
End Get
Set(ByVal value As String)
_CadConex = value
End Set
End Property
'Función para conectarse a la DB
Function Conectar() As OleDbConnection
cnDB = New OleDbConnection(CadConex)
Try
cnDB.Open()
Return cnDB
Facultad de Estudios Tecnológicos
5
Catch ex As Exception
'MsgBox(ex.Message)
Return Nothing
End Try
End Function
'Método para desconectarse
Public Sub Desconectar()
cnDB.Close()
End Sub
'Función para devolver un DataSet
Function conSelect(ByVal cadConsul As String) As DataSet
Dim dsTabla As New DataSet
Dim orden As OleDb.OleDbDataAdapter
Try
orden = New OleDb.OleDbDataAdapter(cadConsul, Conectar())
'Cargando el Dataset
dsTabla = New DataSet()
dsTabla.Clear()
orden.Fill(dsTabla, "miTabla")
Catch
'MessageBox.Show(ex.Message);
End Try
Return dsTabla
End Function
'Método para agregar un registro
Sub Agregar(ByVal est As Alumno, ByVal tabla As String)
Dim isql As String = "INSERT INTO " & tabla & " VALUES "
Dim cmd As OleDbCommand
If (tabla = "alumno") Then
'Termino la intrucción insert
isql = isql + "(@IdAlumno, @nombres, @apellido1, @apellido2, @telefono,
@email, @direccion, @edad) "
'Creadon un comando
cmd = New OleDbCommand(isql, Conectar())
'Agregando las variables parámetros
cmd.Parameters.Add(New OleDbParameter("@IdAlumno", OleDbType.Numeric))
cmd.Parameters("@IdAlumno").Value = est.Id
cmd.Parameters.Add(New OleDbParameter("@nombres", OleDbType.VarChar))
cmd.Parameters("@nombres").Value = est.Nombres
cmd.Parameters.Add(New OleDbParameter("@apellido1", OleDbType.VarChar))
cmd.Parameters("@apellido1").Value = est.Apellido1
cmd.Parameters.Add(New OleDbParameter("@apellido2", OleDbType.VarChar))
cmd.Parameters("@apellido2").Value = est.Apellido2
cmd.Parameters.Add(New OleDbParameter("@telefono", OleDbType.VarChar))
cmd.Parameters("@telefono").Value = est.Telefono
cmd.Parameters.Add(New OleDbParameter("@email", OleDbType.VarChar))
cmd.Parameters("@email").Value = est.Email
cmd.Parameters.Add(New OleDbParameter("@direccion", OleDbType.VarChar))
cmd.Parameters("@direccion").Value = est.Direccion
cmd.Parameters.Add(New OleDbParameter("@edad", OleDbType.Integer))
cmd.Parameters("@edad").Value = est.Edad
cmd.ExecuteNonQuery()
Facultad de Estudios Tecnológicos
6
End If
End Sub
'Método para actualizar un registro
Sub Actualizar(ByVal est As Alumno, ByVal tabla As String)
Dim isql As String = "UPDATE " & tabla & " SET "
Dim cmd As OleDbCommand
If (tabla = "alumno") Then
'Termino la intrucción insert
isql = isql + "nombres='" + est.Nombres + "',apellido1='" +
est.Apellido1 + "',apellido2='" + est.Apellido2 + "',telefono='" + est.Telefono +
"',email='" + est.Email + "',direccion='" + est.Direccion + "',edad=" +
CStr(est.Edad)
isql = isql + " WHERE IdAlumno=" + CStr(est.Id)
'Creadon un comando
cmd = New OleDbCommand(isql, Conectar())
If (cmd.ExecuteNonQuery()) Then
MessageBox.Show("Registro Actualizado con Éxito")
End If
End If
End Sub
'Método para eliminar un registro
Sub Eliminar(ByVal est As Alumno, ByVal tabla As String)
Dim isql As String = "DELETE FROM " & tabla
Dim cmd As OleDbCommand
If (tabla = "alumno") Then
'Termino la intrucción delete
isql = isql + " WHERE IdAlumno = @ID "
'Creadon un comando
cmd = New OleDbCommand(isql, Conectar())
'Agregando las variables parámetros
cmd.Parameters.Add(New OleDbParameter("@ID", OleDbType.Numeric))
cmd.Parameters("@ID").Value = est.Id
cmd.ExecuteNonQuery()
End If
End Sub
End Class
Como usted puede ver en la clase anterior, obtiene la ruta de la base datos para luego
pasarla a la respectiva cadena de conexión, consulta a su instructor por la ubicación de la
base de datos si tiene alguna duda.
La última clase que vamos a agregar a nuestro proyecto se va a llamar Cdao, esta clase es
muy importante, ya que es la que va a comunicar nuestra interfaz con las clases anteriores y
hará uso al mismo tiempo de la clase Conexión para manipular la información de la base de
datos, el código es el siguiente:
Imports System.Data.OleDb
Facultad de Estudios Tecnológicos
7
Public Class Cdao
'Constructores:
Public Sub New()
End Sub
'Método para agregar elementos
Public Sub AgregarRegistro(ByVal p As Object, ByVal t As String)
Dim NHConexion = New Conexion
NHConexion.Agregar(p, t)
End Sub
'Método para agregar elementos
Public Sub Modificar(ByVal p As Object, ByVal t As String)
Dim NHConexion = New Conexion
NHConexion.Actualizar(p, t)
End Sub
'Método para eliminar elementos
Public Sub Borrar(ByVal p As Object, ByVal t As String)
Dim NHConexion = New Conexion
NHConexion.Eliminar(p, t)
End Sub
'Método para obtener un elemento
Public Function getElemento(ByVal tabla As String, ByVal campofiltro As String,
ByVal filtro As Integer) As Persona
Dim objAlumno As Alumno = New Alumno 'Creando un objeto para retornar
Dim NHConexion = New Conexion
Dim dsRegisto As DataSet = New DataSet
Dim dtTabla As DataTable = New DataTable
Dim ssql = "SELECT * FROM " + tabla + " WHERE " + campofiltro + "=" +
CStr(filtro)
DataRow
dsRegisto = NHConexion.conSelect(ssql)
dtTabla = dsRegisto.Tables(0) 'Obtener un DataTable
Dim row As DataRow = dtTabla.Rows(dtTabla.Rows.Count - 1) 'Obtener un
'Llenando los campos del objeto a delvolver desde el DataTable
If Not (IsDBNull(row.Item("IdAlumno"))) Then
objAlumno.Id = CInt(row.Item("IdAlumno"))
End If
If Not (IsDBNull(row.Item("nombres"))) Then
objAlumno.Nombres = row.Item("nombres")
Else : objAlumno.Nombres = ""
End If
If Not (IsDBNull(row.Item("apellido1"))) Then
objAlumno.Apellido1 = row.Item("apellido1")
Else : objAlumno.Apellido1 = ""
End If
If Not (IsDBNull(row.Item("apellido2"))) Then
objAlumno.Apellido2 = row.Item("apellido2")
Else : objAlumno.Apellido2 = ""
End If
If Not (IsDBNull(row.Item("telefono"))) Then
objAlumno.Telefono = row.Item("telefono")
Else : objAlumno.Telefono = ""
End If
Facultad de Estudios Tecnológicos
8
If Not (IsDBNull(row.Item("email"))) Then
objAlumno.Email = row.Item("email")
Else : objAlumno.Email = ""
End If
If Not (IsDBNull(row.Item("direccion"))) Then
objAlumno.Direccion = row.Item("direccion")
Else : objAlumno.Direccion = ""
End If
If Not (IsDBNull(row.Item("edad"))) Then
objAlumno.Edad = CShort(row.Item("edad"))
Else : objAlumno.Edad = 0
End If
Return objAlumno
End Function
'Función para obtener los registros de una tabla
Public Overloads Function getRegistros(ByVal tabla As String) As DataSet
Dim NHConexion = New Conexion
Dim ssql = "select * from " + tabla
getRegistros = NHConexion.conSelect(ssql)
End Function
'Función para obtener los registros de una tabla con filtro por id
Public Overloads Function getRegistros(ByVal tabla As String, ByVal campofiltro
As String, ByVal filtro As Integer) As DataSet
Dim NHConexion = New Conexion
Dim ssql = "select * from " + tabla + " where " + campofiltro + " = " +
filtro
getRegistros = NHConexion.conSelect(ssql)
End Function
'Función para obtener los registros de una tabla con selects varios
Public Overloads Function getRegistros(ByVal tipoSelect As Integer, Optional
ByVal campofiltro As String = "", Optional ByVal filtro As Integer = 0) As DataSet
Dim NHConexion = New Conexion
Dim ssql As String = ""
If tipoSelect = 1 Then
ssql = "SELECT IdAlumno,nombres & ' ' & apellido1 & ' ' & apellido2 as
est FROM alumno"
End If
getRegistros = NHConexion.conSelect(ssql)
End Function
End Class
Ya tenemos nuestras clases, en este momento solamente cuenta con 4 clases definidas por el
programador más el formulario.
El primer formulario que vamos a diseñar será para agregar registros, debe quedar de la
siguiente manera:
Facultad de Estudios Tecnológicos
9
CONTROL
Form1
TextBox1
TextBox2
TextBox3
TextBox4
TextBox5
TextBox6
TextBox7
TextBox8
TextBox9
Button1
Button2
PROPIEDAD
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
VALOR
frmAgregar
Registro
txtIdA
txtNombresA
txtApellido1A
txtApellido2A
txtTelefonoA
txtDireccionA
txtEmailA
txtEdadA
txtGradoA
btnRegistrar
Registrar
btnLimpiar
Limpiar
El código para el primer formulario es el siguiente:
En el área general, vamos a crear un objeto de tipo Cdao para comunicar nuestra interfaz
con la base de datos y nuestras clases:
Facultad de Estudios Tecnológicos
10
Dim personas As Cdao = New Cdao
Agregue un procedimiento el siguiente procedimiento:
Private Sub limpiarCampos()
txtIdA.Text = ""
txtNombresA.Text = ""
txtApellido1A.Text = ""
txtApellido2A.Text = ""
txtTelefonoA.Text = ""
txtDireccionA.Text = ""
txtEmailA.Text = ""
txtEdadA.Text = ""
txtGradoA.Text = ""
End Sub
En el evento clic de btnRegistrar, el siguiente código:
Dim estudiante As Alumno = New Alumno
estudiante.Id = CShort(txtIdA.Text)
estudiante.Nombres = txtNombresA.Text
estudiante.Apellido1 = txtApellido1A.Text
estudiante.Apellido2 = txtApellido2A.Text
estudiante.Telefono = txtTelefonoA.Text
estudiante.Direccion = txtDireccionA.Text
estudiante.Email = txtEmailA.Text
estudiante.Edad = CShort(txtEdadA.Text)
estudiante.Grado = txtGradoA.Text
personas.AgregarRegistro(estudiante, "alumno")
valores copturados desde los cuadros de texto
'le mando el objeto con los
Dim respuesta As MsgBoxResult = MsgBox("Desea agregar otro registro?",
MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo, "Aviso")
If respuesta = MsgBoxResult.No Then
Me.Close()
Else
limpiarCampos()
End If
En el evento clic de btnLimpiar agregue el siguiente código:
limpiarCampos()
Tenemos nuestro primer formulario, puede ejecutarlo para comprobar su funcionamiento.
Agregue un nuevo formulario, el diseño se le presenta a continuación:
Facultad de Estudios Tecnológicos
11
CONTROL
Form2
DataGridView1
PROPIEDAD
Name
Text
Name
VALOR
frmConsultar
Consultar
dgvAlumnos
El código para este formulario es el siguiente:
Agregue un método llamado CargarLista():
'Método para cargar el lstAlumnos
Public Sub CargarLista(ByVal t As String)
Dim personas As Cdao = New Cdao
dgvAlumnos.DataSource = Nothing
dgvAlumnos.DataSource = personas.getRegistros(t)
dgvAlumnos.DataMember = "miTabla"
dgvAlumnos.Refresh()
With (dgvAlumnos)
.Columns(0).HeaderText = "Código"
.Columns(1).HeaderText = "Nombres"
.Columns(2).HeaderText = "Apellido 1"
.Columns(3).HeaderText = "Apellido 2"
.Columns(4).HeaderText = "Teléfono"
.Columns(5).HeaderText = "Correo Eletrónico"
.Columns(6).HeaderText = "Dirección"
.Columns(7).HeaderText = "Edad"
End With
End Sub
El código del evento Load() del presente formulario es:
CargarLista("alumno")
Facultad de Estudios Tecnológicos
12
Tenemos nuestro segundo formulario, puede ejecutarlo para comprobar su funcionamiento.
proceda a agregar uno nuevo, el diseño se presenta a continuación:
CONTROL
Form3
TextBox1
TextBox2
TextBox3
TextBox4
TextBox5
TextBox6
TextBox7
TextBox8
TextBox9
Button1
Button2
Facultad de Estudios Tecnológicos
PROPIEDAD
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
VALOR
frmActualizar
Actualizar
txtIdA
txtNombresA
txtApellido1A
txtApellido2A
txtTelefonoA
txtDireccionA
txtEmailA
txtEdadA
txtGradoA
btnConsultar
Consultar
btnActualizar
13
ComboBox1
Text
Name
Actualizar
cboAlumnos
El código para este formulario es el siguiente:
Primero agregue un método llamado CargarNombres():
'Método para llenar ComboBox
Sub CargarNombres()
Dim personas As Cdao = New Cdao
Dim tabla As DataTable = New DataTable
tabla = personas.getRegistros(1).Tables(0) 'Obtener un DataTable
cboAlumnos.DataSource = tabla
cboAlumnos.ValueMember = tabla.Columns(0).Caption.ToString() 'Obteniendo el
campo desde un DataColumn
cboAlumnos.DisplayMember = tabla.Columns("est").Caption.ToString()
'Obteniendo el campo desde un DataColumn
End Sub
El código para el evento Load del formulario es el siguiente:
CargarNombres()
En el evento clic de btnConsultar, el código es el siguiente:
Dim estudiante As Alumno = New Alumno
Dim personas As Cdao = New Cdao
estudiante = personas.getElemento("alumno", "IdAlumno",
CInt(cboAlumnos.SelectedValue))
txtIdA.Text = estudiante.Id
txtNombresA.Text = estudiante.Nombres
txtApellido1A.Text = estudiante.Apellido1
txtApellido2A.Text = estudiante.Apellido2
txtTelefonoA.Text = estudiante.Telefono
txtDireccionA.Text = estudiante.Direccion
txtEmailA.Text = estudiante.Email
txtEdadA.Text = estudiante.Edad
En el evento clic de btnActualizar, el código es el siguiente:
Dim estudiante As Alumno = New Alumno
Dim personas As Cdao = New Cdao
estudiante.Id = CShort(txtIdA.Text)
estudiante.Nombres = txtNombresA.Text
estudiante.Apellido1 = txtApellido1A.Text
estudiante.Apellido2 = txtApellido2A.Text
estudiante.Telefono = txtTelefonoA.Text
estudiante.Direccion = txtDireccionA.Text
estudiante.Email = txtEmailA.Text
estudiante.Edad = CShort(txtEdadA.Text)
estudiante.Grado = txtGradoA.Text
personas.Modificar(estudiante, "alumno")
'le mando el objeto con los
valores copturados desde los cuadros de texto
CargarNombres() 'Cargar ComboBox con datos actualizados
Facultad de Estudios Tecnológicos
14
Tenemos nuestro tercer formulario, puede ejecutarlo para comprobar su funcionamiento.
Proceda a agregar uno nuevo, el diseño se presenta a continuación:
CONTROL
Form4
TextBox1
TextBox2
TextBox3
TextBox4
TextBox5
TextBox6
TextBox7
TextBox8
TextBox9
Button1
Facultad de Estudios Tecnológicos
PROPIEDAD
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
VALOR
frmEliminar
Eliminar
txtIdA
txtNombresA
txtApellido1A
txtApellido2A
txtTelefonoA
txtDireccionA
txtEmailA
txtEdadA
txtGradoA
btnConsultar
Consultar
15
Button2
ComboBox1
Name
Text
Name
btnEliminar
Eliminar
cboAlumnos
Como pueda darse cuenta en el diseño del formulario, se le hace énfasis a que la opción de
eliminar no siempre es recomendada, el código para este formulario es el siguiente:
Primero agregue un método llamado CargarNombres():
'Método para llenar ComboBox
Sub CargarNombres()
Dim personas As Cdao = New Cdao
Dim tabla As DataTable = New DataTable
tabla = personas.getRegistros(1).Tables(0) 'Obtener un DataTable
cboAlumnos.DataSource = tabla
cboAlumnos.ValueMember = tabla.Columns(0).Caption.ToString() 'Obteniendo el
campo desde un DataColumn
cboAlumnos.DisplayMember = tabla.Columns("est").Caption.ToString()
'Obteniendo el campo desde un DataColumn
End Sub
Agregue el método limpiarCampos():
Private Sub limpiarCampos()
txtIdA.Text = ""
txtNombresA.Text = ""
txtApellido1A.Text = ""
txtApellido2A.Text = ""
txtTelefonoA.Text = ""
txtDireccionA.Text = ""
txtEmailA.Text = ""
txtEdadA.Text = ""
txtGradoA.Text = ""
End Sub
El código para el evento Load del formulario es el siguiente:
CargarNombres()
En el evento clic de btnConsultar, el código es el siguiente:
Dim estudiante As Alumno = New Alumno
Dim personas As Cdao = New Cdao
estudiante = personas.getElemento("alumno", "IdAlumno",
CInt(cboAlumnos.SelectedValue))
txtIdA.Text = estudiante.Id
txtNombresA.Text = estudiante.Nombres
txtApellido1A.Text = estudiante.Apellido1
txtApellido2A.Text = estudiante.Apellido2
txtTelefonoA.Text = estudiante.Telefono
txtDireccionA.Text = estudiante.Direccion
txtEmailA.Text = estudiante.Email
txtEdadA.Text = estudiante.Edad
Facultad de Estudios Tecnológicos
16
En el evento clic de btnEliminar, el código es el siguiente:
Dim personas As Cdao = New Cdao
'Solamente necesito el id, invoco a otro constructor
Dim estudiante As Alumno = New Alumno(CInt(txtIdA.Text))
Dim respuesta As MsgBoxResult = MsgBox("Seguro que desea eliminar el
registro de: " + txtNombresA.Text + " " + txtApellido1A.Text + " " +
txtApellido2A.Text, MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo, "Eliminar
Registro")
If respuesta = MsgBoxResult.Yes Then
personas.Borrar(estudiante, "alumno") 'le mando el objeto con los
valores copturados desde los cuadros de texto
MessageBox.Show("Registro Eliminado")
limpiarCampos()
CargarNombres() 'Cargar ComboBox con datos actualizados
End If
Tenemos nuestro cuarto formulario, puede ejecutarlo para comprobar su funcionamiento.
El siguiente pase consiste en crear un formulario MDI el cual va a invocar a los 4
formularios que ya hemos creado.
Antes de proceder a la creación de un MDI asegúrese que todos los formularios anteriores
se ejecutan de forma correcta, sin ningún tipo de error.
Agregue un nuevo formulario, en lugar de seleccionar Window Form, va a seleccionar la
opción MDI Parent Form y su nombre será frmPrincipal:
Facultad de Estudios Tecnológicos
17
La aplicación va a generar un formulario MDI junto con un menú y una barra de
herramientas, quedará de la siguiente forma:
Vamos a utilizar simplemente la barra de menú, así que elimine la barra de herramientas,
cualquier duda en este punto consulte a su instructor.
La barra de menú debe quedarle de la siguiente manera:
Facultad de Estudios Tecnológicos
18
Modifique las propiedades del proyecto para que el formulario de inicio sea el formulario
MDI, luego presione F5, al intentar compilar va a generar el siguiente error:
Y el listado de errores será parecido a lo siguiente:
La razón de este error es porque se ha eliminado la barra de herramientas que venía por
defecto y también se han eliminado algunas opciones de la barra de menú, haga doble clic
en cada uno de los errores listados para tener acceso a los bloques de código como el
siguiente:
Facultad de Estudios Tecnológicos
19
Simplemente elimine los bloques de código, tenga mucho cuidado en este punto, recuerde,
cualquier duda consulte a su instructor.
Una vez superado este inconveniente, ejecute el proyecto y en tiempo de ejecución va a
tener el siguiente formulario:
Por último vamos a crear la programación para cada una de las opciones del menú:
Doble clic sobre la opción Salir del menú Archivo, el código es el siguiente:
End
Doble clic sobre la opción Consultar del menú Transacciones, el código es el siguiente:
frmConsultar.MdiParent = Me
frmConsultar.Show()
Doble clic sobre la opción Agregar del menú Transacciones, el código es el siguiente:
frmAgregar.MdiParent = Me
frmAgregar.Show()
Doble clic sobre la opción Actualizar del menú Transacciones, el código es el siguiente:
frmActualizar.MdiParent = Me
frmActualizar.Show()
Facultad de Estudios Tecnológicos
20
Doble clic sobre la opción Eliminar del menú Transacciones, el código es el siguiente:
frmEliminar.MdiParent = Me
frmEliminar.Show()
Presione F5 y deberá tener una aplicación MDI que ejecuta las operaciones básicas en una
base de datos:
Facultad de Estudios Tecnológicos
21
INVESTIGACIÓN COMPLEMENTARIA
Investigue sobre cómo unir tres tablas relacionadas en un objeto DataSet implementando el
objeto DataRelation, así como el funcionamiento de los métodos GetChildRows y
GetParentRow.
ANÁLISIS DE RESULTADOS
Como puede darse cuenta en el formulario “Modificar”, aparece el cuadro de texto
“Grado” que no muestra información, realice las modificaciones necesarias para que en
lugar de un cuadro de texto sea un ComboBox el que despliegue la información, y que
además cuando se haga clic en el botón Actualizar se agregue un nuevo registro a la
tabla alumnogrado.
Realice las modificaciones necesarias para el siguiente formulario, el cual permite
consultar los grados cursados por un estudiante seleccionado. Tome en cuenta que
necesita de una relación de 3 tablas, consulte el diagrama ER presentado al principio.
Deberá implementar objetos DataRelations, así como los métodos GetChildRows y
GetParentRow.
Facultad de Estudios Tecnológicos
22
Descargar