viernes, 4 de septiembre de 2015

Vector o Arreglo
Son áreas de memoria compuesta por varias localidades.
Vector hay de unidimensional  de 2 dimensiones (bidimensional)  y de múltiples dimensiones (varias dimensiones)
Vectores inicial con localidad 0

UNIDIMENSIONAL
La localidad a la cual se refiere se llama índice

0
1
2
3
4
                                                                   5
BIDIMENSIONAL
Cuando un índice toma más de una localidad se llama matriz
Dim datos (5,2) as doublé

0
1
2
1


2


3


4


5








MULTIPLES DIMENSIONES
En Basic, Java y otros lenguajes es posible declarar matrices multidimensionales, entendiéndolas como un vector de x dimensión. En dichos casos en número de elementos del vector es el producto resultante de cada dimensión.
Por ejemplo el vector v(4,1) tiene 10 elementos se calcula del siguiente modo: (0-4) * (0-1). Los elementos de la primera dimensión del vector contiene 5 elementos que van del '0' al '4' y la 2º dimensión tiene 2 elementos que van desde '0' a '1'. Los elementos serían accedidos del siguiente modo:
elemento 1: (0,0)
elemento 2: (0,1)
elemento 3: (1,0)
...
elemento 8: (3,1)
elemento 9: (4,0)
elemento 10: (4,1)


PRINCIPALES OPERACIONES QUE SE REALIZAN CON LOS DATOS DE UN VECTOR O UNA MATRIZ
Ingresar datos a ese vector o matriz
Consultar los datos ingresados (un solo datos o todos los datos)
Modificar o actualizar los datos de ese vector
Eliminar un dato o todo el contenido de vector o matriz
Ordenar o sortear los datos (ascendentes o descendentes)






Ejercicio No 1
Public Class Form1
    'definicion de vectores de una dimension (un indice)
    Dim nomemp As String = ""
    Dim v_nomemp(5) As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'asignar un valor a una variable
        nomemp = "Yovana Tite"
        'MsgBox("El Nombre del Empleado es:" + nomemp)
        v_nomemp(0) = "Jonathan Munoz"
        v_nomemp(1) = "Jacob Munoz"
        v_nomemp(2) = "Sophia Munoz"
        v_nomemp(3) = "Julissa Tite"
        v_nomemp(4) = "Luis Tite"
        v_nomemp(5) = "Jesus Leon"
        'ingresar datos por teclado, es una localidad del vector
        v_nomemp(5) = InputBox("Ingrese el un nombre de empleado")
        MsgBox("Usted ingreso por teclado el nombre del empleado : " + v_nomemp(5))



        'MsgBox("El Empleado de la Localidad 0 es :" + v_nomemp(0))
    End Sub
End Class

Ejercicio No 2
Public Class Form1
    'definicion de vectores de una dimension (un indice)
    Dim v_sueldos(2) As Double
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'asignar un valor a una variable
        v_sueldos(0) = 1000

        'obtener con una operacion matematica el valor de sueldo localidad2
        'incremento
        v_sueldos(1) = v_sueldos(0) * 1.1

        'decremento
        v_sueldos(2) = v_sueldos(1) - (v_sueldos(1) * 0.2)

        MsgBox("El sueldo del empleado3 es :" & v_sueldos(2))
    End Sub
End Class




Ciclos de Repeticion.
Repetir procesos
FOR i = 1 to 5
NEXT

EJERCICIO No 3
Public Class Form1
    'definicion de vectores unidimensionales

    Dim vNombre(2) As String
    Dim vSueldo(2) As Double
    Dim vDecimo(2) As Double

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'definicion de la variable que funciona como indice de vectores
        Dim i As Integer
        'cliclo de repeticion, que nos permite ingresar datos y obtener resultados dentro de vectores

        For i = 0 To 2
            vNombre(i) = InputBox("Ingrese los nombres de Empleados")
            vSueldo(i) = InputBox("Ingrese Sueldo Base de Empleados")
            vDecimo(i) = vSueldo(i) / 12
        Next

    End Sub

    Private Sub cmbMostrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbMostrar.Click
        For i = 0 To UBound(vNombre)
            lsxNombre.Items.Add(vNombre(i))
            lsxSueldo.Items.Add(vSueldo(i))
            lsxDecimo.Items.Add(vDecimo(i))
        Next
    End Sub

    Private Sub cmbConsulta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbConsulta.Click
        lsxNombre.Items.Clear()
        lsxSueldo.Items.Clear()
        lsxDecimo.Items.Clear()

        TextBox1.Focus()

        For i = 0 To 2
            If TextBox1.Text = i Then
                lsxNombre.Items.Add(vNombre(i))
                lsxSueldo.Items.Add(vSueldo(i))
                lsxDecimo.Items.Add(vDecimo(i))
            End If
        Next

    End Sub

End Class



ARREGLOS O VECTORES
Los Arreglos se utilizan para almacenar un conjunto de variables, que sean del mismo tipo de dato, y todas estas bajo un mismo nombre.
Por ejemplo imaginemos que tenemos 20 variables de tipo String que almacenan nombres (nombre1, nombre2, etc..). si yo ahora quisiera pasar todas estas cadenas a minúsculas tendría que utilizar la función Lcase con cada variable: nombre1 = Lcase(nombre1), nombre2 = Lcase(nombre2), etc..
En cambio si utilizara un arreglo solucionaría mi problema solo a esto
    Dim nombres(30) As String

    For x = 0 To 30

        nombres(x) = LCase(nombres(x))
   
    Next 

