Asesoría y capacitación en informática

Caso Desarrollado

Implemente una aplicación que permita registrar los datos de un nuevo personal como parte del Sistema de Control de Personal. Los datos que se necesita registrar es el nUmero de DNI, los nombres y apellidos, la categoría a la que pertenece (A, B, C ,D) y su fecha de nacimiento. Use la clase Arraylist.

Tener en cuenta:

  • Se debe validar el contenido de los controles que interactuan con el usuario
  • El DNI debe contener 8 caracteres numéricos,
    • Los nombres y apellidos no deben estar vacíos.
    • Debe seleccionar una categoría obligatoriamente.
    • La fecha de nacimiento debe ser una fecha valida, use el objeto MaskedText
  • Para registrar las categorias del personal debe implementar un procedimiento que permita agregar al cuadro combinado un rango de A hasta D.
  • Implemente un procedimiento que permita configurar la cabecera dentro del objeto ListView para un listado de personal adecuado,
  • Implemente funciones GET para la captura de los valores ingresados por el usuario
  • El botón LISTAR EL PERSONAL devuelve los registros obtenidos desde el ArrayList y lo envía al ListView.
  • Al registrar correctamente a un personal debe mostrar un mensaje de Personal registrado correctamente.

Solución:

1. Archivo > Nuevo Proyecto. Seleccione Aplicación de Windows Forms desde la plantilla Visual Basic y finalmente asigne el nombre pjEmpresa.

2. Coloque los objetos necesarios para la aplicación, como se muestra en la Figura.

Ahora le asignaremos las propiedades necesarias a los objetos contenidos dentro del Formulario

Form1(Archivo)(Name)      frmRegistro
Form1(Objeto)      Text      SISTEMA DE CONTROL DE PERSONAL       Size       477,400
Label1      Text      REGISTRO DE PERSONAL
Label2      Text      DNI
Label3      Text      NOMBRES Y APELLIDOS
Label4      Text      CATEGORIA
Label5      Text      FECHA NAC.
TextBox1(Name)      txtDni  Maxsize      8
TextBox2(Name)      txtNombres
MaskedTextBox1(Name)      txtFecha Format      Seleccione formato de fecha
ComboBox1(Name)      cboCategoria
Button1(Name)      btnLlenar       Text      LLENAR ARRAY
Button2(Name)      btnMostrar       Text      MOSTRAR ARRAY
ListView1(Name)      lvPersonal

3. Ahora crearemos la clase Personal dentro del mismo proyecto, para lo cual debe presionar derecho sobre el Proyecto > Agregar > Clase, como lo muestra las figuras.

4. Implementaremos el código de la clase Personal, hay que tener en cuenta que también puede crear un Diagrama de Clase y autogenerar el código fuente de la clase.

En el punto uno se declaran los atributos de la clase personal, en el punto dos se implementan las propiedades por cada atributo de la clase Personal

5. Implementaremos el código del formulario frmRegistro.

Explicación

En el punto uno se crea el objeto arregloPersonal que será un nuevo objeto de la clase ArrayList y será la que registrara todos los datos del Personal.

En el evento load del formulario se realiza la llamada a los procedimientos iniciales es decir al iniciar el formulario ya debería estar lleno el cuadro combinado de las categoría del empleado y configurado las cabeceras del ListView.

En el punto dos se implementa el procedimiento LlenaCategoria que permite agregar los valores de la categoría al cuadro combinado.

En el punto tres se implementa el procedimiento configuraListaPersonal que prepara el encabezado que mostrar la lista de Personal mediante el objeto ListView. View Details configura a la lista como vista en detalles ya que inicialmente los valores aparece como iconos pequeños, GridLines en True para visualizar líneas de divisiones entre los valores contenidos en la lista, luego se define la cabecera agregando columnas a la lista en el punto se define el ancho de la columna separado por una coma si coloca una coma más podrá configurar la alineación de los valores.

En el punto cuatro se implementan funciones que tienen la misión de capturar los valores seleccionados o ingresados por el usuario

