Arreglos en Visual Basic .Net
Uso de Arreglos de dos dimensiones

Fecha: 30/Nov/2004 (Noviembre de 2004)
Autor: Ing. Fernando Luque Sánchez   - Trujillo - Perú

Emails: fls2303@hotmail.com fluque@infonegocio.net.pe

 


El presente trabajo pretende colaborar con el conocimiento de Visual Basic .Net y de las opciones especificas de los arreglos de dos dimensiones. El ejemplo maneja dos arrays bidimensionales que tienen relación (ya se que podría hacerse usando DataSet y DataTables), pero la idea del ejercicio es justamente el manejo de arrays bidimensionales.

Un poco de teoría

Los Arrays o arreglos son conjuntos de Variables Agrupadas con un nombre, que se pueden manejar juntas o individualmente, en Visual Basic .Net se pueden tener arreglos desde una dimensión y hasta un máximo de 32 dimensiones.

Como se definen

Para definir un arrays se utiliza Dim, Private, Friend o Public según el alcande del mismo, por ejemplo la orden:

Dim Cursos( , ) As String

Define el array Cursos sin asignarle la cantidad de elementos de cada dimensión. El array anterior tendrá que redefinirse a nivel de procedimiento usando la instrucción Redim, está funciona unicamente cambiando el tamaño de la última dimensión. Generalmente se usa una variable que va aumentando, suponer que la variable Incluidos es la utilizada, la instrucción podría ser como la siguiente:

Redim Cursos(2,Incluidos)

y para conservar los datos actuales en el Array se utiliza la palabra Preserve:

Redim Preserve Cursos(2,Incluidos)

 

Algo de lo que contiene

Todos los elementos del arrays deben ser del mismo tipo.En Visual Studio .Net los arrays derivan de la clase Arrays del NameSpace System. Esta Clase (Array) proporciona los métodos para crear, manipular, realizar busquedas y ordenación de arrays.

Un elemento es un valor de Array, al que se puede acceder haciendo uso del indice o indices según las dimensiones. Por ejemplo, para acceder al elemento de la segunda fila y la tercera columna del arrays bidimensional con nombre Cursos se debe escribir Cursos(1,2), cabe adelantar que en Visual Basic .Net el valor inicial de cada dimensión es CERO. El método GetLowerBound permite obtener el límite inferior de una determinada dimensión. Para el límite superior de la dimensión especificada se utiliza el método GetUpperBound.

La longitud de Array es el número total de elementos que puede contener. El método GetLength permite obtener el número de elementos de un array.

El rango de Array es el número de dimensiones de Array. La Propiedad Rank permite obtener el número de dimensiones de una array.

Ahora mi ejercicio

El sistema de control de Matriculas de un instituto es muy lento, se necesita que los datos puedan procesarse de manera mas rápida y segura, se decide hacer un sistema por computadora; este deberá registrar según los siguientes productos descritos en la tabla:

Cod. Producto

Descripción

IES

Computación e Informática

SEC

Secretariado Ejecutivo

DBS

Da Bussines

 

De acuerdo a los Productos antes registrados pueden crearse cursos o promociones, el sistema ingresará y pedirá: Número de la promoción en el formato 9999-XX donde las 9999 será el año actual y las XX el número del curso registrado en el año, por ejemplo; 01, 02, 03, etc., también deberá registrarse la descripción del curso, la fecha de inicio, el número de vacantes y la cantidad de matriculados.

 

Una vez registrado el o los cursos, se podrá matricular alumnos, de los cuales se pedirá el ingreso de Apellidos, Nombres, teléfono y fecha de matricula. Los datos por cada curso deben de registrarse y aparecer en un formulario de reporte.

 

Los datos de la tabla siguiente :

Producto

Promociones

Matriculados

 

 

 

 

IES 

Computación e Informática

2004-06

Computacion e Informática

Fecha de Inicio: 01/11/2004

Vacantes: 25

Luque Villacorta, Fernando

Telf. 9458548

Fecha: 25/10/2004

 

2004-07

Computación e Informática

Fecha de Inicio: 05/11/2004

Vacantes: 20

Pereda Geronimo, Luis

Telf. 9444567

Fecha: 28/09/2004

Terranova Carrion Esmeralda

Telf. 9499498

Fecha: 30/09/2004

SEC

Secretariado Ejecutivo

 

2004-10

Secretariado Ejecutivo

Fecha de Inicio: 08/11/2004

Vacantes: 30

 

Hinostroza Ramirez Carlos

Telf. 9645676

Fecha: 30/09/2004

Villacorta Acosta, Carol

Telf. 96442567

Fecha: 30/09/2004

2004-12

Secretariado Ejecutivo

Fecha de Inicio: 12/11/2004