Siguiendo el ejemplo anterior: en vez de escribir la sentencia Lcase 30 veces para cada variable, hemos utilizado un arreglo llamado nombres con un número de índice 30 , es decir que almacena 30 datos de tipo String


Declaración de los arreglos en el código
Para crear un arreglo se debe en primer lugar declararlo como cualquier otra variable, la única diferencia es que debemos indicar la cantidad de elementos que contendrá el arreglo, colocando el número de índice entre paréntesis. Por ejemplo :
Lo siguiente crea un arreglo de 15 elementos o datos de tipo integer
Dim miArreglo (1 to 15) as integer

Esto crea un arreglo de 11 elementos o datos de tipo String
Dim empleados (10) as String

Como podemos ver en el primer ejemplo hemos declarado un arreglo llamado miArreglo y entre paréntesis hemos declarado el rango de capacidad del mismo, es decir la cantidad de datos que podrá contener
El primer número , el 1 , indica el límite inferior del mismo, y el número 15 indica el límite máximo del arreglo, conformando de esta manera un arreglo que podrá almacenar 15 datos de tipo string.
En el segundo ejemplo, declaramos un arreglo de 11 elementos de tipo string. Como podés ver hemos indicado solo un número que representa el valor máximo del mismo. Cabe aclarar que hemos puesto de índice el número 10, pero en realidad el arreglo contiene 11 elementos ya que cuando NO indicamos el limite inferior , se asume que el mismo comienza desde el 0.
Importante: los arreglos se dividen en 2 grupos, los vectores y las matrices. Los vectores son arreglos que contienen una sola dimensión y las matrices 2 o mas dimensiones.

Acceder a los datos de un arreglo
Para acceder a los datos de un arreglo o vector, debemos hacerlo mediante el índice o número del elemento del mismo. Por ejemplo:
Dim alumnos(1 To 4) As String

alumnos(1) = "juan"
alumnos(2) = "micaela"
alumnos(3) = "maría"
alumnos(4) = "ignacio"

Primero declaramos un arreglo llamado alumnos, de tipo string y que contendrá 4 elementos. Luego le asignamos un valor de cadena como a cualquier otra variable de tipo string, pero con la diferencia que para referirnos al elemento utilizamos el n° de índice del mismo.




Otro ejemplo
Dim paises(2) As String
   
    ' Llena el vector con datos
    paises(0) = "Argentina"
    paises(1) = "Perú"
    paises(2) = "Brasil"
   
    ' Recorre los elementos del vector
    For x = 0 To 2

        MsgBox "Nombre del país : " & paises(x)

    Next x 

En este último ejemplo, declaramos y creamos un vector de 3 elementos que contendrá el nombre de 3 países. Luego en un bucle For utilizamos la función MsgBox para mostrar los elementos del arreglo, pasándole como parámetro del índice la variable x del bucle For

Utilizar una estructura Type o UDT en un arreglo
Como vimos, en un arreglo podemos almacenar datos de cualquier tipo pero no mezclarlos, es decir podemos crear arreglos de tipo string, de tipo Integer etc,,, pero sin duda que lo mas importante y de mas utilidad a la hora de programar es la utilización de datos definidos por nosotros mediante una estructura Type






Por ejemplo:
Option Explicit


' Estructura de dato para el vector
Private Type agenda

    nombre As String
    apellido As String
    cpostal As Integer

End Type

' Declaramos el vector
Dim personas(1 To 3) As agenda


Private Sub Form_Load()


    ' Llenamos con datos para el elemento 1 del arreglo

    personas(1).nombre = "carlos"
    personas(1).apellido = "Martínez"
    personas(1).cpostal = 1900

    ' Llenamos con datos para el elemento 2 del arreglo

    personas(2).nombre = "Héctor"
    personas(2).apellido = "rosales"
    personas(2).cpostal = 1898

    ' Llenamos con datos para el elemento 3 del arreglo

    personas(3).nombre = "Albert"
    personas(3).apellido = "Einstein"
    personas(3).cpostal = 1324

End Sub 

Para utilizar una estructura definida por nosotros en vectores o matrices, se hace de la forma habitual, con la diferencia que debemos declarar el arreglo utilizando el tipo de dato Type que hayamos creado, en este caso Dim personas(1 to 3) as agenda


Las matrices

Como se dijo anteriormente, las matrices son arreglos de mas de 1 dimensión (2 o mas), a diferencia de los vectores que poseen una sola dimensión.
Podemos imaginar una matriz bidimensional ( 2 dimensiones) , como una cuadrícula con filas y columnas, donde las filas representarían las coordenadas x y las columnas las coordenadas y.
A una matriz de 3 dimensiones o tridimensional se la puede imaginar con las coordenadas x, y, z, y esta es ideal para representar figuras en el espacio por ejemplo.
Las matrices se declaran en el código de manera igual que los vectores, con la diferencia que debemos indicar mas subíndices de acuerdo a la cantidad de dimensiones que posea la matriz.
por lo general no se suele utilizar matrices de mas de 3 dimensiones..

Ejemplo de matriz de 2 dimensiones




Matriz bidimensionales de 6 x 8 (de 2 dimensiones).
Dim personas (1 to 6, 1 to 8) as string

Si luego quisiera acceder a los datos de la misma basta con referirnos a los subíndices
Por ejemplo:
personas (1, 1) = "Natalia"
personas (2, 1) = "pedro"
personas (1, 7) = "valeria"
personas (1, 8) = "josé"
personas (2, 2) = "carolina"
personas (4, 1) = "raquel"
personas (6, 2) = "eustaquio"
personas (6, 5) = "maria"
personas (6, 8) = "mariana"