En el punto cinco se implementa la función valida que tiene por misión verificar que tipo de valores es ingresado por el usuario. En el objeto txtDni se verifica que la longitud de sus caracteres no sea menor a 8 ya que los DNI tienen un límite de 8 pero menor. También se mide la longitud de caracteres de los nombres ya que no estará permitido ingresar espacios vacíos, la función LEN determina el total de caracteres y TRIM elimina espacios en blanco a ambos extremos del valor evaluado. Con respecto al cuadro combinado la forma de evaluar un posible error es no seleccionando ningún valor de la lista, es decir, no tocarlo, entonces se verifica que su índice sea inferior a cero; con 1 será suficiente para determinar que el usuario no ha seleccionado una categoría y finalmente la fecha de nacimiento tendrá que ser evaluada sobre el formato de la misma para esto se usa la función IsDate que permite comprobar que el valor ingresado sea el formato adecuado.

En el punto seis se implementa un procedimiento de limpieza para todos los objetos contenidos en el formulario. Empezamos por limpiar los cuadros de texto para esto se uso un For Each ya que todos esos objetos son similares evaluaremos el tipo TextBox para limpiarlos a todos con una sola instrucción. El tipo de datos Control hace referencia a todos los objetos del formulario; por lo tanto, el For Each recorre por todos los objetos y los identifica por la sentencia TypeOf, los cuadros de texto tienen el nombre TextBox como objeto de control mientras que MaskedTextBox representa al cuadro de texto de la fecha.

Para poder limpiar el control del cuadro combinado se hace referencia a la posición -1 de la propiedad SelectIndex, recuerde que la posición cero tiene el primer valor agregado.

Antes de entrar al siguiente punto hay que especifica que dentro del botón btnRegistrar se podrían ocasionar la mayoría de errores que pueden no ser reconocidas en su total por ese motivo se activo la detección de errores con On Error GoTo Imprevisto, esto crea un punto de inicio de control de los errores posibles en la aplicación.

En el punto siete se crea el objeto objPersonal que será una instancia de la clase Personal, eso quiere decir que podremos tener acceso a los atributos y métodos declarados en la clase Personal

En el punto ocho se invoca a la función Valida para comprobar los valores ingresados al momento de registrar los datos, considere que si la función devuelve vacío, quiere decir que no hubo errores y; por lo tanto, se podrá capturar los valores ingresados y enviados a los atributos de la clase Personal por medio del objeto objPersonal.

En el punto nueve se envía al objeto ArrayList arregloPersonal todos los valores registrados en el objeto objPersonal, recuerde que este último tiene registrado el DNI, nombres, categoría y fecha de nacimiento. Adicionalmente, se muestra un mensaje de registro correcto y se limpian los objetos por medio de la función limpiarControles.

En caso la validación tenga un valor que mostrar la cláusula Else se activara para mostrar el mensaje de error respectivo. Observe que al finalizar la condicional se agregó la sentencia Exit Sub para poder salir del procedimiento en caso no se encontrase error alguno, ya que si hubiera un error en la aplicación automáticamente se activa el error y lo envía a la línea de improviso en la cual encontrará un mensaje de Error > Ocurrió un error al registrar al Personal.

En el punto diez se implementa el código que funcionara al presionar el botón Lista y lo primero que debemos realizar es limpiar el control ListView ya que siempre obtendremos valores desde el ArrayList. Luego usamos a la estructura repetitiva For Each para recorrer por todos los elementos registrados en el ArrayList con For Each unPersonal as Personal in arregloPersonal), unPersonal es la variable de la clase Personal que tiene por misión almacenar todos los valores obtenidos desde la colección arregloPersonal.

Luego se envía valor por valor a la lista, como vimos anteriormente la variable de clase unPersonal tiene todos los valores por ciclo de repetición del For Each es desde aquí de donde obtendremos los datos a imprimir. Cada vez que ingrese una fila de valores al ListView tiene que crear un nuevo objeto de la clase ListViewItem con un elemento inicial obligatorio en este caso el DNI representa el primer valor por cada fila registrada.

En el punto once se implementa el código que permitirá bloquear los caracteres que no sean números para que al registrar el DNI el usuario no los ingrese y solo puede registrar números, recuerde que la función Valida solo comprueba que no esté vacío y que no sea menor a 7 números pero no controla el valor tecleado.