miércoles, 25 de junio de 2014

Agregar y Buscar registros en la tabla Alumnos de SQL Server - Pregunta 2 (Ex.Final LPV 4to Ciclo)

Vamos a desarrollar la pregunta Nº 2 del examen final del curso de Lenguaje de Programación Visual (4to. Ciclo). Para el desarrollo hemos utilizado el Visual Studio 2010 (VBasic .Net). El enunciado es el siguiente:

- Programar un formulario que permita agregar y buscar elementos de la tabla Alumnos(codalu, nomalu, apealu,  ciclo, turno, carrera)

Para este caso vamos a utilizar la base de datos Universidad y la tabla Alumnos que creamos en la anterior publicación. Pueden revisar la publicación anterior en el siguiente enlace:
Solución:
1. Abrimos el Visual Studio 2010 (Visual Basic .Net) y realizamos los siguientes pasos:
  • Archivo, nuevo, proyecto…., Visual Basic
  • Seleccionar Aplicación de Windows Forms
  • Colocar de nombre al proyecto ConsultaInsertarAlumnos, desactivar la opción Crear directorio para la solución, aceptar.
2. Diseñaremos la siguiente interfaz de usuario y agregaremos los controles respectivos.



- Nos dirigimos a la ventana de propiedades y a cada objeto le asignamos sus propiedades según la siguiente tabla:

Objeto Propiedad Valor
Form
Text
Name
Agregar y Buscar Alumnos
frmBusquedaInsertar
Label1
Text
ALUMNOS
Label2
Text
CODIGO
Label3
Text
APELLIDO:
Label4
Text
CICLO:
Label5
Text
TURNO:
Label6
Text
CARRERA:
TextBox1
Name
txtCodigo
TextBox2
Name
txtNombre
TextBox3
Name
txtApellido
ComboBox1
Name
cboCiclo
RadioButton1
Name
Text
rbnManana
Mañana
RadioButton2
Name
Text
rbnNoche
Noche
ComboBox2
Name
cboCarrera
Button1
Text
Name
Buscar
btnBuscar
Button2
Text
Name
Agregar
btnAgregar
Button3
Text
Name
Limpiar
btnLimpiar

Procedimientos asociados a eventos de los objetos

Objeto Evento Nombre del método
Form
Load
frmBusquedaInsertar_Load
btnBuscar
Click
buscar
btnAgregar
Click
agregar
btnLimpiar
Click
limpiar
Definidos por el usuario
---
cargarDatos
limpiarControles

Para crear el procedimiento o métodos ya sabemos que tenemos que dirigirnos a la ventana de propiedades y hacer un en el icono del truenito para visualizar todos los eventos asociados al objeto (control), y podemos poner un nombre específico al método asociado al evento que usaremos.

3. Nos dirigimos a la ventana de código (haciendo doble clic sobre el formulario) y empezamos a programar:

Imports System.Data.SqlClient
Public Class frmBusquedaInsertar
    Dim con As SqlConnection
    Dim drd As SqlDataReader
    Private Sub frmBusquedaInsertar_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        con = New SqlConnection("integrated security=true;server=COMP-PCW01;database=Universidad")
    End Sub
    Private Sub buscar(sender As System.Object, e As System.EventArgs) Handles btnBuscar.Click
        Dim codigo As Integer
        codigo = Val(txtCodigo.Text)
        If Not IsNumeric(codigo) Then
            MsgBox("Ingrese un Código númerico para la búsqueda", MsgBoxStyle.Information)
            txtCodigo.Focus()
            Return
        End If
        Try
            con.Open()
            Dim cmd As SqlCommand = New SqlCommand("Select [codalu],[nomalu],[apealu],[ciclo],[turno],[carrera] From Alumnos where codalu='" + Str(codigo) + "'", con)
            drd = cmd.ExecuteReader()
            If Not drd.HasRows Then
                MsgBox("No existe Alumno con el Código " + Str(codigo), MsgBoxStyle.Information)
                limpiarControles()
                txtCodigo.Focus()
                con.Close()
                Return
            End If
            cargarDatos()
            drd.Close()
        Catch ex As SqlException
            Dim er As SqlError
            For Each er In ex.Errors
                MsgBox(er.Message)
            Next
        End Try
        con.Close()
    End Sub

    Private Sub cargarDatos()
        Dim turno As String
        drd.Read()
        txtNombre.Text = drd(1).ToString
        txtApellido.Text = drd(2).ToString
        cboCiclo.Text = drd(3).ToString
        turno = drd(4).ToString
        If turno = "D" Then
            rbnManana.Checked = True
            rbnNoche.Checked = False
        Else
            rbnManana.Checked = False
            rbnNoche.Checked = True
        End If
        cboCarrera.Text = drd(5).ToString
    End Sub

    Private Sub limpiar(sender As System.Object, e As System.EventArgs) Handles btnLimpiar.Click
        limpiarControles()
    End Sub
    Private Sub limpiarControles()
        txtCodigo.Clear()
        txtNombre.Clear()
        txtApellido.Clear()
        cboCiclo.Text = ""
        cboCarrera.Text = ""
        txtCodigo.Focus()
    End Sub

    Private Sub agregar(sender As System.Object, e As System.EventArgs) Handles btnAgregar.Click
        Dim codigo As Integer
        codigo = Val(txtCodigo.Text)
        If Not IsNumeric(codigo) Then
            MsgBox("Ingrese un Código númerico para Agregarlo", MsgBoxStyle.Information)
            txtCodigo.Focus()
            Return
        End If
        If txtCodigo.Text = "" Or txtNombre.Text = "" Or txtApellido.Text = "" Or cboCiclo.Text = "" Or cboCarrera.Text = "" Or (rbnManana.Checked = False And rbnNoche.Checked = False) Then
            MsgBox("Debe de llenar todos los campos para agregar un Nuevo Alumno", MsgBoxStyle.Information)
            Return
        End If
        Try
            con.Open()
            Dim cmd As SqlCommand = New SqlCommand("Select [codalu] From Alumnos where codalu='" + Str(codigo) + "'", con)
            Dim valor As String = cmd.ExecuteScalar()
            If valor <> "" Then
                MsgBox("Código de Alumno " + Str(codigo) + " ya existe", MsgBoxStyle.Information)
                txtCodigo.Focus()
                con.Close()
                Return
            End If
            cmd = New SqlCommand("Insert into Alumnos (codalu, nomalu, apealu, ciclo, turno, carrera) values(@codalu,@nomalu,@apealu,@ciclo,@turno,@carrera)", con)
            cmd.Parameters.AddWithValue("@codalu", codigo)
            cmd.Parameters.AddWithValue("@nomalu", Trim(txtNombre.Text))
            cmd.Parameters.AddWithValue("@apealu", Trim(txtApellido.Text))
            cmd.Parameters.AddWithValue("@ciclo", Integer.Parse(cboCiclo.Text))
            Dim turno As String
            If rbnManana.Checked = True Then
                turno = "D"
            Else
                turno = "N"
            End If
            cmd.Parameters.AddWithValue("@turno", turno)
            cmd.Parameters.AddWithValue("@carrera", cboCarrera.Text)
            cmd.ExecuteNonQuery()
            MsgBox("Alumno Registrado con código " + Str(codigo), MsgBoxStyle.Information)
        Catch ex As SqlException
            Dim er As SqlError
            For Each er In ex.Errors
                MsgBox(er.Message)
            Next
        End Try
        con.Close()
    End Sub
End Class

4. Aquí mostramos la aplicación en ejecución, para realizar una búsqueda debemos ingresar un código (1..10) y dar clic en Buscar. Para agregar debemos de rellenar todos los campos y presionar Agregar.

interfaz2-2
Cualquier consulta no duden en hacerlo y si les gusto entonces recomiéndenlo.

Ojo: Nos e olviden de hacer los cambios en la cadena de conexión con los datos de su computador.

1 comentario:

  1. Excelente amigo! :D Me sirvio full, pero si por ejmplo quisiera hacer lo mismo pero utilizando java?

    ResponderEliminar