El total de índices posibles para almacenar datos o valores en el ejemplo anterior es de 48 datos, ya que si multiplicamos 6 x 8 nos da como total 48 valores posibles para utilizar en la matriz bidimensional.

En este ejemplo creamos una matriz de 3 dimensiones de 3 x 3 x 3
Dim cubo (1 to 3, 1 to 3, 1 to 3) as integer
Para acceder a los datos sería exactamente de la misma manera pero debemos utilizar un índice mas.
Ejemplo:
cubo (1, 1 , 1) = 50
cubo (1, 1 , 2) = 50
cubo (1, 1 , 3) = 50
cubo (1, 2 , 1) = 50
cubo (1, 2 , 2) = 50
cubo (1, 2 , 3) = 50
cubo (1, 3 , 1) = 50
cubo (1, 3 , 2) = 50
cubo (1, 3 , 3) = 50
cubo (2, 1 , 1) = 50
cubo (2, 1 , 2) = 50
cubo (2, 1 , 3) = 50
cubo (2, 2 , 1) = 50
cubo (2, 2 , 2) = 50
cubo (2, 2 , 3) = 50
cubo (2, 3 , 1) = 50
cubo (2, 3 , 2) = 50
cubo (2, 3 , 3) = 50
cubo (3, 1 , 1) = 50
cubo (3, 1 , 2) = 50
cubo (3, 1 , 3) = 50
cubo (3, 2 , 1) = 50
cubo (3, 2 , 2) = 50
cubo (3, 2 , 3) = 50
cubo (3, 3 , 1) = 50
cubo (3, 3 , 2) = 50
cubo (3, 3 , 3) = 50

En el ejemplo anterior, que es un poco extenso, es para que veas todos los posibles valores que puedes almacenar en una matriz de 3 x 3 x 3, y que da como resultado un arreglo de 27 valores posibles.


Vectores dinámicos

Hasta ahora habíamos visto solo vectores o arreglos de tamaño fijo, ¿ pero qué pasa cuando no sabemos el tamaño o el largo de un vector y queremos que sea variable ?.
Visual basic posee una sentencia o función que nos permite cambiar el largo de un vector en tiempo de ejecución, dándonos así mas flexibilidad, y de esta manera no desperdiciar memoria y recursos de la pc creando vectores mas largos de lo que realmente necesitamos.
Esta función se llama ReDim y ReDim Preserve , y un ejemplo de como aplicarla sería de la siguiente manera:

Ejemplo de vectores y arreglos dinámicos

En lo siguiente, primero declaramos un vector de la forma como lo hacemos siempre con la diferencia de que en vez de colocar un tamaño declaramos el vector solo con los paréntesis :
Dim alumnos () as string

Ahora le establecemos un tamaño, por ejemplo de 4 elementos y le agregamos valores:
ReDim alumnos(1 To 4) As String

alumnos(1) = "Luciano"
alumnos(2) = "Esteban"
alumnos(3) = "Mariano"
alumnos(4) = "Pedro"

Ahora para redimensionar el tamaño del vector por ejemplo a 7 elementos, utilizamos la función ReDim Preserve, para preservar los 4 valores anteriores y le agregamos 3 valores mas:
ReDim Preserve alumnos(1 To 7)

alumnos(5) = "Karina"
alumnos(6) = "Raúl"
alumnos(7) = "Romina"

Nota: si utilizamos la sentencia ReDim, o mejor dicho si redimensionamos el vector sin utilizar la sentencia ReDim preserve, los valores que contenía el vector anteriormente se perderán
Eliminar o vaciar un vector
Para eliminar un array, arreglo o vector, podemos utilizar Erase, por ejemplo:
Erase Nombre_Del_Vector


Funciones de VB para trabajar con Arreglos - LBound y UBound
Estas funciones son ideales para trabajar con vectores y matrices que han sido declaradas dinámicamente
Lbound y Ubound nos devuelve un número de tipo Long que nos permite saber el límite superior e inferior de un vector o una matriz.

Ejemplo de Ubound y Bound
Private Sub Form_Load()


    'Variables Para almacenar los límites superior e inferior
    Dim LimiteInferior As Long
    Dim LimiteSuperior As Long

    'Declaramos 3 matrices, de una dimensión, _
     de dos dimensiones y de 3
    Dim UnVector(1 To 520) As Integer
    Dim UnaMatriz(20, 5 To 100) As String
    Dim OtraMatriz(10, 20, 30) As Long

    ' Devuelve 1
    LimiteInferior = LBound(UnVector)
    ' Devuelve 520
    LimiteSuperior = UBound(UnVector)
    ' Devuelve 0
    LimiteInferior = LBound(UnaMatriz, 1)
    ' Devuelve 20
    LimiteSuperior = UBound(UnaMatriz, 1)
    ' Devuelve 5
    LimiteInferior = LBound(UnaMatriz, 2)
    ' Devuelve 100
    LimiteSuperior = UBound(UnaMatriz, 2)
    ' Devuelve 0
    LimiteInferior = LBound(OtraMatriz, 1)
    ' Devuelve 10
    LimiteSuperior = UBound(OtraMatriz, 1)
    ' Devuelve 0
    LimiteInferior = LBound(OtraMatriz, 2)
    ' Devuelve 20
    LimiteSuperior = UBound(OtraMatriz, 2)

    ' Devuelve 0
    LimiteInferior = LBound(OtraMatriz, 3)
    ' Devuelve 30
    LimiteSuperior = UBound(OtraMatriz, 3)