vacantes: 25

Bolivar Saldaña, Silvia

Telf. 96656443

Fecha: 30/09/2004

Sanchez Campos, Julia

Telf. 9644444

Fecha: 01/10/2004

 

Nota: Bajar el empaquetado del ejercicio para ejecutarlo, fue hecho con Visual Studio 2002.  

A continuación sigue parte del código en Visual Basic:

En el Módulo:

 

'************* MODULO *******************

 'Programación: Ing. Fernando Luque Sánchez

 'Noviembre 2004

 Module SistMatriculas

     'Definicion de las variables para Productos

     Public vProducto As String

     'Para saber el Número de Promociones Aperturadas

     Public vNumPromos As Integer

  

    'Para saber el Número de Alumnos Matriculados

     Public vNumAlumnos As Integer

     '''' ARREGLOS PARA ALMACENAR LOS DATOS

     'Para Alamcenar los datos de las promociones

     Public aPromos(,) As String  'CódPromo, Descrip, Fecha, Vacantes, Matriculados

     'Para Alamcenar los datos de los alumnos

     Public aAlumnos(,) As String  ' CodAlumno, CodPromo, Descrip,

     '                               Nombre, Telefono y Fecha Matricula

 

    'Para el Título del Reporte

     Public VTitulo As String

 

    'Datos de un Curso Aperturado

     Public vDescrip As String

     Public vCodigo As String

     Public Vfechainicio As Date

     Public vVacantes As Integer

 

    'Para saber si los Formularios están abiertos

     Public fPromosA As Integer

 

End Module

 

 

 

En el formulario Principal

 

Public Class frmPrincipal

     Inherits System.Windows.Forms.Form

 

#Region " Código generado por el Diseñador de Windows Forms "

 

               *** codigo eliminado

 

#End Region

 

 

    Private Sub Reportes(ByVal sender As System.Object, _

         ByVal e As System.EventArgs) Handles mnuRepPromos.Click

        

         If sender Is mnuRepPromos Then

             'REPORTE SOLAMENTE DE LAS PROMOCIONES ABIERTAS

             Dim NReporte As New frmReportes()

             VTitulo = "Reporte de Promociones"

             NReporte.ShowDialog()

         ElseIf sender Is mnuRepAlumnosPromo Then

             'Reporte de los alumnos por Promocion

             Dim RepAlumnos As New frmRepAlumnxPromo()

             RepAlumnos.ShowDialog()

         End If

     End Sub

 

    Private Sub Salir(ByVal sender As System.Object, _

         ByVal e As System.EventArgs) Handles mnuSalir.Click

         Application.Exit()

     End Sub

 

    'MUESTRA EL FORMULARIO DE INGRESO DE PROMOCIONES.

     Private Sub mnuIngPromo_Click(ByVal sender As System.Object, _

         ByVal e As System.EventArgs) Handles mnuIngPromo.Click

         mnuIngPromo.Enabled = False

         Dim iPromos As New frmPromociones()

         iPromos.MdiParent = Me

         iPromos.Show()

     End Sub

 

    'Procedimientos para la Inserción de Alumnos

     Private Sub mnuIngAlumnos_Click(ByVal sender As System.Object, _

             ByVal e As System.EventArgs) Handles mnuIngAlumnos.Click

         Dim formAlumnos As New fAlumnosMatri()

         Me.mnuIngAlumnos.Enabled = False

         formAlumnos.ShowDialog()

     End Sub

 

    'ACERCA DE....

     Private Sub AcercaDe(ByVal sender As System.Object, _

         ByVal e As System.EventArgs) Handles MenuItem2.Click

         Dim fAcerca As New frmAcerca()

         fAcerca.ShowDialog()

     End Sub

 

    'Para determinar si el número de Promociones es Mayor a Cero

     Private Sub mnuMoves_Click(ByVal sender As System.Object, _

         ByVal e As System.EventArgs) Handles mnuMoves.Click, mnuMoves.Select

         If fPromosA = 0 Then mnuIngPromo.Enabled = True _

             Else mnuIngPromo.Enabled = False

         If vNumPromos = 0 Then mnuIngAlumnos.Enabled = False _

             Else mnuIngAlumnos.Enabled = True

     End Sub

 

    Private Sub mnuReporte_Select(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuReporte.Select

         If vNumPromos = 0 Then mnuRepPromos.Enabled = False _

                     Else mnuRepPromos.Enabled = True

         If vNumPromos = 0 OrElse vNumAlumnos = 0 Then mnuRepAlumnosPromo.Enabled = False _

             Else mnuRepAlumnosPromo.Enabled = True

     End Sub

 End Class

 


ir al índice

Fichero con el código de ejemplo: Tamaño 32 KB