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.
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"
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
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
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..
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"
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
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.
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:
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"
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"
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
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.
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
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"
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
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:
- 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.
- Tener 20 cajas de texto, por ejemplo,
consumen mucha mas memoria que utilizar un vector de 20 cajas de texto.
- Es posible crear controles en tiempo de
ejecución, a partir de un arreglo de controles ya creado.
- Es mas fácil manipular y establecer las
propiedades en un vector de controles refiriendonos al subíndice de los
mismos.
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
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:
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.
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.
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
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
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
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
Una vez
seleccionado el tipo de dato para nuestro campo Access nos permitirá capturar
el nombre del campo en el encabezado.
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
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
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
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
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
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.
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.
-----------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------




