End Sub


Como habrás visto en los ejemplos anteriores, para conocer los limites superiores e inferiores en los vectores, solo se debe pasar como parámetro a las funcionesLbound y Ubound, el nombre del vector con el cual queremos trabajar.
En cambio en las matrices se añade un segundo parámetro en el cual debemos indicar el número de la dimensión en la cual queremos recuperar los valores.

Ejemplo 2 de LBound y UBound:

Si deseamos recorrer todos los elementos de un vector o una matriz podemos hacerlo mediante un bucle For de la siguiente manera:
For x = LBound(vector) To UBound(vector)
    MsgBox vector(x)
Next i 


Función Join, Split y Filter :

Visual basic en su sexta versión incorpora estas 3 funciones para trabajar solo con vectores. Estas funciones están relacionadas con el tratamiento de las cadenas de caracteres.

Función Join
Esta función se utiliza para unir en una sola variable el conjunto de subcadenas de un vector. Esta función tiene solo 2 parámetros y es muy fácil de usar. Ejemplo:
Dim micadena as string
Dim vector(1 To 3) As String

vector(1) = "Carlos"
vector(2) = "Pedro"
vector(3) = "Juan"

Ahora ejecutando Join, la variable micadena pasaría a valer "Carlos-Pedro-Juan"
micadena = join (vector, "-")

Nota: En el primer parámetro de la función debemos indicar el vector en el cual trabajar, y en el segundo se debe indicar un delimitador de caracter para separar las cadenas. Si no especificamos ninguno, visual basic utilizará por defecto un espacio vacío o en blanco (" ") para separar cada subcadena .

Función Split:
Esta función hace el trabajo inverso de la función Join.
Split se utiliza para rellenar un vector dinámico que contiene un número de subcadenas a partir de una cadena que le pasamos como parámetro a la función.
Para aclarar un poco un ejemplo

 Private Sub Form_Load()

    'Una variable para almacenar una cadena
    Dim Micadena As String 'Vector dinámico
    Dim Vector() As String

    'Le damos un valor a la variable
    Micadena = "maria/natalia/romina"

    'Ejecutamos la función Split
    Vector = Split(Micadena, "/")

    'Ahora el vector dinámico pasaría a _
     contener los siguientes valores:

    Vector(0) = "maría"
    Vector(1) = "natalia"
    Vector(2) = "Romina"


End Sub

Nota: una cosa importante es que en el vector anterior no se ha declarado un rango , ya que la función devuelve un vector cuya cantidad de elementos se ignora, es decir no se conoce.
Enlaces relacionados a split

Función Filter :
La función Filter se utiliza para filtrar subcadenas de un vector dependiendo de un determinado criterio de búsqueda. Los parámetros que lleva la función son los siguientes:
Filter (vector donde buscar, cadena a buscar, valor booleano que indica si incluir o excluir la cadena)
Ejemplo:
   
    ' Vector
    Dim Alumnos(1 To 4) As String

    ' Vector dinámico para almacenar el resultado
    Dim Resultado() As String

    Alumnos(1) = "Luciano"
    Alumnos(2) = "Lucas"
    Alumnos(3) = "juan"
    Alumnos(4) = "Natalia"

    ' Ejecutamos Filter

    Resultado = Filter(Alumnos, "Lu", True)

    ' Ahora el vector dinámico "resultado" pasa a contener

    MsgBox Resultado(0), vbInformation ' Luciano
    MsgBox Resultado(1), vbInformation ' Lucas
   



Arreglos de controles en visual basic


Hasta acá se vió los aspectos de los vectores y matrices como estructuras que nos permiten almacenar datos y resolver problemas lógicos en nuestros programas. Ahora veremos los Arreglos de controles o vectores de controles
Un arreglo de controles es un conjunto de controles, todos de la misma clase (todos TextBox, todos Label, etc...) que poseen un mismo nombre y cada uno posee un número de índice que los identifica y los hace únicos con respecto a los demás, y conformando entonces un vector de controles. por ejemplo en vez de tener 3 Command, llamados command1, command2 y command3, puedo crear un arreglo de 3 botones. Estos 3 botones comparten el mismo nombre pero cada botón se distingue del resto por un número de índice, es decir si por ejemplo nuestro botón de comando se llama cmd pasaría a tener un cmd(1), un cmd (2) y un cmd(3).
En un arreglo de controles todos los controles deben ser del mismo tipo y además no puede haber un control dentro del arreglo que tenga el mismo número de índice, ya que sería imposible identificarlo en el conjunto, además VB no lo permitiría y nos mostraría un error.
Las ventajas principales que tenemos cuando trabajamos con un vector de controles son las siguientes:
  1. Todos los controles que forman el arreglo comparten el mismo procedimiento de código, con lo cual si tenemos muchos controles que tienen que ejecutar la misma instrucción no debemos escribir código de más en cada control.
  2. Tener 20 cajas de texto, por ejemplo, consumen mucha mas memoria que utilizar un vector de 20 cajas de texto.
  3. Es posible crear controles en tiempo de ejecución, a partir de un arreglo de controles ya creado.
  4. Es mas fácil manipular y establecer las propiedades en un vector de controles refiriendonos al subíndice de los mismos.

Ejemplo para crear un arreglo de controles
Para crear un arreglo de controles podemos hacerlo de 2 maneras.
La primera opción es copiar un control ya dibujado y pegarlo en el formulario. Luego visual basic nos mostrará un diálogo preguntándonos si queremos crear una matriz de controles. Al contestar que si, ya se ha creado un arreglo con 2 controles, en este caso el primer control tendrá el índice 0 y el que pegamos el índice 1. Si queremos seguir agregando mas controles cuando peguemos nuevamente otro control visual basic no nos preguntará nuevamente si deseamos crear una matriz del control ya que esta ya está creada, y por lo tanto agregará un nuevo control y le agregará el número de índice correspondiente para diferenciarlo del resto, en este caso el 2. Ahora si observas en la propiedad index de los controles que forman el arreglo verás que estos tienen un número de índice que antes no tenían al no formar parte de un arreglo de controles
Nota: cualquier control de visual basic que no tenga un arreglo creado, la propiedad index de los mismos no tendrá ningún número o valor, ya que esta propiedad está reservada para los controles que formen parte de un vector o arreglo.
La otra opción para crear un arreglo, es ingresar directamente el número de índice en la propiedad index del control del cual queremos crear un arreglo.

Ejemplo:

El ejemplo consiste en crear 10 Arreglos de TextBox y lo que se va a hacer es mediante un bucle poner la propiedad Enabled de los controles en False, es decir los vamos a deshabilitar a todos.
Como te darás cuenta, si tuvieses que hacer esto manualmente, es decir deshabilitar cada TextBox individualmente tendrías que escribir
text1.enabled = False
y así para cada uno de los controles. en cambio haciendo un arreglo de controles, recorremos mediante un For todos los controles refiriendonos al índice y estableciéndole la propiedad Enabled en False para deshabilitarlos.
Create un arreglo de 10 TextBox Para eso coloca un text1 en el formulario. después copialo y pegalo, vb te va a preguntará si querés hacer un arreglo, decile que si, hasta que tengas 10 o los que quieras.
Si te fijás ahora en la ventana de propiedades, cuando seleccionas un textBox en la propiedad index te vas a dar cuenta que poseen un número, ese es el índice que los identifica, y por medio de ese índice nos vamos a referir en el bucle For
El código de este ejemplo bien simple quedaría así:
Dim i As Integer

For i = 0 To 9

text1(i).Enabled = False

Next

Como podés ver, le pasamos en el parámetro índice el valor de la variable i para referirnos a ese text1 en particular y asignarle la propiedad Enabled en False


Pasar un arreglo de controles como parámetro
Una tarea habitual es la de poder pasar un arreglo o vector de controles como parámetro a una Sub o function.
Por ejemplo supongamos que tenemos un programa que tiene muchos formularios. y varios de esos formularios tienen una función que se encarga de limpiar todas los textBox y eliminar el contenido de los mismos
Para solucionar esto, y no tener que repetir código, podríamos crear en un módulo de código, una SubRutina para que la puedan utilizar y acceder desde todos los formularios.
Para poder pasar un vector como parámetro a una rutina, la variable o argumento en la Subrutina, debe estar declarada como de tipo Object
Ejemplo
Colocar en un formulario un arreglo de textBox, por ejemplo TextBox1(0), TextBox1(1) y TextBox1(2)
Colocar un CommandButton para limpiar el contenido de las cajas de texto
 Código fuente en el formulario
Option Explicit

Private Sub Command1_Click()
    Call Limpiar_TextBox(Text1)
End Sub


' Recibe el vector como parámetro
Sub Limpiar_TextBox(El_TextBox As Object)

    Dim i As Integer
   
    For i = 0 To El_TextBox.Count - 1
        El_TextBox(i).Text = vbNullString
    Next

End Sub
BASES DE DATOS
Base de datos es un conjunto de tablas relacionadas entre si, que permite almacenar datos, que pueden ser gestionados a traves de diferentes medios de accesos, tales como: consultas a traves de asistentes, un lenguaje de consultas SQL que permitegenerar diversos tiposde consultas tales como; consultas de selección, consultas de actualizacion de datos, consultas de insercion de nuevos regristros y consultas de eliminacion de registros; otro medio para poder extraer informacion de una base de datos tambien son los formularios que pueden ser diseñados desde el mismo access, o desde el lenguaje de programacion VISUAL BASIC; y finalmente otro medio de acceso son los informes o reportes generados desde el mismo access, generados desde el VISUAL BASIC o desde una herramienta externa, asi por ejemplo CRISTAL REPORT.
Características de la base de datos 
·         Permite que sólo se puedan ver, los registros de la base de datos, cuando el usuario haya introducido un determinado número de registros en ella.
·         Permite configurar los derechos de edición. Puede agregar entradas profesores y alumnos, si lo permite en la base de datos. Esto no restringe la visualización de sus entradas para todos.
·         Se puede limitar el número máximo de entradas de cada participante.
·         Podemos permitir añadir comentarios a las entradas de la base de datos.
·         Podemos habilitar la revisión del profesor antes de que las entradas sean públicas.


Diagramas de estructura de datos.

Es un esquema que representa el diseño de una base de datos de red. Este modelo se basa en representaciones entre registros por medio de ligas, existen relaciones en las que participan solo dos entidades(binarias) y relaciones en las que participan más de dos entidades (generales) ya sea con o sin atributo descriptivo en la relación.
La forma de diagramado consta de dos componentes básicos:
Celdas: representan a los campos del registro.
Líneas: representan a los enlaces entre los registros.
su representación gráfica se basa en el acomodo de los campos de un  registro en un conjunto de celdas que se ligan con otro(s) registro(s)
Las estructuras de datos según la cardinalidad se representan en los siguientes casos:

·         Conceptos básicos.
Algoritmo.- Es un conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas.
Algoritmo.- Es una secuencia finita de instrucciones, cada una de las cuales tiene un significado preciso y puede ejecutarse con una cantidad finita de esfuerzo en un tiempo finito. Ha de tener las siguientes características: Legible, correcto, modular, eficiente, estructurado, no ambiguo y a ser posible se ha de desarrollar en el menor tiempo posible.
·         Características de un algoritmo de computador:
Correcto
Legible
eficiente
Diseño de algoritmos.
Fases:
Diseño: se dan las especificaciones en lenguaje natural y se crea un primer modelo matemático apropiado. La solución en esta etapa es un algoritmo expresado de manera muy informal.
Implementación: El programador convierte el algoritmo en código, siguiendo alguna de estas 3 metodologías.
* TOP-DOWN se alcanza el programa sustituyendo las palabras del palabras del pseudocódigo por secuencias de proposiciones cada vez mas detalladas, en un llamado refinamiento progresivo.
* BOTTON-UP parte de las herramientas mas primitivas hasta que se llega al programa.
Pruebas: Es un material que se pasa al programa para detectar posibles errores.Esto no quiere decir que el diseño no tenga errores, puede tenerlos para otros datos.










INTRODUCCION A ACCES 2010
Microsoft Access es un sistema de administración de bases de datos que forma parte de la suite Microsoft Office y es ampliamente utilizada alrededor del mundo como repositorio de  información de muchas aplicaciones.
Los usuarios de Access pueden crear tablas, consultas (queries), formularios e informes que permiten almacenar y presentar la información contenida dentro de la base de datos. Aunque Access tiene cierta compatibilidad con el lenguaje SQL no es indispensable tener un conocimiento previo de él ya que la herramienta provee de una interface gráfica que nos permitirá consular fácilmente los datos almacenados.
Es importante que toda persona que se dedica al análisis de datos tenga un conocimiento de esta herramienta, ya que dado su amplio uso, seguramente se encontrarán en la necesidad de consultar o extraer información almacenada en una base de datos Access.
PROCESO DE CREACION DE UNA BASE DE DATOS EN ACCESS
Como hemos revisado con anterioridad, para crear una base de datos es necesario comenzar con el diseño. Una vez diseñada la base de datos podemos iniciar su creación con nuestra herramienta de preferencia. En esta ocasión mostraré los pasos para crear una base de datos en Access.

Formato de las bases de datos en Access

Microsoft Access almacena toda la información de tablas, reportes, formularios y consultas en un solo archivo. A partir de Access 2007 el formato de las bases de datos cambió para ofrecernos mayores ventajas y es conocido por tener la extensión de archivo .accdb en el nombre de archivo.
Anteriormente las bases de datos Access tenían las extensión de archivo .mdb la cual fue utilizada de manera predeterminada hasta la versión 2003. Pero no te preocupes, si necesitas abrir una base de datos Access en formato .mdb lo puedes hacer aunque tengas Access 2007 o Access 2010 ya que ambas versiones soportan la lectura de dichos archivos.
Por el contrario, si estas utilizando Access 2010 y necesitas compartir la base de datos con alguien que tiene Access 2003 debes asegurar de guardarla en formato .mdb o de lo contrario la otra persona no podrá abrir el archivo.

 

 

 

Crear una base de datos en Access con plantillas

Una manera de crear una base de datos en Access es utilizar las plantillas predeterminadas que ofrece la herramienta. Para ello debes ir a la ficha Archivo y seleccionar la opción Nuevo y posteriormente hacer clic sobre Plantillas de ejemplo y enseguida se mostrarán las plantillas disponibles.







Al elegir crear una base de datos a través de una plantilla se incluirán las tablas, formularios y reportes que contiene dicha plantilla y deberemos comenzar a trabajar a partir de dichos elementos.
Sugiero utilizar este método solamente cuando has revisado previamente dichas plantillas de bases de datos y estás totalmente seguro de que se ajustan a tus necesidades. Las bases de datos creadas de esta manera tienen una estructura de datos bien definida y puede llegar a ser muy laborioso tratar adaptarla para importar datos de otra fuente que tienen una estructura muy diferente.

Crear una base de datos en Access en blanco

Ya que (en teoría) al momento de crear una base de datos en Access deberíamos haber hecho el diseño, la mejor opción para crear nuestra base de datos será hacerlo a partir de una base de datos en blanco. Para hacerlo debemos comenzar por pulsar la opción Base de datos en blanco que se encuentra dentro de la opción Nuevo de la ficha Archivo.





Es importante hacer notar que al momento de pulsar el botón Base de datos en blanco se crear un archivo con el nombre y ruta especificados en el panel derecho.



CÓMO CREAR UNA TABLA EN ACCESS

Podemos crear tablas para una base de datos nueva o para una base de datos existente. En ambos casos el procedimiento será el mismo. En primer lugar debemos ir a la Ficha Crear y pulsar el botón Tabla.




Observarás en pantalla del lado izquierdo el panel de navegación enlistando la nueva tabla y del lado derecho una pestaña con el mismo nombre de la tabla y una cuadrícula donde podremos crear los campos de la tabla.



Definir el campo primario de la tabla

Supongamos que deseo crear una tabla donde almacenaré la información de los empleados de una empresa con la siguiente información:





El campo primario de esta tabla será el campo IDEmpleado el cual contendrá un texto de 5 caracteres que identificará de manera única a cada empleado.

Antes de crear este campo debemos observar que Access ya ha creado el primer campo de la tabla y le ha puesto el nombre Id. Así que el primer paso será modificar el nombre de ese campo para que concuerde con la definición de la tabla. Para iniciar con este cambio debemos hacer clic derecho sobre el encabezado del campo para mostrar el menú emergente.





Selecciona la opción Cambiar nombre de campo y podrás cambiar el nombre del campo directamente en el encabezado.



Solo nos resta cambiar el tipo de dato de este campo que de acuerdo a mi diseño debe ser de tipo Texto y una longitud de 5. Para hacer el cambio debes ir a la Ficha Campos, que se encuentra dentro deHerramientas de tabla, y dentro del grupo Formato encontrarás una lista con los tipos de datos disponibles y de donde seleccionaré la opción Texto.





Finalmente debo especificar la longitud del campo dentro cuadro de texto llamado como Tamaño del campo que también se encuentra dentro de la Ficha Campos.


Los pasos que hemos seguido hasta ahora fueron para modificar un campo que Access ya había colocado y lo hemos modificado. A continuación debemos crear nuevos campos el cual será un procedimiento diferente.

Definir los campos restantes de la tabla

En primer lugar debemos hacer clic en el encabezado que tiene la leyenda “Haga clic para agregar” y se mostrará la lista de tipos de dato disponibles.





Una vez seleccionado el tipo de dato para nuestro campo Access nos permitirá capturar el nombre del campo en el encabezado.










 Para los campos de texto podrás modificar la longitud de la misma manera que lo hicimos con el campo primario, es decir, al seleccionar el campo podrás observar el cuadro de texto Tamaño del campo dentro del grupo Propiedades de la Ficha Campos.






De esta manera hemos terminado de crear la estructura nuestra primera tabla en Access pero ¡aún hace falta el paso final! Nunca olvides presionar el botón Guardar (en la barra de acceso rápido) de manera que se guarden los cambios. Access mostrará un cuadro de diálogo para salvar la nueva tabla.



Es en ese momento que tenemos la oportunidad para dar un nombre descriptivo a la tabla de manera que siempre sepamos el tipo de información que guarda. Al pulsar el botón Aceptar verás reflejado el nuevo nombre de la tabla.





CREAR UNA TABLA DE ACCESS EN LA VISTA DISEÑO

Lo primero que debemos hacer es pulsar el botón Diseño de tabla que se encuentra dentro del grupo Tablas en la ficha Crear.





Una vez que se muestra la cuadrícula en el panel derecho el procedimiento será el mismo para todos los campos.





En la columna Nombre del campo colocaremos los nombres de los campos de la tabla y en la columna Tipo de datos elegiremos el tipo de dato para cada campo de la tabla. De esta manera podemos crear todos los campos de nuestro ejemplo:



Como regla general siempre colocamos primero el campo clave. Para establecer el campo clave debemos seleccionar el campo correspondiente y pulsar el botón Clave principal que se encuentra en la ficha Diseño.



Podrás diferencia el campo de la clave principal por un pequeño icono que se mostrará a la izquierda del nombre.

Propiedades de los campos

Para cada uno de los campos creados se pueden modificar ciertas propiedades. Solamente selecciona alguno de los campos y podrás ver mayor detalle en el panel Propiedades del campo.




En la imagen superior puedes observar que he modificado el tamaño del campo Nombre de acuerdo al diseño que se realizó de la tabla. De esta manera puedes seleccionar cualquier campo de la tabla y modificar sus propiedades.
Finalmente debemos pulsar el botón Guardar que nos permitirá asignar un nombre a la tabla y guardar las modificaciones que hemos realizado.







AGREGAR REGISTROS EN ACCESS

Una vez que hemos creado la estructura de la base de datos, ya sea en la vista Diseño o en la vista Hoja de datos, el siguiente paso es insertar registros en una tabla de Access. Un registro es una fila de datos la cual tendrá un valor para cada campo de la tabla.
Abrir la tabla en la vista Hoja de datos
El primer paso para iniciar con la inserción de un registro es abrir nuestra base de datos de Access y posteriormente abrir la tabla donde insertaremos la información. Es importante abrir la tabla en la vista Hoja de datos y para ello es suficiente con hacer doble clic sobre el nombre de la tabla o hacer clic derecho y seleccionar la opción Abrir.





Una vez abierta la tabla de nuestra base de datos podremos observar una cuadrícula con los títulos de los campos de la tabla en la parte superior.

Cómo agregar registros en Access
Para iniciar con la captura de datos en la tabla solamente debes hacer clic por debajo del título del primer campo y capturar la información correspondiente.
De inmediato observarás un pequeño icono al lado izquierdo de la fila que indicará que has iniciado con al captura de los datos de ese registro. Para capturar la información de otro campo tenemos dos opciones: pulsar la tecla Tabulador lo cual nos llevará a la siguiente columna o simplemente hacer clic sobre el campo que deseamos capturar.
Ingresar una fecha en Access

Cuando tengas un campo que ha sido previamente definido como un campo de tipo Fecha observarás que Access muestra un pequeño icono en forma de calendario a la derecha de la celda de captura.

Al pulsar sobre este icono se mostrará un calendario de donde podrás seleccionar la fecha adecuada.

Si no deseas utilizar este calendario simplemente introduce la fecha directamente en el campo con el formato adecuado que es utilizando una diagonal “/” como separador del día, mes y año. Por ejemplo, la siguiente fecha sería un dato válido en Access: 23/02/12.
Ingresar datos monetarios en Access
Para ingresar un dato en una columna de tipo Moneda no es necesario capturar el símbolo “$” ni tampoco será necesario capturar el carácter separador de miles. Por ejemplo, si deseo especificar  un salario de $45,000 para un registro de la tabla solamente debo ingresar el valor: 45000.


Una vez que sea capturado este dato Access presentará la información adecuadamente es decir, agregará el símbolo “$” y también colocará los separadores de miles correspondientes.

Para capturar la información de un nuevo registro solamente debes hacer clic en el inicio de la nueva fila y capturar la información para cada uno de los campos.


Finalmente debemos pulsar el botón Guardar para asegurarnos que los datos ingresados sean permanentes en la tabla.
Una alternativa para agregar registros en Access
El método que acabamos de revisar es muy útil cuando tú mismo agregarás datos a una tabla. Sin embargo, cuando será una tercera persona la que hará el ingreso de información a la base de datos es recomendable utilizar Formularios especialmente si la otra persona no tiene conocimientos en Access ya que los Formularios nos ayudarán a evitar errores de captura.







CREAR UNA CONSULTA EN ACCESS

Una consulta en Access no es más que una pregunta que podemos hacer a la base de datos sobre la información que contiene. Para crear una consulta en Access podemos utilizar el Asistente para consultas el cual nos guiará paso a paso por todo el proceso.
El primer paso para crear una consulta en Access es saber la pregunta que deseamos hacer a la base de datos, así que antes de iniciar con el Asistente para consultas debemos tener una idea del tipo de información que deseamos obtener. Por ejemplo: Me gustaría tener una lista de todos los departamentos de la empresa.

Cómo crear una consulta en Access


Para iniciar con la creación de una consulta en Access debemos ir a la ficha Crear y pulsar el botón Asistente para consultas que se encuentra dentro del grupo Consultas.


Se mostrará el primer paso del proceso el cual nos permite elegir el tipo de consulta que deseamos crear. En este ejemplo crearé una consulta sencilla.



En el segundo paso del proceso podremos elegir la tabla que contiene la información que necesitamos. Además podremos elegir todas o algunas de las columnas de la tabla seleccionada, solamente será necesario pasarlas del recuadro de la izquierda al recuadro de la derecha.



El último paso del Asistente para consultas nos permite asignar un título a la consulta.


Por ahora dejaré seleccionada la opción Abrir la consulta para ver información y pulsaré el botón Finalizar. Esto cerrará el Asistente para consultas y mostrará el resultado de la consulta:



En el panel izquierdo podrás observar la lista de consultas que hayas creado. Si no ves la lista de Consultas es probable que estés observando algún otro tipo de objeto de Access, solamente haz clic sobre el título del panel izquierdo y selecciona la opción Consultas.

CREAR UN FORMULARIO EN ACCESS

Un formulario en Access es muy similar a un formulario en papel el cual tiene el formato adecuado para desplegar las etiquetas y la información. En Access podemos crear formularios que contengan todos los campos de una tabla.

Razones para crear un formulario en Access

Cuanto tienes una tabla formada por muchos campos (columnas), no es posible visualizar toda la información en el monitor, es necesario mover la barra espaciadora para conocer la información de algún registro específico.
Una razón para crear un formulario en Access es porque deseamos ver todos los campos de un registro en una sola pantalla.

 

Pasos para crear un formulario en Access

El primer paso para crear un formulario es seleccionar la tabla en la cual se basará el formulario y posteriormente ir a la ficha Crear donde pulsaremos el botón Formulario e inmediatamente observaremos el formulario en pantalla





En la parte inferior del formulario podrás observar un grupo de controles que nos permitirán desplazarnos entre todos los registros de la tabla.

Guardar el formulario


Finalmente debemos pulsar el botón Guardar para asignar un nombre a nuestro nuevo formulario y guardarlo como parte de nuestra base de datos Access.





Podrás acceder al formulario desde el panel izquierdo que despliega los objetos de Access.



Seleccionar campos: la cláusula SELECT

Una instrucción SELECT se inicia normalmente con una cláusula SELECT. Una cláusula SELECT se usa para especificar los nombres de los campos que tienen datos que desea usar en una consulta. También puede usar expresión en lugar de campos o además de ellos. Incluso puede usar otra instrucción SELECT como un campo, esto se conoce como subconsulta.
Suponga que desea conocer los números de teléfono de sus clientes. Suponiendo que el campo que almacena los números de teléfono de los clientes se llama txtTelClien, la cláusula SELECT se verá de la siguiente forma:
SELECT [txtTelClien]
Puede escribir el nombre entre corchetes. Si el nombre no contiene espacios ni caracteres especiales (como signos de puntuación), los corchetes son opcionales. Si el nombre contiene espacios o caracteres especiales, debe utilizar los corchetes.
SUGERENCIA  Un nombre que contiene espacios resulta más fácil de leer y le permite ahorrar tiempo cuando diseña formularios e informes, pero es posible que luego deba escribir más al especificar instrucciones SQL. Debe tener en cuenta este dato cuando asigne un nombre a los objetos de la base de datos.
Si la instrucción SQL tiene dos o más campos con el mismo nombre, debe agregar el nombre de cada origen de datos del campo al nombre del campo en la cláusula SELECT. Usará el mismo nombre para los orígenes de datos que ha usado en la cláusula FROM.

-----------------------------------------------------------------------------------------------