Sie sind auf Seite 1von 98

Universidad Nacional Abierta y a Distancia

Facultad de Ciencias bsicas e ingeniera

UNIVESIDAD NACIONAL ABIERTA Y A DISTANCIA

Facultad de Ciencia Bsicas e Ingeniera


Programa de Ingeniera de sistemas

VISUAL AVANZADO
VISUAL BASIC. NET

MARIA CONSUELO RODRGUEZ NINO

TUNJA
2006

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

TABLA DE CONTENIDO
1. PRIMERA UNIDAD: Caractersticas Generales
1.1 Introduccin a la plataforma .NET
1.1.1 Qu es la plataforma .NET
1.1.2 Que es Framework,
1.1.3 El ambiente de programacin
1.2 Fases en el desarrollo de un programa
1.2.1 Realizar un programa
1.2.2 Compilar y ejecutar el programa
1.2.3 Biblioteca de clases
1.3 Utilizacin de Visual Basic. Net
1.3.1 Declaracin de Variables
1.3.2 Expresiones matemticas,
1.3.3 Instrucciones Bsicas, condicionales y ciclos
1.3.4 Uso y manejo de formularios
1.3.5 Uso y manejo de controles
2. SEGUNDA UNIDAD :Fundamentos de Visual Basic.Net
2.1 Programacin Orientada a objetos en Visual Basic.Net
2.1.1 Definicin de P. O.O. , herencia, polimorfismo, encapsulamiento.
2.1.2 Definicin de clases
2.2 Elementos de un Programa
2.2.1 Caracteres, Tipos ,Literales, identificadores,
2.2.2 Palabras Clave, Operadores
2.2.3 Espacios de nombres, Proteccin de una clase,
2.2.4 Sentencia Option , Sentencia Imports, definiciones y declaraciones,
Sentencia simple, Definicin de un Procedimiento
2.2.5 Crear objetos de una clase
2.2.6 Clases comparados con mdulos
2.3 Estructuras de programacin
2.3.1 Vectores, Matrices y estructuras
2.3.2 Funciones y Procedimientos
2.3.3 Paso de argumentos a los mtodos
3 TERCERA UNIDAD :Acceso a bases de datos e implementacin del proyecto
3.1 Conceptualizacion Definiciones de Base de datos, SQL,
3.2 ADO.NET
3.3 Vincular controles a datos
3.4 Manipulacin De Datos
3.5 Objetos connection, Dataadapter, Dataset, Datagrid, Dataform, Datareader,
3.6 Implementacin de la aplicacin Elementos bsicos para la implementacin
3.7 Crear el proyecto de instalacin
3.8 Propiedades del proyecto
3.9 Generar la aplicacin
2

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
3.10 Actualizacin de Vb 6 a .Net
2. INTRODUCCIN
El desarrollo de este curso acadmico denominado Visual Basic Avanzado,
proyecta proporcionar al estudiante, las herramientas necesarias para el buen
desempeo en el momento de la elaboracin de aplicaciones con caractersticas
profesionales. El curso tiene un carcter terico prctico, y corresponde a 3
crditos acadmicos, los cuales se manejan aplicando modelos de aprendizaje
autnomo, y autogestin del conocimiento
En la realizacin del curso se propende por el desarrollo de hbitos de
autoaprendizaje para la construccin del propio conocimiento en el uso de
componentes de Visual Basic. Net, en la conexin con bases de datos, y
herramientas adicionales que permitan desarrollar aplicaciones fcilmente y de
lata calidad.
Para la ejecucin del curso se aplicara la metodologa a Distancia, tomando en
cuenta que por ser de carcter Electivo se profundizara sobre el rea de
programacin proporcionando herramientas mediante las cuales pueda agilizar y
mejorar el rendimiento del desarrollo de las aplicaciones.
Para un mejor desempeo el estudiante implementara las tcnicas de estudio
independiente, y acompaamiento tutorial, distribuido en tutora en grupo de curso,
grupo colaborativo, y tutora individual. La temtica a tratar requiere de antemano
el dominio en la lgica de programacin, modelacin de bases de datos, y manejo
de ambientes grficos.
Actualmente el paradigma de programacin se ha enfocado a nuevas necesidades
de modernos y globales sistemas de informacin basados en redes y mas aun en
la red global de internet, actualmente es mas importante poder concebir y construir
sistemas de informacin con estas nuevas tecnologias de programacin.
Visual Basic NET es un lenguaje de programacin desarrollado por Microsoft muy
apropiado para construir sistemas de informacin basados en red o mejor aun en
internet.
El curso del Visual Basic Avanzado esta compuesto por 3 unidades didcticas en
las cuales se reforzara los conceptos bsicos y se profundizara en elementos que
permitan el desarrollo de aplicaciones completas de la siguiente manera:
Unidad 1: Caractersticas Generales
Unidad 2: Programacin Orientada a Objetos en .Net
Unidad 3: Acceso a Bases de datos e implementacin de un proyecto
El curso est compuesto por tres unidades didcticas de la siguiente forma

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Unidad 1; Caractersticas Generales: Introduccin a la plataforma .NET, Fases
en el desarrollo de un programa, Utilizacin de Visual Basic. Net
Unidad 2. Fundamentos de Visual Basic.Net: Programacin Orientada a objetos
en Visual Basic.Net, Estructura de un Programa, Estructuras de programacin
Unidad 3. Acceso a bases de datos e implementacin de un proyecto: Aqu
se muestran los elementos para el manejo de bases de datos,
Conceptualizacion, Manipulacin De Datos, Implementacin de la aplicacin y
actualizacion de versiones anteriores a Plataforma .Net
En el desarrollo del curso se plantea una metodologa en la cual se involucre las
prcticas de laboratorio y conlleve a la ejecucin de los procesos de investigacin
y aplicacin de conceptos en el entorno social.
En el proceso de evaluacin ser presentan herramientas que le permitan al
estudiante hacer el seguimiento de su aprendizaje, y evaluar el progreso en cada
momento del desarrollo del curso.
Esta evaluacin propende el desarrollo de los procesos prcticos en los cuales se
reafirman valores como la responsabilidad, honestidad y la disciplina los cuales
son importantes para fomentar en los estudiantes el aprendizaje autnomo.
13. JUSTIFICACIN

El manejo de la informacin y la aplicacin del conocimiento son elementos


bsicos para el desarrollo de una sociedad que pueda alcanzar los retos del
nuevo mileno, para ello se requiere de mejorar los proceso de uso y
administracin de la informacin, ya que el potencial de las naciones se enfoca no
a la cantidad de dinero que posea sino a la cantidad y flujo de informacin que se
manipule, se sistematic y el conocimiento que se genere, de all la necesidad de
elaborar sistemas de informacin eficaces que sean ajustados a las necesidades
especificas del entorno.
Los nuevos sistemas de informacin son costosos en tiempos y recursos, la
solucin moderna de sistemas de informacin exigen herramientas y metodologas
que resuelvan rpida, econmica, eficiente y de manera global, problemas de
informacin y conocimiento planteados por las organizaciones
Estos sistemas de informacin, tienden a ser cada vez de mayor alcance y
complejidad sobre todo cuando se toman en cuenta la nuevas necesidades de
informacin y conocimiento que demandan las nuevas organizaciones.
Para el desarrollo de estos sistemas de informacin existen muchas herramientas
4

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
y una de ellas es Visual Basic . Net en la cual su programacin es totalmente de
tipo administrativo, esta nueva tecnologa desarrollada y ofrecida por Microsoft
permitir hacer ms fcil la construccin y desarrollo de programas y aplicaciones
para Internet.
Dado que las tendencias en el desarrollo de aplicaciones informticas se enfoca
en facilitar tanto al analista como al programador sus actividades, se encamina
en permitir elaborar aplicacin
graficas de buena calidad con interfaces
agradables y cada vez ms amigables al usuario.
A partir de lo anterior, es importante que los estudiantes manejen herramientas
que afiancen su lgica y les permitan resolver en forma fcil y rpida
problemas de su entorno mediante aplicaciones de alto nivel.

4. INTENCIONALIDADES FORMATIVAS
4.1 PROPSITOS
1 Retomar los elementos bsicos de programacin e integrarlos en una
aplicacin con el uso de nuevos componentes sobre tecnologas .Net,
mediante la interaccin con las diferentes estrategias didcticas que garantizar
el completo desarrollo y comprensin de la temtica planteada.
2 Guiar a los estudiantes en los procesos de diseo de interfaces y
manipulacin de la informacin almacenada en una base de datos cumpliendo
estndares de desarrollo de software.
3 Inducir al estudiante en el desarrollo de aplicaciones en ambiente web,
4 Involucrar al estudiante en el desarrollo de procesos investigativos y de
proyeccin social aplicados a la solucin de problemas de su regin y su
entorno

4.2 OBJETIVOS

1 Que el estudiante manipule el entorno de programacin .NET mediante la


aplicacin de las estructuras de programacin

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Que el estudiante desarrolle modelos de solucin de problemas a travs de la
programacin orientada objetos, interactuando con motores de bases de
datos.
Que el estudiante conozca los fundamentos de la implementacin de una
aplicacin con contenido dinmico mediante de Microsoft Visual Basic .NET
Que el estudiante desarrolle aplicaciones mas robustas que en el pasado con
una base slida orientada a objetos. solucionando un problema real del
entorno con las herramientas que ofrece Visual Basic. Net

4.3 COMPETENCIAS
1 El estudiante manipula y conoce el entorno de programacin .NET mediante
la aplicacin de las estructuras de programacin y los elementos bsicos para
el desarrollo de aplicaciones puntuales.
2 El estudiante desarrolla modelos de solucin de problemas a travs de la
programacin orientada objetos, realizando interaccin con motores de bases
de datos.
3 El estudiante conoce los fundamentos para la implementacin de una
aplicacin Web con contenido dinmico mediante de Microsoft Visual Basic
.NET.

4.4 METAS
1 El estudiante manipulara el entorno de programacin .NET mediante la
aplicacin de las estructuras de programacin generando aplicaciones
especficas que reflejen el empleo de los componentes bsicos del ambiente
de desarrollo.
2 El estudiante plasmara un modelo para la solucin de problemas a travs
de la programacin orientada objetos, seleccionando un motor de bases de
datos y realizando los procesos de ingreso, consulta, edicin y eliminacin de
datos.
3 El estudiante realizara diseara e implementacin de una aplicacin Web
con contenido dinmico mediante de Microsoft Visual Basic .NET,

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

UNIDAD 1
Caractersticas Generales
1.1 Introduccin a la plataforma .NET
Para el usos de una arquitectura bsica de la plataforma .Net se requieres
describir que es Framework y sus principales componentes: Lenguajes, biblioteca
de clases y CLR, lo cual nos permite tener una visin mas clara de las
potencialidades de esta plataforma
La nueva tecnologa de Microsoft ofrece soluciones a los problemas de
programacin actuales, como son la administracin de cdigo o la programacin
para Internet. Para aprovechar al mximo las caractersticas de .Net es necesario
entender la arquitectura bsica en la que esta implementada esta tecnologa y as
beneficiarse de todas las caractersticas que ofrece esta nueva plataforma.
1.1.1 Qu es la plataforma .NET
Se trata de un entorno de desarrollo multilenguaje diseado por Microsoft para
simplificar la construccin, distribucin y ejecucin de aplicaciones para Internet.
1.1.2 El Framework de .Net
Es una infraestructura sobre la que se rene todo un conjunto de lenguajes y
servicios que simplifican enormemente el desarrollo de aplicaciones. Mediante
esta herramienta se ofrece un entorno de ejecucin altamente distribuido, que
permite crear aplicaciones robustas y escalables. Los principales componentes de
este entorno son:

Lenguajes de compilacin
Biblioteca de clases de .Net
CLR (Common Language Runtime)

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

1.1.3 El ambiente de programacin


Actualmente, el Framework de .Net es una plataforma no incluida en los
diferentes sistemas operativos distribuidos por Microsoft, por lo que es necesaria
su instalacin previa a la ejecucin de programas creados mediante .Net. El
Framework se puede descargar gratuitamente desde la web oficial de Microsoft.
.Net Framework soporta mltiples lenguajes de programacin y aunque cada
lenguaje tiene sus caractersticas propias, es posible desarrollar cualquier tipo de
aplicacin con cualquiera de estos lenguajes. Existen ms de 30 lenguajes
adaptados a .Net, desde los ms conocidos como C# (C Sharp), Visual Basic o
C++ hasta otros lenguajes menos conocidos como Perl o Cobol.
Common Language Runtime (CLR)
El CLR es el verdadero ncleo del Framework de .Net, ya que es el entorno de
ejecucin en el que se cargan las aplicaciones desarrolladas en los distintos
lenguajes, ampliando el conjunto de servicios que ofrece el sistema operativo
estndar Win32.
La herramienta de desarrollo compila el cdigo fuente de cualquiera de los
lenguajes soportados por .Net en un mismo cdigo, denominado cdigo intermedio
(MSIL, Microsoft Intermediate Lenguaje). Para generar dicho cdigo el compilador
se basa en el Common Language Specification (CLS) que determina las reglas
necesarias para crear cdigo MSIL compatible con el CLR.
De esta forma, indistintamente de la herramienta de desarrollo utilizada y del
lenguaje elegido, el cdigo generado es siempre el mismo, ya que el MSIL es el
8

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
nico lenguaje que entiende directamente el CLR. Este cdigo es transparente al
desarrollo de la aplicacin ya que lo genera automticamente el compilador.

Sin embargo, el cdigo generado en MSIL no es cdigo mquina y por tanto no


puede ejecutarse directamente. Se necesita un segundo paso en el que una
herramienta denominada compilador JIT (Just-In-Time) genera el cdigo mquina
real que se ejecuta en la plataforma que tenga la computadora.
De esta forma se consigue con .Net cierta independencia de la plataforma, ya que
cada plataforma puede tener su compilador JIT y crear su propio cdigo mquina
a partir del cdigo MSIL.
La compilacin JIT la realiza el CLR a medida que se invocan los mtodos en el
programa y, el cdigo ejecutable obtenido, se almacena en la memoria cach de la
computadora, siendo recompilado slo cuando se produce algn cambio en el
cdigo fuente.

Biblioteca de clases de .Net


Cuando se est programando una aplicacin muchas veces se necesitan realizar
acciones como manipulacin de archivos, acceso a datos, conocer el estado del
sistema, implementar seguridad, etc. El Framework organiza toda la funcionalidad
del sistema operativo en un espacio de nombres jerrquico de forma que a la hora
de programar resulta bastante sencillo encontrar lo que se necesita.
Para ello, el Framework posee un sistema de tipos universal, denominado
Common Type System (CTS). Este sistema permite que el programador pueda
interactuar los tipos que se incluyen en el propio Framework (biblioteca de clases
de .Net) con los creados por l mismo (clases). De esta forma se aprovechan las
ventajas propias de la programacin orientada a objetos, como la herencia de
clases predefinidas para crear nuevas clases, o el polimorfismo de clases para
modificar o ampliar funcionalidades de clases ya existentes.

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

La biblioteca de clases de .Net Framework incluye, entre otros, tres componentes


clave:

ASP.NET para construir aplicaciones y servicios Web.


Windows Forms para desarrollar interfaces de usuario.
ADO.NET para conectar las aplicaciones a bases de datos.

La forma de organizar la biblioteca de clases de .Net dentro del cdigo es a travs


de los espacios de nombres (namespaces), donde cada clase est organizada en
espacios de nombres segn su funcionalidad. Por ejemplo, para manejar ficheros
se utiliza el espacio de nombres System.IO y si lo que se quiere es obtener
informacin de una fuente de datos se utilizar el espacio de nombres
System.Data.
La principal ventaja de los espacios de nombres de .Net es que de esta forma se
tiene toda la bliblioteca de clases de .Net centralizada bajo el mismo espacio de
nombres (System). Adems, desde cualquier lenguaje se usa la misma sintaxis de
invocacin, ya que a todos los lenguajes se aplica la misma biblioteca de clases.
Ensamblados
Uno de los mayores problemas de las aplicaciones actuales es que en muchos
casos tienen que tratar con diferentes archivos binarios (DLLs), elementos de
registro, conectividad abierta a bases de datos (ODBC), etc.
Para solucionarlo el Framework de .Net maneja un nuevo concepto denominado
ensamblado. Los ensamblados son ficheros con forma de EXE o DLL que
contienen toda la funcionalidad de la aplicacin de forma encapsulada. Por tanto la
10

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
solucin al problema puede ser tan fcil como copiar todos los ensamblados en el
directorio de la aplicacin.
Con los ensamblados ya no es necesario registrar los componentes de la
aplicacin. Esto se debe a que los ensamblados almacenan dentro de si mismos
toda la informacin necesaria en lo que se denomina el manifiesto del
ensamblado. El manifiesto recoge todos los mtodos y propiedades en forma de
meta-datos junto con otra informacin descriptiva, como permisos, dependencias,
etc.
Para gestionar el uso que hacen la aplicaciones de los ensamblados .Net utiliza la
llamada cach global de ensamblados (GAC, Global Assembly Cache). As, .Net
Framework puede albergar en el GAC los ensamblados que puedan ser usados
por varias aplicaciones e incluso distintas versiones de un mismo ensamblado,
algo que no era posible con el anterior modelo COM. 1
TP

PT

1.2 Fases en el desarrollo de un programa


1.2.1 Realizar un programa
Para poder escribir un programa se necesita un entorno de desarrollo Visual
Basic .Net Microsoft , el cual proporciona uno de forma gratuita .Net Frameworrk
SDK que se
puede descargar de la siguiente direccin :
http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=9B3A
2CA6-3647-4070-9F41-A333C6B9181D
TU

UT

Luego de descargar el software se requiere instalarlo en el equipo de computo de


manera que aparece en el men principal para poder ser activado.
Luego de este proceso nos hace falta el editor de cdigo fuente Visual Basic . Es
suficiente con un editor de texto sin formato por ejemplo el bloc de notas de
windows. No obstante todo el trabajo de edicin, compilacin, ejecucin, y
depuracin se har mucho mas fcil si se utiliza un entorno de desarrollo con
interfaz grafica de usuario que integre las herramientas mencionadas, en lugar de
tener que utilizar la interfaz de lnea de ordenes SDK.
Entornos de desarrollo integrado para Visual Basic .Net hay varios, pero encima
de todos se destaca Microsoft Visual Studio .Net, el cual puede ser utilizado para
el desarrollo de los ejercicios.
Como crear un programa: Comencemos con la creacin de un simple programa
y con ejemplo clsico demostrar un saludo de bienvenida
Este ejemplo lo desarrollaremos utilizando la interfaz de ordenes del SDK,

1
TPPT

http://www.desarrolloweb.com/articulos/1328.php

11

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Paso 1: Empecemos por abrir nuestro editor de texto, puede ser el bloc de notas
como se mencionaba anteriormente, una vez abierto escribiremos el texto
correspondiente al programa fuente como se presenta a continuacin:
Module HolaMundo
`
`Punto de entrada al programa
`
Sub Main()
System.Console.WriteLine(Hola Mundo!!!)
End Sub
End Module
Describamos un poco que hace este programa.
La primera lnea declara el modulo HolaMundo, porque el esqueleto de cualquier
programa de consola de Visual Basic .Net se basa en la definicin del modulo
encerrado entre las palabras claves Module y End Module. Ambas lneas definen
el bloque de cdigo en el que se describen las acciones a llevar a cabo por el
programa Visual Basic .Net.
La siguientes lneas comienzan por ` (comilla sencilla) son simplemente
comentarios, estos no son tenidos en cuenta por el compilador pero ayudan a
entender un programa cuando se lee.
La siguiente lnea describe el procedimiento principal Main el cual se distingue
por el modificado () que aparece despus del nombre y el bloque de codigo que
corresponde al mismo, entre Sub y Endsub define las acciones que tiene que
ejecutar dicho procedimiento. Cuando se compila un programa se espera que
haya un procedimiento Main el cual define la entrada y salida del programa.
En el ejemplo se observa que el procedimiento Main llama para su ejecucin al
mtodo WriteLine de la clase Console del espacio de nombres System de la
biblioteca . Net que escribe como resultado la expresin que aparece
especificada entre comillas. Una secuencia de caracteres entre comillas se
denomina cadena de caracteres.
Paso 2: El programa editado esta ahora en la memoria. Para que este trabajo
pueda tener continuidad se debe grabar en el disco utilizando la orden
correspondiente del editor.
1.2.2 Compilar y ejecutar
A continuacin se debe compilar el programa, esto es traducir el programa fuente
a cdigo intermedio (MSIL) para poderlo ejecutar. Como se menciono el SDK

12

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
proporciona un programa ejecutable desde la lnea de ordenes, el resultado ser
un archivo de nombre igual al del archivo fuente y extensin. Exe que almacena el
cdigo intermedio obtenido en la traduccin, cdigo que puede ser interpretado
por la maquina virtual de .Net cuando se requiera ejecutar el programa.
Para realizar el proceso de compilacin se debe visualizar una ventana que
muestre la lnea de ordenes ( para ello los usuarios de windows pueden ejecutar
cmd o comand desde la ventana Inicio-Ejecutar. Para informar al sistema
operativo cual es la ubicacin de la utilidad vbc desde la lnea de ordenes
aadiremos a la variable del entorno path la ruta de la carpeta donde esta
almacenada esta utilidad.
Set path=%path%; c:\windows\Microsoft.net\framewor\k\vXXX
La expresin %path% representa el valor actual de la variable de entorno path. La
ruta c:\windows\Microsoft.net\framewor\k\vXXX es donde, estan ubicadas las
utilidades Visual Basic .Net, observe que una ruta va separada de la otra por
punto y coma.
A continuacin se utiliza la orden cd para cambiar la carpeta de trabajo donde se
ha guardado el archivo que se desea compilar, la orden dir permitira ver el
contenido de la carpeta.
Finalmente la orden para compilar el archivo HolaMundo.vb es la siguiente:
vbc HolaMundo.vb
El resultado del procedimiento anterior es el fichero HolaMundo.exe es decir un
archivo ejecutable.
Al compilar un programa se pueden presentar errores de compilacin debido a que
el programa escrito no se adapta a la sintaxis y reglas del compilador .
Para ejecutar el archivo resultante de la compilacin y observar los resultados
basta con escribir en la lnea de ordenes el nombre del archivo, en el caso
HolaMundo y despus presionar Enter.
1.2.3 Biblioteca de Clases
Visual Basic. Net carece de instrucciones de E/S, de instrucciones para el manejo
de cadenas de caracteres, etc. Con lo que este trabajo queda para la biblioteca de
clases provistas con el compilador. Visual Basic no tienen una biblioteca de su
propiedad, sino que utiliza la biblioteca . Net. Todos los lenguajes del paquete .Net
utilizan esta misma biblioteca.

13

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Por omisin, el compilador vbc solo busca clases predefinidas en el archivo
mscorlib.dll de la biblioteca .Net.
Mas adelante comenzaremos con el uso de la interfaz grafica que ofrece
elementos mas agradables al usuario. 2
TP

PT

1.3 Utilizacin de Visual Basic. Net


1.3.1 Declaracin de variables
Una variable es una espacio reservado en memoria para almacenar un valor de
un determinado tipo, valor que puede ser modificado a lo largo de la ejecucin del
bloque donde la variable es accesible. La declaracin de una variable consiste en
enunciar le nombre de la misma y asociarle un tipo los cuales se describen a
continuacin.
Tipos de datos: Los tipos de datos soportados por vb.net son
Boolean
Byte
Char
Date
Decimal
Double
Integer
Long
Short
Single
String
Object
Ahora se muestra una tabla para indicar los valores que pueden almacenar
Dato
Boolean
Byte

Cantidad
memoria
2 bytes
1 byte

Char

2 bytes

Date

8 bytes

2
TPPT

de Capacidad
True o False
1 Byte sin signo comprende un nmero
entre 0 a 255
Un carcter Unicode o nmero sin signo
comprendido con un rango de 0 y 65535
fechas comprendidas entre
el 1 de enero del ao 1
y el 31 de diciembre de

Visal Basic . Net Francisco Javier Ceballos

14

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Decimal

16 bytes

Double

8 bytes

Integer

4 bytes

Long

8 bytes

Short
Single

2 bytes
4 bytes

String

Object

4 bytes

9999, y horas desde las


0:00:00 (medianoche) a las 1:59:59.
El mayor valor posibles es de +/79.228.162.514.264.337.593.543.950.335.
Para nmeros con 28 decimales, el mayor
valor
posible
es
de
+/7,9228162514264337593543950335
mientras que el menor valor posible
distinto
de
cero
es
+/,0000000000000000000000000001
(+/1E-28).
Se almacenan como nmeros IEEE de
punto flotante de doble precisin Los
valores
van
desde

1,79769313486231570E+308 a
4,94065645841246544E-324
para
nmeros
negativos
y
de
4,94065645841246544E-324
a
1,79769313486231570E+308
para
nmeros positivos.
Valores con signo comprendidos entre
2.147.483.648 y 2.147.483.647.
valores con signo comprendidos entre
9.223.372.036.854.775.808
y
9.223.372.036.854.775.807.
- 32.768 a 32.768
Se almacenan como nmeros IEEE de
punto flotante de precisin simple con
valores que van de 3,4028235E+38 a
1,401298E-45 para nmeros negativos y
de 1,401298E-45 a 3,4028235E+38 para
nmeros positivos. Los nmeros de
precisin
simple
almacenan
aproximaciones de nmeros reales.
La longitud de un objeto String puede ir
desde cero hasta, aproximadamente, dos
mil millones de caracteres. Cada carcter
es un valor Unicode de 16 bits.
Al declarar una variable como Object,
puede utilizarla posteriormente para hacer
referencia a cualquier objeto reconocido
por la aplicacin.

15

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Para asignar a una variable un valor se procede de la siguiente manera
1. se declara la variable y
2. luego se asigna con el operador =. Se presentan 2 opciones
a. Dim va As Integer
va=5
b. Dim va As Integer=5
Y las constantes se declaran como
Const n as Integer=10 En esta lnea no usamos Dim porque es constante
precisamente.
Tambin se pueden declarar varias variables en una misma lnea por ejemplo:
Dim a,b,c As Short
En la lnea anterior a, b y c sern de tipo Short
Lo anterior se pudo haber escrito como:
Dim a As Short
Dim b As Short
Dim c As Short
O bien
Dim a As Short,b As Short,c As Short
No es recomendable dejar una variable sin indicar el tipo por ejemplo:
Dim i
Esto generara un error despus de declarar la Option Strict en On, porque
indicara que no se debe dejar sin declarar el tipo.
Algo que no se puede hacer es lo siguiente:
Dim i,b As short=5
Porque generara un error indicando que no se puede inicializar varias variables al
tiempo.
Lo cual se hara de la siguiente manera
Dim As Short,b As short=5
16

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Aunque solo b tendr un valor de 5
Igualmente
Dim a As Short,b,c As integer,d As Short=3
Slo d tendr un valor de 3
Todas las variables numricas al no inicializarlas tendrn como valor inicial 0, las
variables de tipo char tendrn un null o vaca.
Ejemplos 1
Module Module1
Sub Main()
Dim A As Short = 2, B As Short
B=4
Console.Write("A={0},B={1}", A, B)
Console.Read()
End Sub
End Module
Esto da como resultado
A=2,B=4
1.3.2. Expresiones Matemticas
Los operadores se utilizan para realizar operaciones aritmticas con los datos
contenidos dentro de las variables. Estos son:
*/\
+*= /= += -= y otros que estn mostrados en una tabla ms adelante
Los parntesis indican cmo se necesita ejecutar una operacin aritmtica. Por
ejemplo observe el resultado de las dos operaciones siguientes.
Dim i As Short=5
Dim j As Short=10
1 i* j+5
2 i* (j+5)

17

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
La lnea 1 da como resultado 55
La lnea 2 da cmo resultado 75
Los operadores += y = se utilizan para sumar o restar la unidad a una variable
por ejemplo
Dim i As Short
i+=1
i-=1
sin embargos se pueden usar de la manera normal o sea
i=i+1

i=i-1
Los otros operadores se usan de igual forma
El siguiente cuadro resume los operadores de vb.net
Accin
Elemento del lenguaje
Aritmticos
^, , *, /, \, Mod, +, =
Asignacin
=, ^=, *=, /=, \=, +=, -= &=
Comparacin
=, <>, <, >, <=, >=, Like, Is
Concatenacin
&, +
Operadores lgicos/bit Not, And, Or, Xor, AndAlso, OrElse
a bit
Varias operaciones
AddressOf, GetType
Por ejemplo si usamos una variable string
Dim var1 As String = "10"
Dim var2 As String = "3"
var1 += var2 ' El valor de var1 ahora es "103".
Sera una buena practica de programacin si se activa la opcin Option Strict o
sea que est en On y no en Off para que obligue a que los tipos de datos que se
usen sean del tipo adecuado. Adems de Option Explicit en On para que todas
las variables sean declaradas
Cuando est activa esta opcin no se puede realizar la siguiente asignacin
Dim carcter As Char=A
Porque generara un error indicando que no se puede convertir un tipo string a
char lo mejor sera definirla como

18

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Dim carcter As Char=Ac


Ejemplo 2
Option Strict On
Module Module1
Sub Main()
Dim A As Char = "E"c, B As Char = "A"c
Dim union As String
union &= A
union &= B
Console.Write("union={0}", union)
Console.Read()
End Sub
End Module
Esto da como resultado
Union=EA
1.3.3 Instrucciones bsicas
Las instrucciones bsicas de todo lenguaje comprende las condiciones y los
ciclos.
Entre ellas veremos:
If
Esta se usa para preguntar por ejemplo
Dim i As Short=5
If i > 0 then
Haga cualquier cosa
End if
Como tambin se puede evaluar la parte negativa
If i > 0 then
Haga cualquier cosa
else
Tambien haga cualquier cosa
End if

19

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Cmo tambin se puede evaluar varias alternativas cmo


If i =1 0 then
Muestre el valor
elseif i=2 then
Muestre el valor
else
Tambien haga cualquier otra cosa
End if
Tambin podemos usar la funcin IIF, que funciona de la siguiente forma
iif(i=1,uno,otro) o iif(i>0,Positivo,Negativo), si tuviramos el siguiente caso
if B=5 then
A=1
Elseif B<=0 then
A=-1
Elseif B>5 then
A=1
Else
A=0
End if
Lo llevaramos a la funcin iif de la siguiente forma
A=iif(B=5,1,iif(B<=0,-1,iif(B>5,1,0)))
Sin embargo tenemos otra opcin, la funcin Switch
A=Switch(B=5,1,B<=0,-1,B>5,1)
Como observar el primer elemento de cada pareja es la expresin a evaluar.
Tambin se puede anidar las instrucciones if
Por ejemplo
If A>0 then
If (A mod 2 )=0 then
Nmero par
Else
Nmero impar
End if
20

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Else
Nmero negativo
End if
Select case
Esta instruccin permite evaluar mltiples valores por ejemplo:
Dim B As Short =30
Select case B
Case 5
Si fuera igual a 5
Caso Is < 10
Si fuera menor a 10
Case Is> 20
Si fuera mayor a 20
Case 23 to 25
Si fuera mayor o igual a 23 y menor e igual a 25
Case 1 to 2
Si fuera 1 o 2
Case 26 to 28,31
Si fuera mayor o igual a 26 y menor e igual a 28 o si es 31
Case else
Si no es ninguna de las anteriores
End select
Do While
Este ciclo es mejor mostrarlo con un ejemplo supongo que con eso es
suficiente
Se ciclo se realiza mientras la condicin sea verdadera o para este caso
mientras i sea mayor que 0, observe que si i no fuera mayor que cero al
ingresar no realizara el ciclo
Option Strict On
Module Module1
Sub Main()
Dim i As Integer = 5
Do While i > 0
Console.WriteLine(i)
i -= 1
Loop
Console.Read()
End Sub
End Module
21

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Debe generar como resultado


5
4
3
2
1
Do
Loop While
Igual que el anterior es mejor mostrarlo con un ejemplo
Este ciclo se realiza mientras i sea mayor que 0, observe que si i fuera menor
que cero al menos ingresara una vez al ciclo
Option Strict On
Module Module1
Sub Main()
Dim i As Integer = 5
Do
Console.WriteLine(i)
i -= 1
Loop While i > 0
Console.Read()
End Sub
End Module
Debe generar como resultado
5
4
3
2
1
El ciclo for se analizar cuando veamos arreglos
Ejemplo 3
Option Strict On
Module Module1
Sub Main()
Dim B As Short = 6, A As Short
If B = 5 Then
22

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
A=1
ElseIf B <= 0 Then
A = -1
ElseIf B > 5 Then
A=1
Else
A=0
End If
Console.Write("A={0}", A)
Console.Read()
End Sub
End Module
Esto da como resultado
A=1
Ejemplo 4
Option Strict On
Module Module1
Sub Main()
Dim B As Short = 30
Select Case B
Case 5
'Si fuera igual a 5
Console.Write("B={0}", B)
Case Is < 10
'Si fuera menor a 10
Console.Write("B={0}", B)
Case Is > 20
'Si fuera mayor a 20
Console.Write("B={0}", B)
Case 23 To 25
'Si fuera mayor o igual a 23 y menor e igual a 25
Console.Write("B={0}", B)
Case 1 To 2
'Si fuera 1 o 2
Console.Write("B={0}", B)
Case 26 To 28, 31
'Si fuera mayor o igual a 26 y menor e igual a 28 o si es 31
Console.Write("B={0}", B)
Case Else
'Si no es ninguna de las anteriores
Console.Write("ninguna de las anteriores")
23

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
End Select
Console.Read()
End Sub
End Module
Esto da como resultado
B=30
Ejemplo 5
Option Strict On
Module Module1
Sub Main()
Dim i As Integer
Dim j As Integer
Dim c As Char
i = Console.Read()aqui lee un carcter
c = Microsoft.VisualBasic.Chr(i)Lo convierte a carcter
j = Microsoft.VisualBasic.Val(c)Lo convierte a integer
j += 5
Console.WriteLine("j: {0}", j)Muestra el resultado
Console.ReadLine()
End Sub
End Module
Si le digitamos 5 para el valor de i
Esto da como resultado J:10
1.3.4 Uso y manejo de formularios
Visual Basic. Net proporciona un ambiente de desarrollo en entorno Windows
mediante los cuales se pueden generar aplicaciones con el uso de componentes
como formularios y controles que se describen a continuacin.
Las aplicaciones creadas para Microsoft Windows. Proporcionan un marco de
trabajo que puede utilizarse por toda la aplicacin para crear un aspecto
coherente. Los formularios de aplicaciones basadas en Windows se utilizan para
presentar informacin al usuario y aceptar la introduccin de datos por parte del
mismo.
Los formularios exponen propiedades que definen su apariencia, mtodos que
definen su comportamiento, y eventos que definen su interaccin con el usuario.
Estableciendo las propiedades y escribiendo cdigo para responder a sus eventos,
el formulario se personaliza para satisfacer los requerimientos de las aplicaciones.

24

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
El formulario es un control derivado de la clase Form, que a su vez deriva de la
clase Control. El marco de trabajo tambin permite heredar de formularios
existentes para aadir ms funcionalidades o modificar el comportamiento
existente. Cuando se aade un formulario a un proyecto, se puede escoger si
hereda de la clase Form proporcionada por el .NET Framework, o de un formulario
creado con anterioridad.
En una aplicacin basada en Windows, el formulario es el principal elemento para
la interaccin con el usuario. Mediante la combinacin de controles y nuestras
propias acciones, podemos solicitar informacin al usuario y responder a ella.
En Visual Studio .NET, el formulario es una ventana que se utiliza en la aplicacin.
Cuando creamos un nuevo proyecto de aplicacin para Windows, Visual Studio
.NET proporciona una vista de Diseo que contiene un formulario. El formulario
predeterminado contiene los elementos mnimos utilizados por la mayora de
formularios: una barra de ttulo, un cuadro de control y los botones Minimizar,
Maximizar y Cerrar.
Inicialmente se debe instalar la aplicacin Visual Studio .Net e ingresar a la
aplicacin de Visual Basic . Net , Inicialmente se crea 8un nuevo proyecto y en
este se empiezan a agregar formularios, La mayora de aplicaciones requieren
ms de una ventana por lo cual se debe agregar un formulario a su proyecto por
cada ventana que requiera su aplicacin.
Para aadir formularios adicionales a nuestro proyecto:

25

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

1. Si el Explorador de soluciones no esta abierto, en el men Ver, hacer clic en


Explorador de soluciones.
2. En el Explorador de soluciones, hacer clic con el botn derecho en el nombre
del proyecto, seleccionar Agregar, y hacer clic en Windows Form.
3. En el cuadro de dilogo Agregar nuevo elemento, en el cuadro Nombre, escribir
un nombre adecuado para el formulario y, a continuacin, hacer clic en Abrir. 3
TP

PT

Cuando se genera el interfaz de usuario de una aplicacin basada en Windows, se


deben establecer las propiedades de los objetos que se crean.
La siguiente tabla describe algunas de las propiedades ms habituales de los
formularios que normalmente se establecen en el momento del diseo:
Propiedad

3
TPPT

Descripcin

Configuracin
predeterminada

http://www.willydev.net/descargas/Cursos/vbnet/index.html

26

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
(Nombre)

AcceptButton

CancelButton

ControlBox

FormBorderStyle

MaximizeBox

Establece el nombre del


formulario en el proyecto (ste
no es el nombre que se
muestra al usuario en la barra
de ttulo, sino el nombre
utilizado en el cdigo para
hacer referencia al formulario).
Importante: Si se cambia la
propiedad
(Name)
del
formulario, debe establecer el
objeto de inicio para su
proyecto al nuevo nombre o el
proyecto
no se iniciar
correctamente. Si desea ms
informacin
sobre
cmo
cambiar el objeto de inicio, lea
el apartado Ciclo de vida del
formulario de este mdulo.
Establece en qu botn se
hace clic cuando el usuario
presiona la tecla ENTER.
Nota: El formulario debe
disponer de un botn como
mnimo con esta propiedad.
Establece en qu botn se
hace clic cuando el usuario
presiona la tecla ESC.
Nota: El formulario debe
disponer de un botn como
mnimo con esta propiedad.
Determina si un formulario
muestra un cuadro de control
en la barra de ttulo. El cuadro
de control puede contener los
botones
Minimizar,
Maximizar, Ayuda y Cerrar.
Controla el aspecto del borde
del formulario. Tambin afecta
a cmo aparece la barra de
ttulo y qu botones incluye.
Determina si un formulario
dispone
de
un
botn
Maximizar en la esquina
superior derecha de su barra

Form1 (Form2, Form3,


etc.)

Ninguna

Ninguna

True

Sizable

True

27

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
de ttulo.
MinimizeBox

StartPosition

Text

Determina si un formulario
dispone
de
un
botn
Minimizar en la esquina
superior derecha de su barra
de ttulo.
Determina la posicin de un
formulario en la pantalla
cuando aparece por primera
vez.
Establece el texto que se
muestra en la barra de ttulo
del control.

True

WindowsDefaultLocation

Form1 (Form2, Form3,


etc.)

Nombre
Botn
Botn

Panel
Despus de aadir los formularios necesarios a un proyecto y establecer el
formulario de inicio, se debe determinar qu eventos y mtodos utilizar. El ciclo de
vida completo de un formulario utiliza varios mtodos y eventos.
Cuando se invoca el mtodo Show(), los eventos y mtodos del formulario
normalmente se invocan en el orden siguiente:
11. Load
22. GotFocus
33. Activated
44. Closing
55. Closed
66. Deactivate
77. LostFocus
88. Dispose()

28

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
El evento Initialize se utiliza normalmente para preparar una aplicacin para su
uso. Se asignan variables a sus valores iniciales, y puede cambiarse el tamao o
la posicin de los controles para hospedar datos de inicializacin.
En versiones anteriores de Visual Basic, el evento Initialize se utilizaba para
ejecutar cdigo antes de que un formulario se cargara. En .NET, el cdigo de
inicializacin debe aadirse al constructor del formulario (Sub New()) despus de
la invocacin de InitializeComponent() como se muestra en el siguiente ejemplo:
Public Sub New()
MyBase.New()
' This call is required by the Windows Forms Designer.
InitializeComponent()
' Add your initialization code here
El mtodo Show incluye un Load implcito; esto significa que si el formulario
especificado no se ha cargado todava cuando se invoca el mtodo Show, la
aplicacin carga automticamente el formulario en memoria y lo muestra al
usuario. El mtodo Show puede mostrar formularios como modales o no modales.
FrmSplash.Show()
Podemos utilizar el mtodo ShowDialog() para mostrar un formulario como un
cuadro de dilogo.
El evento Load se utiliza para realizar acciones que deben ocurrir antes de que se
muestre el formulario. Tambin se utiliza para asignar valores predeterminados al
formulario y sus controles.
El evento Load tiene lugar cada vez que un formulario se carga en memoria. El
evento Load de un formulario puede ejecutarse mltiples veces durante la vida de
una aplicacin. Se ejecuta cuando un formulario se inicia como resultado de la
instruccin Load, la instruccin Show o cuando se genera una referencia a las
propiedades, mtodos o controles de un formulario no cargado.
Cuando el usuario se mueve entre dos o ms formularios, podemos utilizar los
eventos Activated y Deactivate para definir el comportamiento de los formularios.
El evento Activated tiene lugar cuando el formulario se activa mediante cdigo o
por el usuario. Para activar un formulario en tiempo de ejecucin mediante cdigo,
se invoca el mtodo Activate. Este evento puede utilizarse para tareas como la
actualizacin del contenido del formulario en base a los cambios realizados en los
datos del formulario cuando ste no estaba activado.
El evento Activated se ejecuta cuando el formulario recibe el foco de otro
formulario del mismo proyecto. Este evento nicamente se ejecuta cuando el
formulario es visible. Por ejemplo, un formulario cargado utilizando la instruccin
Load no es visible a menos que se utilice el mtodo Show, o se establezca la
propiedad Visible del formulario como True. El evento Activated se ejecuta antes
del evento GotFocus.
Utilice el siguiente cdigo para establecer el foco a un formulario:
FrmSplash.Focus()

29

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Deactivate se ejecuta cuando el formulario pierde el foco a otro formulario. Este
evento se ejecuta despus del evento LostFocus.
Ambos eventos, Activated y Deactivate, se ejecutan nicamente cuando cambia
el foco dentro de la misma aplicacin. Si cambiamos a otra aplicacin y
regresamos al programa, ninguno de los dos eventos se ejecuta.
Si se necesita aadir cdigo que se ejecute cuando el formulario se muestra o
cuando el formulario est oculto, aadir el cdigo a los controladores de eventos
Activated y Deactivate en lugar de los controladores de eventos GotFocus y
LostFocus.
El evento Closing resulta til cuando se necesita saber cmo el usuario cierra el
formulario. El evento Closing ocurre cuando el formulario recibe una solicitud de
cierre. La validacin de datos tiene lugar en ese momento. En caso de ser
necesario mantener abierto el formulario (por ejemplo, si falla la validacin de
datos), el evento de cierre puede cancelarse.
El evento Closed ocurre cuando el formulario se cierra y antes del evento
Dispose. El procedimiento del evento Closed se utiliza para verificar que el
formulario debe cerrarse o para especificar acciones que deben tener lugar
cuando se cierra el formulario. Tambin se puede incluir cdigo de validacin a
nivel de formulario para cerrarlo o para guardar datos en un archivo.
El .NET Framework no soporta el evento Terminate. El cdigo de terminacin
debe ejecutarse dentro del mtodo Dispose, antes de invocar MyBase.Dispose().
Public Overrides Sub Dispose(ByVal Disposing As Boolean)
' Termination code goes here.
' The following code was automatically added by the Dispose method.
MyBase.Dispose(Disposing)
If Disposing Then
If Not components Is Nothing Then
Components.Dispose(Disposing)
End If
End If
End Sub
El mtodo Dispose es invocado automticamente para el formulario principal de
una aplicacin y debe invocarse explcitamente para cualquier otro formulario.
El mtodo Hide elimina un formulario de pantalla pero no de la memoria. El
usuario no puede acceder a los controles de un formulario oculto, pero s estn
disponibles para la aplicacin que se est ejecutando. Cuando un formulario est
oculto, el usuario no puede interactuar con la aplicacin hasta que finaliza la
ejecucin de todo el cdigo del procedimiento de evento que ha ocultado el
formulario.

30

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Si el formulario no est cargado en memoria cuando se invoca el mtodo Hide, el
mtodo Hide carga el formulario pero no lo muestra.
frmMyForm.Hide()
Un controlador de eventos es un segmento de cdigo que se invoca cuando
ocurre un evento correspondiente. Por ejemplo, podemos escribir cdigo en un
controlador de eventos para el evento Activated de un formulario y realizar
operaciones como actualizar los datos que se muestran en los controles del
formulario cuando est activado.
El .NET Framework utiliza una convencin de nombres estndar para
controladores de eventos. La convencin consiste en combinar el nombre del
objeto que enva el evento, un guin bajo, y el nombre del evento. Por ejemplo, el
evento Click de un formulario denominado Form1 se denominara Form1_Click.
Para abrir un controlador de eventos:
11. Abrir el Editor de cdigo del formulario para el que desea aadir un controlador
de eventos.
22.

En el cuadro de lista Nombre de clase, hacer clic en (Form 1 Events). La


siguiente ilustracin muestra el cuadro de lista Nombre de clase con (Form 1
Events) seleccionado.

Hacer clic en la flecha para desplegar la lista del cuadro Nombre de mtodo y ver
los eventos disponibles para el formulario. La siguiente ilustracin muestra el
cuadro de lista Nombre de mtodo con la lista de eventos del formulario y el
evento Click seleccionado. Observar que el icono de Evento a la izquierda del
nombre indica que es un evento. Hacer clic en el evento para aadir el
controlador de eventos.
Cuando creamos un formulario utilizando el Diseador de Windows Forms, el
diseador genera un bloque de cdigo que deberamos escribir si estuvisemos
creando un formulario por nosotros mismos.

31

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Si miramos el cdigo predeterminado del formulario, encontraremos el siguiente
cdigo generado por el diseador:
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedimiento is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
Me.txt
End Sub
#End Region
InitializeComponent
Este cdigo es utilizado por el entorno de desarrollo para que persistan los
valores de propiedades que establezcamos en el Diseador de Windows
Forms. En versiones anteriores de Visual Basic, esta informacin no se
guardaba en forma de cdigo, sino como instrucciones textuales en la parte
superior del archivo .frm que siempre quedaban ocultas al desarrollador.
Public Sub New()
Es el constructor de clases. Aunque podemos insertar aqu cdigo de
inicializacin para el formulario, deberamos situarlo en el evento Load del
formulario (a menos que tenga necesariamente que estar aqu)
1.3.5 Uso y manejo de controles

32

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Los controles son objetos contenidos en los objetos formulario. Botones, cuadros
de texto y etiquetas son algunos ejemplos de controles.
Existen dos formas de aadir controles a un formulario. La primera permite aadir
varios controles rpidamente y, a continuacin, establecer su tamao y posicin
individualmente. La segunda forma, ofrece mayor control inicial sobre el tamao y
posicin de los controles.
Para aadir controles a un formulario y, a continuacin, establecer su tamao y
posicin:
11. Si el Cuadro de herramientas no est abierto, en el men Ver, hacer clic en
Cuadro de herramientas.
22. En el Cuadro de herramientas, hacer doble clic en el control que desea aadir.
Se insertar una instancia del control con el tamao predeterminado en la esquina
superior izquierda del objeto activo. Cuando se aaden varios controles de este
modo, se insertan uno encima de otro.
33. Una vez aadidos los controles, podemos cambiar su posicin y tamao:
0a. Para cambiar la posicin del control, hacer clic sobre el control para
seleccionarlo y arrastrarlo a la posicin deseada.
1b. Para cambiar el tamao del control, hacer clic sobre el control para
seleccionarlo y arrastrar uno de los ocho puntos para modificar el tamao hasta
alcanzar el adecuado.
Para cambiar el tamao y posicin de los controles mientras los aadimos a un
formulario:
11. Si el Cuadro de herramientas no est abierto, en el men Ver, hacer clic en
Cuadro de herramientas.
22. En el Cuadro de herramientas, hacer clic en el control que desea aadir.
33. Mover el cursor del ratn sobre el formulario. El smbolo del cursor cambia a
una cruz.
44. Posicionar la cruz donde desee que aparezca la esquina superior izquierda del
control.
55. Hacer clic y arrastrar la cruz donde deseemos que se ubique la esquina inferior
derecha. Se dibujar en la pantalla un rectngulo que indica el tamao y ubicacin
del control.
66. Cuando el control tenga el tamao adecuado, liberar el botn del ratn. El
control aparece en la ubicacin correcta en el formulario.
77. Podemos cambiar el tamao y la posicin del control despus de liberar el
botn del ratn:
0a. Para cambiar la posicin del control, hacer clic en el control para
seleccionarlo y arrastrarlo a la posicin adecuada.

33

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
1b. Para cambiar el tamao del control, hacer clic en el control para
seleccionarlo y arrastrar uno de los ocho tiradores de tamao hasta conseguir
el tamao deseado.
comandos y herramientas que contiene una aplicacin. Una planificacin y diseo
adecuados de los mens y de las barras de herramientas son esenciales y
garantizan a los usuarios una correcta funcionalidad y accesibilidad de la
aplicacin.
Un control de men tiene numerosas propiedades, como Name, Caption e Index.
La propiedad Name identifica el control de men en cdigo.
La propiedad Index identifica controles que comparten el mismo nombre.
La propiedad Caption es el texto que aparece en la barra de men en tiempo de
ejecucin.
Para aadir mens a un formulario:
11. Si el Cuadro de herramientas no est abierto, en el men Ver, hacer clic en
Cuadro de herramientas.
22.

En el Cuadro de herramientas, hacer doble clic en el control MainMenu.

33.

En el cuadro Caption del men recin creado, escribir el texto del ttulo del
primer men. Este ttulo aparecer en la barra del men.
44.

En el cuadro Nombre, en la ventana Propiedades, escribir el nombre que


utilizar para hacer referencia al control de men en cdigo.

Podemos utilizar el men Formato o la barra de Presentacin del entorno de


desarrollo integrado (IDE) de Visual Studio para alinear, disponer en capas y
bloquear los controles de un formulario.
El men Formato ofrece numerosas opciones para organizar los controles.
Cuando utilicemos las opciones del men Formato para organizar controles, es
conveniente seleccionarlos de forma que el ltimo control seleccionado sea el
control primario respecto al cual se alinear el resto. Los cuadros de tamao
alrededor del permetro del control primario son de color oscuro, mientras que los
cuadros de tamao del resto de controles son de color claro.
La siguiente tabla muestra las opciones y sus funciones:
Descripcin
Opcin
Alinear
Alinea todos los controles respecto al control primario
Igualar tamao
Cambia el tamao de mltiples controles de un
formulario
Espaciado horizontal
Incrementa el espaciado horizontal entre controles
Espaciado vertical
Incrementa el espaciado vertical entre controles
Centrar
en
el
Centra los controles de un formulario

34

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
formulario
Ordenar
Bloquear controles

Dispone en capas los controles de un formulario


Bloquea todos los controles de un formulario

Para alinear varios controles:


11. En el Diseador de Windows Forms, abrir el formulario que contiene los
controles que desea posicionar.
22. Seleccionar los controles que deseamos alinear de forma que el ltimo control
que seleccione sea el control primario respecto del que se alinear el resto.
0

En el men Formato, seleccionar Alinear, y hacer clic en cualquiera de las


siete opciones disponibles.
Cuando creemos complejos interfaces de usuario, es posible que desee disponer
en capas los controles de un formulario. Para disponer en capas los controles de
un formulario:
11. Seleccionar un control.
22.

En el men Formato, seleccionar Ordenar y hacer clic en Traer al frente o


Enviar al fondo.
Puede bloquear todos los controles de un formulario. De este modo, se evita
mover o cambiar accidentalmente el tamao de los controles mientras se estn
estableciendo otras propiedades. Para bloquear todos los controles de un
formulario, en el men Formato, hacer clic en Bloquear controles.
UNIDAD 2
FUNDAMENTOS DE VISUAL BASIC .NET
2.1 Programacin Orientada a Objetos
2.1.1 La Programacin Orientada a Objetos (POO u OOP segn siglas en
ingls ) es un paradigma de programacin que define los programas en trminos
de " clases de objetos ", objetos que son entidades que combinan estado (es decir,
datos), comportamiento (esto es, procedimientos o mtodos ) e identidad
(propiedad del objeto que lo diferencia del resto). La programacin orientada a
objetos expresa un programa como un conjunto de estos objetos, que colaboran
entre ellos para realizar tareas. Esto permite hacer los programas y mdulos ms
fciles de escribir, mantener y reutilizar 4
TU

TU

UT

TU

TU

UT

TU

UT

TU

UT

UT

UT

TU

TP

UT

PT

En la programacin orientada a objetos, utilizamos la abstraccin y la


encapsulacin para crear clases bien diseadas.
4
TPPT

http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

35

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Una clase es una plantilla o una estructura preliminar de un objeto. Esta estructura
preliminar define atributos para almacenar datos y define operaciones para
manipular esos datos. Una clase tambin define un conjunto de restricciones para
permitir o denegar el acceso a sus atributos y operaciones.
Para crear una clase bien diseada, utilizaremos la abstraccin. Al implementar la
abstraccin, definiremos un concepto utilizando un mnimo conjunto de
funcionalidades pensadas cuidadosamente que proporcione el comportamiento
fundamental de la clase de un modo fcil de utilizar. Por desgracia, no es fcil
crear buenas abstracciones de software. Normalmente, encontrar buenas
abstracciones requiere un profundo conocimiento del problema que ha de resolver
la clase y su contexto, una gran claridad de ideas y mucha experiencia.
El formulario Visual Basic .NET con el que hemos estado trabajando es un buen
ejemplo de abstraccin. Las propiedades esenciales de un formulario, como el
ttulo y color de fondo, se han abstrado en la clase Form. Algunas operaciones
esenciales que se han abstrado son abrir, cerrar y minimizar.
La abstraccin se garantiza mediante la encapsulacin. La encapsulacin es el
empaquetamiento de atributos y funcionalidades para crear un objeto que
esencialmente es una caja negra (cuya estructura interna permanece privada).
Empaquetamos los detalles de la abstraccin y proporcionamos acceso slo a los
elementos que necesitan estar accesibles. Otros objetos pueden acceder a los
servicios de un objeto encapsulado nicamente mediante mensajes que pasan a
travs de una interfaz claramente definida.
Un ejemplo de encapsulacin es un terminal de autoservicio (automatic teller
machine, ATM). La interfaz de la ATM es simple para el cliente ATM, y el
funcionamiento interno est oculto. Del mismo modo, una clase cuentaBanca
encapsulara los mtodos, campos y propiedades que describen una cuenta
bancaria. Sin la encapsulacin, deberamos declarar procedimientos y variables
distintos para almacenar y gestionar informacin de la cuenta bancaria, y sera
difcil trabajar con ms de una cuenta bancaria a la vez. La encapsulacin permite
a los usuarios utilizar los datos y procedimientos de la clase cuentaBanca como
una unidad, sin conocer el cdigo concreto encapsulado en la clase.
Herencia: las clases no estn aisladas, sino que se relacionan entre s, formando
una jerarqua de clasificacin. Los objetos heredan las propiedades y el
comportamiento de todas las clases a las que pertenecen. La herencia organiza y
facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser
definidos y creados como tipos especializados de objetos preexistentes. Estos
pueden compartir (y extender) su comportamiento sin tener que reimplementar su
comportamiento. Esto suele hacerse habitualmente agrupando los objetos en
clases y estas en rboles o enrejados que reflejan un comportamiento comn.
Cuando un objeto hereda de ms de una clase se dice que hay herencia mltiple.

36

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden
compartir el mismo nombre, al llamarlos por ese nombre se utilizar el
comportamiento correspondiente al objeto que se est usando. O dicho de otro
modo, las referencias y las colecciones de objetos pueden contener objetos de
diferentes tipos, y la invocacin de un comportamiento en una referencia producir
el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto
ocurre en "tiempo de ejecucin", esta ltima caracterstica se llama asignacin
tarda o asignacin dinmica.
Encapsulamiento: tambin llamado "ocultacin de la informacin". Cada objeto
est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone una
interfaz a otros objetos que especifica cmo pueden interactuar con los objetos de
la clase. El aislamiento protege a las propiedades de un objeto contra su
modificacin por quien no tenga derecho a acceder a ellas, solamente los propios
mtodos internos del objeto pueden acceder a su estado. Esto asegura que otros
objetos no pueden cambiar el estado interno de un objeto de maneras
inesperadas, eliminando efectos secundarios e interacciones inesperadas.
Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos
del objeto de una manera controlada y limitando el grado de abstraccin. La
aplicacin entera se reduce a un agregado o rompecabezas de objetos. 5
TP

PT

2.1.2 En Visual Basic Net un objeto puede definirse como cualquier cosa, ente o
entidad fsica o lgica de informacin.
En este sentido todos los elementos materiales o inmateriales pueden clasificarse
como objetos.
En particular cualquier objeto considerado presenta los siguientes tres elementos:
a) Propiedades : Son las caractersticas propias de un objeto estas propiedades o
atributos son los que permiten diferenciar o individualizar un objeto de otro objeto
ya sea de la misma o diferente clase o categora.
T

Las propiedades mas generales son forma, color, tamao, peso, etc., pero ya en
particular:
Chamarra Marca, material, precio, color, tamao, etc
Alumno Matricula, nombre, edad, domicilio, etc.
Gato Raza, nombre, color, edad, etc.
VentanaWindows>Tamao, Color, font, etc.

5
TPPT

http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

37

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
b) Mtodos : Son las conductas propias de la naturaleza del objeto.
T

As como las propiedades son el ser (que es) del objeto, los mtodos son el hacer
(que hacer) del objeto.
ejemplo de mtodos:
Gato > Maullar(), comer(), correr(), saltar(), etc.
Alumno> Estudiar(), comer(), asistir clase(), pintear()
Cuaderno>Esescrito(), esrayado(), esborrado(), etc.
VentanaWindows> Abrir(), cerrar(), maximizar(), etc....
c) Eventos : Es la relacion (de varias maneras) que se puede dar entre dos
objetos ya sean de la misma o diferente clase.
T

Un evento se manifiesta como un interaccion entre dos objetos, en general al


momento de la relacion al mismo tiempo se dara una reaccion o respuesta por
parte de los dos objetos que se manifiestan como una serie, cadena o conjuntos
de metodos propios que se activan o disparan, ejemplo:
Evento
gato detecta gata
gato detecta perro
maestro ensena alumno
Raton click Windows
Raton dblclk Windows
T

Relacion
detectar
detectar
Ensenar
click
dblclk
T

Metodos que se activan


maullar(), correr(), oler()
bufar(), saltar(), correr()
pasar lista(), preguntar(), etc
maximizar(), cerrar()
minimizar(), etc
T

Un Programa o un SCRIPT en visual Basic Net se puede considerar como un


conjunto de una o mas paginas o formas donde cada una de ellas contiene un
conjunto de objetos, componentes o controles.
Un componente o propiamente dicho un control es un objeto que se especializa en
una tarea especifica por ejemplo hay controles especializados en desplegar textos
o mensajes, otros controles se especializan en desplegar imgenes o videos, otros
en manipular directorios o archivos en disco, etc.
Pero en general tanto las formas como los controles no dejan de ser objetos en
programacin de visual Basic y por tanto tienen sus propiedades, mtodos y estn
sujetos a eventos.

38

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
En visual Basic Net cabe recordar adems que un conjunto de objetos que
comparten o contienen caractersticas similares forman la llamada CLASE .
T

2.2 Elementos de un programa: Tipos de datos como objetos de clase


Los tipos de datos en visual basic.net con objetos de clase, cada vez que se crea
un objeto bien sea short, integer o cualquier otro se crea un objeto de clase short,
integer o cualquier otro tipo de datos.
Las clases numricas
En esta seccin veremos la siguiente clase:
La clase Integer
Esta y las siguientes (Short, byte, double, boolean ,decimal, single,long char, string
y objecto), clases comparten todas casi los mismos mtodos salvo en algunas que
tienen menos mtodos y en otras que tienen ms de las mostradas.
Esta clase almacena un datos de tipo entero. Alguno de sus mtodos son:
CompareTo Compara esta instancia con un objeto especificado y devuelve una
indicacin de los valores relativos.

Equals
Devuelve un valor que indica si la instancia equivale a un
objeto especificado.

GetHashCode

GetType Obtiene el tipo de objeto de la instancia actual

Parse
Convierte la representacin en forma de cadena de un nmero
en el entero de 32 bits con signo equivalente.

ToString Convierte el valor numrico de esta instancia en la representacin de


cadena equivalente.

MinValue Se obtiene el valor mnimo del tipo de dato correspondiente

MaxValue

Devuelve el cdigo hash de esta instancia.

Se obtiene el valor mximo del tipo de dato correspondiente

Ahora se realizarn ejemplos para mostrar cada uno de los mtodos anteriores
39

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

CompareTo Este mtodo lo que hace es una comparacin con otro objeto o
consigo mismo verificando si es igual en su contenido.
Por ejemplo
Este ejemplo compara dos objetos de tipo integer verificando el contenido.
Hay 3 posibilidades
Si el resultado es =0 indica que el contenido en el objeto es igual que el contenido
almacenado en el objeto pasado como parmetro
Si el resultado es >0 indica que el contenido en el objeto es mayor que el
contenido almacenado en el objeto pasado como parmetro
Si el resultado es >0 indica que el contenido en el objeto es menor que el
contenido almacenado en el objeto pasado como parmetro
Module Module1
Sub Main()
Dim i As Integer = 5
Dim j As Integer = 4
Dim r As Integer
r = i.CompareTo(j)
If r > 0 Then
Console.Write("i={0} es mayor que j={1}", i, j)
ElseIf r < 0 Then
Console.Write("j={0} es menor que i={1}", j, i)
Else
Console.Write("i={0} es igual a j={1}", i, j)
End If
Console.Read()
End Sub
End Module
Dar como resultado
i=5 es mayor que j=4
Equals compara dos objetos del mismo tipo retorno true o false
Por ejemplo
Module Module1
Sub Main()
Dim i As Integer = 5
Dim j As Integer = 4
Dim r As Boolean
r = i.Equals(j)
40

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
If r = True Then
Console.Write("i={0} es igual a j={1}", i, j)
Else
Console.Write("i={0} es diferente de j={1}", i, j)
End If
Console.Read()
End Sub
End Module
Dar como resultado
I=5 es diferente de j=4
Si j tuviera 5 el resultado sera
I=5 es igual a j=4
GetHashCode Devuelve el cdigo hash de esta instancia (Realmente no s la
utilidad)
Ejemplo
Module Module1
Sub Main()
Dim i As Integer = 5
Console.Write("Cdigo hash para i:{0}={1}", i, i.GetHashCode())
Console.Read()
End Sub
End Module
Dar como resultado
i:5=5
GetType indica el tipo de objeto
Ejemplo
Module Module1
Sub Main()
Dim i As Integer = 5
Console.Write("i es un Tipo de dato {0}", i.GetType())
Console.Read()
End Sub
End Module
Dar como resultado
i es un Tipo de dato System.Int32
Se preguntarn porque System.Int32 lo que sucede es que se es el verdadero
nombre que tiene el tipo de dato Integer en la plataforma .net framework y ahora
41

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
se llama Integer para conservar la compatibilidad con las versiones anteriores, es
simplemente el nombre
Parse convierte una cadena que representa un nmero Integer a un nmero de
tipo Integer
Ejemplo
Module Module1
Sub Main()
Dim i As Integer
Dim valor As String
valor = 31000
'Primera opcin
i = Integer.Parse(valor)
'Segunda opcin
' se coloca en comentario
'si quiere coloca en comentario la lnea de
'la primera opcin y quita el comentari de l
'la segunda
'i = i.Parse(valor)
Console.Write("i={0}", i)
Console.Read()
End Sub
End Module
ToString Este mtodo convierte a cadena el nmero especificado
Ejemplo
Module Module1
Sub Main()
Dim i As Integer = 31550
Dim valor As String
valor = i.ToString()
Console.Write("valor={0}", valor)
Console.Read()
End Sub
End Module
MinValue y MaxValue Con este ejemplo creo que es suficiente
Module Module1
Sub Main()
Dim i As Integer
Console.WriteLine("el valor minimo de este tipo de dato es {0}", i.MinValue)
42

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Console.WriteLine("el valor mximo de este tipo de dato es {0}", i.MaxValue)
Console.Read()
End Sub
End Module
Sin embargo tambin se puede realizar de la siguiente manera, donde no es
necesario declarar ninguna variable para verificar el mnimo y mximo de un tipo
de dato.
Module Module1
Sub Main()
Console.WriteLine("el valor minimo de este tipo de dato es {0}",
Integer.MinValue)
Console.WriteLine("el valor mximo de este tipo de dato es {0}",
Integer.MaxValue)
Console.Read()
End Sub
End Module
Ahora se vern los otros mtodos
Todos estos mtodos son de la clase Decimal sin embargo no son todos.
Module Module1
Sub Main()
Dim i As Decimal
Dim j As Decimal
i = 1500
j = 2500
Console.WriteLine("Valor de i={0} , Valor de j={1}", i, j)
Console.WriteLine("La suma de estas dos variables es {0}", Decimal.Add(i, j))
Console.WriteLine("La divisin de estas dos variables es {0}",
Decimal.Divide(i, j))
Console.WriteLine("La multiplicacin de estas dos variables es {0}",
Decimal.Multiply(i, j))
Console.WriteLine("El valor multiplicado por -1 {0}", Decimal.Negate(i))
Console.WriteLine("Resta el primer valor del segundo {0}",
Decimal.Subtract(i, j))
Console.Read()
End Sub
End Module
IsNaN

Este mtodo lo usan algunas clases como double, single y otros.


Este mtodo se usa para determinar que el resultado de la variable
no corresponde a un
43

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
nmero. Ejemplo
Module Module1
Sub Main()
Dim i As Double
Dim j As Double
Dim x As Double
i=0
j=
x=i/j
If Double.IsNaN(x) = True Then
Console.WriteLine("El objeto no almacena un nmero")
End If
Console.Read()
End Sub
End Module
De las clases numricas existen otro mtodos como redondear un nmero,
convertir a otros tipos de datos por mtodos implcitos
La clase char
Con el siguiente ejemplo se muestran varios de los mtodos pero son muchos
ms.
Module Module1
Sub Main()
Dim ch8 As Char, letra As Char = "n"c
ch8 = "8"c
Console.WriteLine("ch8={0} y letra={1}", ch8, letra)
Console.WriteLine("ch8 es un digito ", Char.IsDigit(ch8))
Console.WriteLine("ch8 es un nmero", Char.IsNumber(ch8))
Console.WriteLine("ch8 es un carcter alfabtico", Char.IsLetter(ch8))
Console.WriteLine("la variable llamada letra tiene una letra minscula",
Char.IsLower(letra))
Console.WriteLine("la variable llamada letra tiene una letra mayscula",
Char.IsUpper(letra))
Console.Read()
End Sub
End Module
Es importante no olvidar la instruccin Option Strict On y OPTION Explicit On en
cada uno de los ejemplos.
La clase String

44

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Esta clase posee muchos mtodos entre ellos tenemos
ToUpper

Convierte todos los caracteres de una cadena en Maysculas.

ToLower

Convierte todos los caracteres de una cadena en minsculas.

Chars

Obtiene el carcter situado en una posicin especificada en la


instancia en cuestin.

Length

Obtiene el nmero de caracteres de la instancia en cuestin.

Clone

Crea otra referencia a la misma cadena

Concat

Concatena dos cadenas

Copy

Crea un nuevo objeto de tipo string

EndsWith

Determina si un string termina o no en una cadena dada.

IndexOf

Retorna la posicin de la primera ocurrencia de un carcter o de un


string dado como parmetro.

Insert

Inserta una instancia especificada de String en una posicin de


ndice especificada de la instancia.

Join

Concatena un objeto String separador especificado entre cada


uno de los elementos de una matriz String especificada, generando
una sola cadena concatenada.

LastIndexOf Retorna la posicin de la ltima ocurrencia de un carcter o de un


String dado como parmetro.
PadLeft

Inserta caracteres a la izquierda de una cadena la cantidad


especificada.

PadRight

Inserta caracteres a la derecha de una cadena la cantidad


especificada
Si la cantidad estipulada es menor o igual a la cantidad de caracteres
que tiene la cadena original no har nada

Remove

Elimina un nmero de caracteres especificado de la instancia a partir


de una posicin especificada.

Replace

Reemplaza todas las apariciones de un carcter Unicode o un objeto


String en la instancia por otro carcter Unicode u otro objeto String.

45

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Split

Toma en un vector de tipo string las cadenas que estn separadas


por un carcter especifico.

StartsWith Determina si el principio de la instancia coincide con el objeto String


especificado.
Substring

Toma n caracteres de una cadena estipulando el inicio y la cantidad


a tomar
ToCharArray
Copia los caracteres de la instancia en una matriz de
caracteres Unicode.
ToLower

Devuelve una copia de String en minsculas.

ToString

Convierte el valor de la instancia en un objeto String.

ToUpper

Devuelve una copia de String en maysculas.

Trim
TrimEnd
TrimStart

Eliminar los espacios al comienzo y al final de una cadena


Elimina los espacios al final de una cadena
Elimina los espacios al comienzo de una cadena

Debido a que son muchos mtodos se realizarn algunos ejemplos donde se usen
varios de los mtodos expuestos, pero antes existen 2 tipos de mtodos para la
clase String los compartidos y los mtodos de instancia, el primero es un mtodo
que se deriva de la propia clase String y no necesita una instancia de dicha clase
para funcionar. Ejemplo
Dim cadena As String
cadena = String.Copy("copia esta cadena")
Los mtodos de instancia se derivan de una instancia concreta de String y deben
calificarse con el nombre de la instancia. Por ejemplo:
Dim cadena As String
cadena = cadena.Copy("copia esta cadena")

El siguiente ejemplo usa varios de los mtodos antes expuestos


Module Module1
Sub Main()
Dim a(2) As String, b As String, c As String, d As String = " un espacio "
a(0) = "universidad "
46

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
a(1) = "dos"
a(2) = "tres"
'La siguiente lnea es una alternativa
b = b.Join(",", a)
Console.WriteLine("Valor de a(0)={0}", a(0))
Console.WriteLine("Valor de a(1)={0}", a(1))
Console.WriteLine("Valor de a(2)={0}", a(2))
Console.WriteLine(b)
'La siguiente lnea es otra alternativa
b = String.Join(",", a)
Console.WriteLine(b)
c = a(0).Substring(3, 5)
Console.WriteLine("Si usamos la siguiente instruccin c = a(0).Substring(3, 5)
Obtenemos")
Console.WriteLine(c)
'Otra forma es
c = Mid(a(0), 3, 5)
Console.WriteLine("Si usamos la siguiente instruccin c = Mid(a(0), 3, 5)
Obtenemos")
Console.WriteLine(c)
Console.WriteLine("Observe la diferencia entre las 2 instrucciones
anteriores")
'Ahora convertimos a Maysculas y minsculas
Console.WriteLine("a(0) en Maysculas es {0}", a(0).ToUpper & "Con la
instruccin a(0).ToUpper")
Console.WriteLine("a(0) en Minsculas es {0}", a(0).ToLower & "Con la
instruccin a(0).ToLower")
Dim cadena As String
cadena = cadena.Copy("Copia esta cadena")
Console.WriteLine(cadena)
Console.WriteLine("valor de la variable d=|{0}|", d)
Console.WriteLine("Ahora si usamos la siguiente instruccin d.TrimStart |{0}|",
d.TrimStart)
Console.WriteLine("Elimina los espacios al comienzo de la cadena")
Console.WriteLine("Y si usamos la siguiente instruccin d.TrimEnd |{0}|",
d.TrimEnd)
Console.WriteLine("Elimina los espacios al final de la cadena")
Console.WriteLine("Y si usamos finalmente la siguiente instruccin d.Trim |
{0}|", d.Trim)
Console.WriteLine("Elimina los espacios al comienzo y al final de la cadena")
Console.Read()
End Sub
End Module
Este otro ejemplo muestro otro grupo de mtodos de esta clase
47

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Option Explicit On
Option Strict On
Imports System
Module Module1
Sub Main()
Dim cadena1 As String = "xertfdxfre", cadena2 As String = "kjhyulinghy",
cadena3 As String, cadena4 As String = "ppsdfgxcvpp"
Dim cadena5 As String = "Adicional", cadenas6() As String, cadena7 As
String
Dim caracter As Char = "p"c
Console.WriteLine("Contenido de la variable cadena1 ={0}", cadena1)
Console.WriteLine("Contenido de la variable cadena2 ={0}", cadena2)
Console.WriteLine("El tercer carcter de la variable cadena1 es {0}",
cadena1.Chars(3))
Console.WriteLine("Cantidad de carcteres de la variable cadena1 {0}",
cadena1.Length())
cadena3 = String.Concat(cadena1, cadena2)
Console.WriteLine("Ahora se ha concatenado la cadena1 y la cadena2 en
cadena3")
Console.WriteLine("La variable cadena3 ahora tiene la ste informacin {0}",
cadena3)
Console.WriteLine("el carcter t se encuentra en la posicin {0} de la variable
cadena1", cadena1.IndexOf("t"))
Console.WriteLine("Contenido de la variable cadena4 {0}", cadena4)
Console.WriteLine("Ahora se eliminarn las pes del comienzo y del final de la
variable cadena4 {0}", cadena4.Trim("p"))
Console.WriteLine("Contenido de la varible cadena5 {0}", cadena5)
Console.WriteLine("Ahora a la variable cadena1 se le va a adicionar la
variable cadena5 desde la posicin 5")
Console.WriteLine("Contenido de la variable cadena1 {0}", cadena1.Insert(5,
cadena5))
cadenas6 = cadena5.Split("c")
Console.WriteLine("Contenido de la variable cadenas6 indice 0 {0}",
cadenas6(0))
Console.WriteLine("Contenido de la variable cadenas6 indice 1 {0}",
cadenas6(1))
Console.WriteLine("Ahora se le aadirn pes a la izquierda de la variable5,
cuyo contenido es Adicional {0}", cadena5.PadLeft(15, caracter))
Console.WriteLine("Tambin se le aadirn pes a la derecha de la variable5,
cuyo contenido es Adicional {0}", cadena5.PadRight(15, caracter))
Console.Read()
End Sub
End Module
48

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Ahora veremos la conversin entre los tipos de datos, a continuacin se muestra


una tabla donde indica que tipos de datos se pueden convertir a otros.
Conversiones de ampliacin
La tabla siguiente muestra las conversiones de ampliacin estndar.
Tipo de datos
Byte
Short
Integer
Long
Decimal
Single
Double
Cualquier
enumerado
Char
Cualquier tipo
Cualquier
derivado
Cualquier tipo
Nothing

Se ampla a los siguientes tipos de datos


Byte, Short, Integer, Long, Decimal, Single, Double
Short, Integer, Long, Decimal, Single, Double
Integer, Long, Decimal, Single, Double
Long, Decimal, Single, Double
Decimal, Single, Double
Single, Double
Double
tipo Su tipo entero subyacente y cualquier tipo al cual se ample
Char, String
Object
tipo Cualquier tipo bsico desde el cual se deriva
Cualquier interfaz que implemente
Cualquier tipo de datos o tipo de objeto

El siguiente cuadro muestra las funciones de conversin de un tipo a otro


Conversin entre tipo de datos
Nombre
funcin
Cbool
Cbyte
Cchar
Cdate
CDbl

Cdec

de

la Tipo de valor Intervalo de valores del argumento


devuelto
Bolean
Cualquier expresin numrica o de cadena
(String) vlida.
Byte
0 a 255; las fracciones se redondean.
Char
Cualquier expresin String vlida, valores
comprendidos entre 0 y 65535.
Date
Cualquier representacin vlida de fecha y hora.
Double
-1,79769313486231E+308
a
-4,94065645841247E-324
para
valores
negativos;
4,94065645841247E-324
a
1,79769313486231E+308 para valores positivos.
Decimal
+/-79.228.162.514.264.337.593.543.950.335 para
49

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Cint

Integer

CLng

Long

CObj
Cshort
CSng

Object
Short
Single

CStr

String

nmeros a partir de cero, es decir, nmeros sin


decimales. Para nmeros con 28 decimales, el
rango
es
+/-7.9228162514264337593543950335.
El
menor
nmero
distinto
de
cero
es
0,0000000000000000000000000001.
-2.147.483.648 a 2.147.483.647; las fracciones
se redondean.
-9.223.372.036.854.775.808
a
9.223.372.036.854.775.807; las fracciones se
redondean.
Cualquier expresin vlida.
-32.768 a 32.767; las fracciones se redondean.
De -3,402823E+38 a 1,401298E-45 para
valores
negativos;
de
1,401298E-45
a
3,402823E+38 para valores positivos.
Los valores devueltos para CStr dependen del
argumento expression.

2.2.5 Crear un objeto a partir de una clase


Las clases definen las caractersticas y la forma de acceder a los datos que
contendr,
pero
slo
eso:
los
define.
Para que se pueda asignar informacin a una clase y poder usar los
mtodos de la misma, tenemos que crear un objeto basado en esa clase, o
lo que es lo mismo: se debe crear una nueva instancia en la memoria de
dicha
clase.
Para ello, realizamos el siguiente proceso:
Definir una variable capaz de contener un objeto del tipo de la clase, esto lo
haremos como con cualquier variable:
Dim cli As Cliente
Pero, a diferencia de las variables basadas en los tipos visto hasta ahora,
para poder crear un objeto basado en una clase, necesitamos algo ms de
cdigo que nos permita "crear" ese objeto en la memoria, ya que con el
cdigo usado en la lnea anterior, simplemente estaramos definiendo una
variable que es capaz de contener un objeto de ese tipo, pero an no existe
ningn objeto en la memoria, para ello tendremos que usar el siguiente
cdigo:
cli = New Cliente()

50

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Con esto se esta diciendo al Visual Basic: crea un nuevo objeto en la
memoria del tipo Cliente.
Estos dos pasos los podemos simplificar de la siguiente forma:
Dim cli As New Cliente()
A partir de este momento existir en la memoria un objeto del tipo Cliente.
Nota:
En las versiones anteriores de Visual Basic no era recomendable
usar esta forma de instancia un nuevo objeto en la memoria, porque,
aunque de forma transparente para nosotros, el compilador aada
cdigo extra cada vez que se utilizaba esa variable, pero en la
versin .NET no existe ese problema y por tanto no deteriora el
rendimiento de la aplicacin.
Acceder a los miembros de una clase
Para acceder a los miembros de una clase (propiedades o mtodos)
usaremos la variable que apunta al objeto creado a partir de esa clase,
seguida de un punto y el miembro al que queremos acceder, por ejemplo,
para asignar el nombre al objeto cli, usaremos este cdigo:
cli.Nombre = "Juan"
Es decir, de la misma forma que se hara con cualquier otra variable, pero
indicando
el
objeto
al
que
pertenece
dicha
variable.
Como podrs comprobar, esto ya lo hemos estado usando anteriormente
tanto en la clase Console como en las otras clases que hemos usado en
entregas anteriores, incluyendo los arrays.
Y para acceder al mtodo Mostrar:
cli.Mostrar()
2.3.1 Vectores, Matrices y Estructuras
Tanto los vectores como las matrices son un conjunto de datos de un mismo tipo,
para muchos al escribir sobre matrices se refieren tanto a matrices de 2
dimensiones como de una dimensin. Aunque sea lo mismo prefiero decir que un
vector tiene una dimensin y una matriz ms de una dimensin.
Existen diferentes formas de declarar variables de vector por ejemplo
Dim a(4) As String
a(0)=indice cero
a(1)=indice uno

51

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Ahora si lo que queremos es un vector numrico ser


Dim VectorA() As Short = {6, 7}
Y si es de dos dimensiones ser
Dim Matriz(10,20) as Single
Aunque tambin pueden declararse de las siguientes maneras
Vectores
Dim BA() As Byte = New Byte() {}
Dim BA() As Byte = New Byte() {0,1,2}
Dim BA() As Byte = New Byte(2) {0,1,2}
Matrices
Dim JB()() As Byte = {New Byte() {}, New Byte() {}}
Dim JB()() As Byte = {New Byte(1) {}, New Byte(1) {}}
Dim JB()() As Byte = {New Byte() {5, 6}, New Byte() {7, 8}}
Dim S(,) As Short = New Short(,) {}
Dim S(,) As Short = New Short(1, 1) {}
Dim S(,) As Short = New Short(,) {{5, 6}, {7, 8}}
Ahora se realizara el siguiente ejemplo que lo que se busca es mostrar algunas
propiedades de los arrays.
Option Explicit On
Option Strict On
Module Module1
Sub Main()
Dim VectorA() As Integer = {3, 4, 1, 2, 5, 0, 0, 0, 0}
Dim VectorB() As Integer = {8, 7, 6, 9}, i, j As Integer
Dim ref() As Integer
Dim Dimension As Integer
If TypeOf (VectorA) Is Array Then
Console.WriteLine("______________________________")
Console.WriteLine("El primer arreglo es VectorA")
For i = 0 To VectorA.GetLength(0) - 1
52

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Console.WriteLine("Indice {0}={1}", i, VectorA(i))
Next
Console.WriteLine("El segundo arreglo es VectorB")
For i = 0 To VectorB.GetLength(0) - 1
Console.WriteLine("Indice {0}={1}", i, VectorB(i))
Next
Console.WriteLine("Tipo del arreglo: {0} Propiedad VectorA.GetType()",
VectorA.GetType())
Console.WriteLine("Tiene tamao fijo? IsFixedSize = {0} Propiedad
VectorA.IsFixedSize", VectorA.IsFixedSize)
Console.WriteLine("Es de slo lectura? IsReadOnly = {0} Propiedad
VectorA.IsReadOnly", VectorA.IsReadOnly)
Console.WriteLine("Tiene {0} dimension propiedad VectorA.Rank",
VectorA.Rank)
Console.WriteLine("Cantidad de elementos {0}", VectorA.GetLength(0))
VectorB.CopyTo(VectorA, 5)
Console.WriteLine("Resultado despus de usar la siguiente instruccin
VectorB.CopyTo(VectorA, 5) en el primer vector")
For i = 0 To VectorA.GetLength(0) - 1
Console.WriteLine("Indice {0}={1}", i, VectorA(i))
Next
ref = VectorB
Console.WriteLine("Aqui se est referenciando la variable reg que tambin
es un arreglo a VectorB (ref = VectorB)")
ref(0) = 3
Console.WriteLine("Resultado despus de modificar el valor del indice 0
del segundo vector con la siguiente instruccin (ref(0) = 3)")
For i = 0 To VectorB.GetLength(0) - 1
Console.WriteLine("Indice {0}={1}", i, VectorB(i))
Next
Console.WriteLine("Ahora si lo que queremos es ordenar el segundo
vector")
Console.WriteLine("Lo haremos con cualquiera de estas instrucciones
(VectorB.Sort(VectorB)) (Array.Sort(VectorB))")
VectorB.Sort(VectorB)
For i = 0 To VectorB.GetLength(0) - 1
Console.WriteLine("Indice {0}={1}", i, VectorB(i))
Next
'Otra forma de recorrer un vector es
Console.WriteLine("Otra forma de recorrer un vector es:")
For Each i In VectorB
Console.WriteLine(i)
Next
End If
Console.Read()
End Sub
53

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

End Module
Otro ejemplo
Option Explicit On
Option Strict On
Module Module1
Sub Main()
Dim I, J As Integer
Dim MaxDim0, MaxDim1 As Integer
Dim S(,) As Short = New Short(,) {{5, 6}, {7, 8}}
MaxDim0 = S.GetUpperBound(0)
MaxDim1 = S.GetUpperBound(1)
For I = 0 To MaxDim0
For J = 0 To MaxDim1
Console.WriteLine("Fila: {0}:Columna: {1}:Valor: {2}", I, J, S(I, J))
Next J
Next I
Console.Read()
End Sub
End Module
Las matrices regulares se caracterizan por tener el mismo nmero de elementos
en cada una de sus dimensiones. Una matriz bidimensional de 10 elementos
tendr similar nmero en cada una de sus filas. Basta con saber la cantidad de los
mismos de una de ellas para conocer la cantidad de elementos de las dems.
Existe un tipo adicional de matrices llamadas irregulares o dentadas las cuales no
cumplen la regla anterior. Ellas se caracterizan porque cada fila puede contener u
numero diferente de elementos. Una matriz irregular bidimensional, por ejemplo
podra contener 3 elementos en la primera fila, 10 elementos en la segunda y 6
elementos en la tercera, moldeando as una figura irregular, aunque podra se ms
compleja.
Por ejemplo
Module Module1
Sub Main()
Dim irregular() As Array = {New Integer() {1, 2, 3, 4}, _
New Integer() {5, 6, 7}, _
54

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
New Integer() {8, 9}}
Dim i, j As Integer
For i = 0 To irregular.Length - 1
For j = 0 To irregular(i).Length - 1
Console.WriteLine(irregular(i).GetValue(j).ToString)
Next j, i
Console.Read()
End Sub
End Module
En el ejemplo anterior la variable i llevar la cuenta de las filas, la variable j
mantiene el valor del elemento a leer de la misma, la propiedad length obtendr la
cantidad total de integrantes de la matriz principal o raz, la cual dar como
resultado 3, ya que existen nicamente 3 filas.
Sin embargo tambin se pueden realizar matrices con tipos de datos diferentes
Por ejemplo
Dim Irregular() As Array = {New Integer() {1, 2, 3, 4}, _
New String() {"Colombia", "Bogot","Cundinamarca"}, _
New Long() {8, 9}}
Ahora veremos las estructuras
Las estructuras son parecidas que las enumeraciones pero con muchas ventajas,
entre ellas que cada elemento de la estructura puede ser de cualquier tipo integer,
double, String o matriz, adems, se pueden declaran funciones dentro de la
estructura, constructores, mbito de variables independientes. Etc.
Una declaracin de estructuras empieza con la instruccin Structure, y finaliza con
la instruccin End Structure. Entre estas dos instrucciones debe declararse por lo
menos un miembro.
Si desea mantener un nombre de empleado, su extensin telefnica y su salario
juntos en una nica variable, puede declarar una estructura para esta informacin
de la siguiente manera:
Structure Empleado
Public Nombre As String
Public Extension As Long
Private Salario As Decimal
End Structure

55

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Observe que las variables pueden tener varios tipos de acceso, en este caso
public y private, en el caso de las private solo pueden acceder a ellas desde
procedimientos o funciones que sean pblicos y estn en la misma estructura.
Por ejemplo
Option Explicit On
Option Strict On
Module Module1
Structure Empleado
Public Nombre As String
Public Extension As Long
Private Salario As Decimal
Public Sub Monto(ByVal Valor As Decimal)
Salario = Valor
End Sub
Public Sub Mostrar()
Console.WriteLine("El nombre es :{0}", Nombre)
Console.WriteLine("La extensin es :{0}", Extension)
Console.WriteLine("Su salario es :{0}", Salario)
End Sub
End Structure
Sub Main()
Dim Carlos As Empleado
With Carlos
.Nombre = "Alfonso"
.Extension = "4598"
.Monto(1500000)
.Mostrar()
End With
Console.Read()
End Sub
End Module
Ahora veremos los constructores para las estructuras, en los constructores
podemos inicializar variables como en el siguiente ejemplo, aunque no es que sea
el gran ejemplo pero introduce varias cosillas como los constructores, las variables
privadas, vectores de tipo estructura, etc.
En este ejemplo se crean 2 alumnos cada alumno puede crear cualquier cantidad
de materias y cada uno de estas tiene 3 notas
Option Explicit On
Option Strict On

56

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Module Module1
Structure notas
Private n1 As Integer
Private n2 As Integer
Private n3 As Integer
Public Sub Asignar(ByVal x As Integer, ByVal y As Integer, ByVal z As
Integer)
n1 = x
n2 = y
n3 = z
End Sub
Public Sub MostrarNotas()
Console.WriteLine("Nota 1:{0}", n1)
Console.WriteLine("Nota 2:{0}", n2)
Console.WriteLine("Nota 3:{0}", n3)
End Sub
End Structure
Structure Alumno
Private Nombre As String
Private apellido As String
Private Telefono As String
Public Materiaynotas() As notas
Public Sub New(ByVal n As String, ByVal a As String, ByVal t As String)
Nombre = n
apellido = a
Telefono = t
End Sub
Public Sub Mostrar()
Console.WriteLine("Nombre:{0}", Nombre)
Console.WriteLine("Apellido:{0}", apellido)
Console.WriteLine("Telfono:{0}", Telefono)
End Sub
End Structure
Sub Main()
Dim Alumno1 As Alumno = New Alumno("Mara", "Perez", "9999999")
Dim Alumno2 As Alumno = New Alumno("Diana", "Madrugada", "8888888")
ReDim Alumno1.Materiaynotas(4)creacin de materias
With Alumno1
.Materiaynotas(0).Asignar(1, 2, 3)Materia uno
.Materiaynotas(1).Asignar(1, 2, 4) Materia dos
.Materiaynotas(2).Asignar(1, 2, 5) Materia tres
.Materiaynotas(3).Asignar(1, 2, 6) Materia cuatro
.Materiaynotas(4).Asignar(1, 2, 7) Materia cinco
57

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Console.WriteLine("Alumno 1")
Console.WriteLine("Materia 1")
.Materiaynotas(0).MostrarNotas()
Console.WriteLine("Materia 2")
.Materiaynotas(1).MostrarNotas()
Console.WriteLine("Materia 3")
.Materiaynotas(2).MostrarNotas()
Console.WriteLine("Materia 4")
.Materiaynotas(3).MostrarNotas()
Console.WriteLine("Materia 5")
.Materiaynotas(4).MostrarNotas()
End With
ReDim Alumno2.Materiaynotas(0) creacin de materia
With Alumno2
.Materiaynotas(0).Asignar(3, 3, 3) Materia uno
Console.WriteLine("Alumno 2")
Console.WriteLine("Materia 1")
.Materiaynotas(0).MostrarNotas()
End With
Console.Read()
End Sub
End Module
2.3.2 Funciones y procedimientos
La diferencia entre las dos es que las primeras (Sub) no retornan valores y las
segundas (Function) si.
Ninguna de las dos puede definirse dentro de una misma funcin o un procedimie.
Se pueden definir dentro de un mdulo, clase, interfaz o estructura.
Ambos mtodos son por defecto pblicos y los parmetros que se les pasa por
defecto son por valor ByVal, que significa que lo que hace una copia de la variable
al parmetro.
ByRefl para la direccin de la variable.
Veamos como se define un procedimiento
Public Sub Mostrar(ByVal a As Short)
End Sub
Y una funcion
Public Function Mostrar(ByVal a As Short) As Integer

58

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Return 0
End Function
Ahora, de una funcin se puede salir de las siguiente maneras:
Primera forma
Function Muestra() as String

Muestra =cadena a retornar


End Function
Segunda forma
Function Muestra() as String

Return cadena a retornar


End Function
El siguiente ejemplo aclarar lo expuesto tanto para las funciones como para los
procedimientos
Option Strict On
OPTION Explicit On
Module Module1
Public Sub MOSTRAR(ByVal X As Integer, ByVal Y As Integer)
Console.WriteLine("Valor de A despus de asignarselo a x={0} al entrar a la
funcin", X + 1)
Console.WriteLine("Valor de A despus de asignarselo a y={0} al entrar a la
funcin", Y + 1)
'Para salir de la funcin se puede hacer de dos maneras,
'primera forma, se ha colocado en comentario pero se puede usar cualquiera
de las
'dos "Return"
'Return
'segunda forma "Exit Sub"
Exit Sub
End Sub
Public Function ProdMOSTRAR(ByVal X As Integer, ByVal Y As Integer) As
Integer
Console.WriteLine("Valor de A despus de asignarselo a x={0} al entrar a la
funcin", X + 1)
Console.WriteLine("Valor de A despus de asignarselo a y={0} al entrar a la
funcin", Y + 1)
59

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
'Para salir de un procedimiento se puede hacer de dos maneras,
'primera forma, se ha colocado en comentario pero se puede usar cualquiera
de las
'dos "Return valor_o_cadena_a_retornar"
'Return X + Y
'segunda forma "MOSTRAR = X + Y"
ProdMOSTRAR = X + Y
End Function
Sub Main()
Dim A As Integer = 2, B As Integer = 5, c As Integer
Console.WriteLine("Valor inicial de A={0}", A)
Console.WriteLine("Valor inicial de B={0}", B)
MOSTRAR(A, B)
c = ProdMOSTRAR(A, B)
Console.WriteLine("Valor final de A={0}", A)
Console.WriteLine("Valor final de B={0}", B)
Console.WriteLine("Observe que despus de salir tanto de la funcin
MOSTRAR(A, B), como del procedimiento c=ProdMOSTRAR(A, B), las variables A
y B")
Console.WriteLine("conservan los valores iniciales. Quiere decir que los
parmetros")
Console.WriteLine("son copias de las variables originales y las originales no
sufren modificaciones")
Console.WriteLine("La razn es por la palabra que vb.net le coloca antes de
cada parmetro ByVal (por valor)")
Console.WriteLine("Sin embargo la funcin no retorna valores y el
procedimiento si ")
Console.WriteLine("Este es el resultado de lo que retorna el procedimento
{0}", c)
Console.WriteLine("Despus de realizar la siguiente operacin
ProdMOSTRAR = X + Y")
Console.Read()
End Sub
End Module
Ahora veremos un ejemplo cuando los parmetros son por referencia.
Option Strict On
OPTION Explicit On
Module Module1
60

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Public Sub MOSTRAR(ByRef X As Integer, ByVal Y As Integer)
X += 1 'Incrementa en 1 el valor de la variable x y X=A
Console.WriteLine("Valor de A despus de asignarselo a x={0} al entrar a la
funcin", X)
Console.WriteLine("Valor de B despus de asignarselo a y={0} al entrar a la
funcin", Y)
'Para salir de la funcin se puede hacer de dos maneras,
'primera forma, se ha colocado en comentario pero se puede usar cualquiera
de las
'dos "Return"
Return
'segunda forma "Exit Sub"
'Exit Sub
End Sub
Public Function ProdMOSTRAR(ByVal X As Integer, ByRef Y As Integer) As
Integer
'Para salir de un procedimiento se puede hacer de dos maneras,
'primera forma, se ha colocado en comentario pero se puede usar cualquiera
de las
'dos "Return valor_o_cadena_a_retornar"
Y *= 2
Return X + Y
'segunda forma "MOSTRAR = X + Y"
'ProdMOSTRAR = X + Y
End Function
Sub Main()
Dim A As Integer = 2, B As Integer = 5, c As Integer
Console.WriteLine("Valor inicial de A={0}", A)
Console.WriteLine("Valor inicial de B={0}", B)
MOSTRAR(A, B)
Console.WriteLine("Valor final de A despus de salir de la funcin={0}", A)
Console.WriteLine("Valor final de B despus de salir de la funcin={0}", B)
c = ProdMOSTRAR(A, B)
Console.WriteLine("Valor final de A despus de salir del procedimiento={0}",
A)
Console.WriteLine("Valor final de B despus de salir del procedimiento={0}",
B)
Console.WriteLine("Observe que despus de salir de la funcin
MOSTRAR(A, B) A cambi de valor")

61

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Console.WriteLine(" y despus de salir del procedimiento B tambin cacmbi
de valor")
Console.WriteLine("realmente lo que se pasa al parmetro es la direccin de
memoria")
Console.WriteLine("quiere decir que la varible X en la funcin apunta a A y
cualquier modificacin que")
Console.WriteLine("se haga sobre la varible X en la funcion tambin se
realizar en la variable A")
Console.WriteLine("Sucede lo mismo en el caso del procedimiento. Este es el
resultado de lo que retorna el procedimento {0}", c)
Console.WriteLine("Despus de realizar la siguiente operacin Y *= 2 y
ProdMOSTRAR = X + Y")
Console.Read()
End Sub
End Module
Cuyo resultado debe ser como el siguiente:

Si no han entendido, el siguiente ejemplo terminar por aclarar (creo).


Option Strict On
OPTION Explicit On
Module Module1
Public Function ProdMOSTRAR(ByRef X As Integer) As Integer
X -= 1
Console.WriteLine("X={0}", X)
Return X
End Function
Sub Main()
Dim A As Integer = 10
62

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Console.WriteLine("Valor inicial de A={0}", A)
Do While A > 0
ProdMOSTRAR(A)
Loop
Console.WriteLine("Valor final de A despus de salir del procedimiento={0}",
A)
Console.Read()
End Sub
End Module
Cuyo resultado debe ser como el siguiente:

O este otro ejemplo


Option Strict On
OPTION Explicit On
Module Module1
Public Function ProdMOSTRAR(ByVal X As Integer) As Integer
X -= 1
Console.WriteLine("X={0}", X)
Return X
End Function
Sub Main()
Dim A As Integer = 10, b As Integer = 1
Console.WriteLine("Valor inicial de A={0}", A)
Do While A > 0
ProdMOSTRAR(A)
'Observe se ha hecho uso de una variable auxiliar para detener el ciclo
'porque de lo contrario llegar hasta que alcance el mximo
'de la variable integer y ocurrir un error
b += 1

63

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
If b = 10 Then
Exit Do
End If
Loop
Console.WriteLine("Valor final de A despus de salir del procedimiento={0}",
A)
Console.Read()
End Sub
End Module
Cuyo resultado debe ser como el siguiente:

La palabra clave ParamArray permite a una funcin aceptar un nmero variable de


argumentos.
Un argumento ParamArray debe declararse como un tipo de matriz
unidimensional. La declaracin no incluye parmetros despus del nombre de
argumento
Utilice la palabra clave ParamArray para denotar una matriz de parmetros. Se
aplican las siguientes reglas:

Un procedimiento slo puede tener una matriz de parmetros, que debe ser
el ltimo argumento de la definicin del procedimiento.
La matriz de parmetros debe pasarse por valor. Es un hbito de
programacin recomendado incluir de manera explcita la palabra clave
ByVal en la definicin del procedimiento.
El cdigo del procedimiento debe considerar a la matriz de parmetros una
matriz unidimensional; el tipo de datos de los elementos de la matriz ha de
ser el mismo que el tipo de datos de ParamArray.

64

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

La matriz de parmetros es opcional de forma automtica. Su valor


predeterminado es una matriz unidimensional vaca del tipo de elemento de
la matriz de parmetros.
Todos los argumentos que preceden a la matriz de parmetros deben ser
obligatorios. La matriz de parmetros debe ser el nico argumento opcional.

Cuando uno de los argumentos del procedimiento al que se llame sea una matriz
de parmetros, sta podr tomar cualquiera de estos valores:

Ninguno, es decir, puede omitirse el argumento ParamArray. En este caso,


se pasar una matriz vaca al procedimiento. Tambin puede pasarse la
palabra clave Nothing, obtenindose el mismo efecto.
Una lista con un nmero de argumentos indeterminado, separados por
comas. El tipo de los datos de cada argumento debe poder convertirse
implcitamente al tipo de elemento ParamArray.
Una matriz con el mismo tipo de elemento que la matriz de parmetros.

En el siguiente ejemplo se muestra cmo se puede definir un procedimiento con


una matriz de parmetros:
Option Strict On
OPTION Explicit On
Module Module1
Public Function Sumatoria(ByVal var As String, ByVal ParamArray Cadena() As
Integer) As Integer
Dim i As Integer
Dim j As Integer
For i = 0 To UBound(Cadena)
Console.WriteLine(var & " " & i & ": " & Cadena(i))
j = j + Cadena(i)
Next i
Sumatoria = j
End Function
Sub Main()
Dim a, b, c, d As Integer
a=4
b=3
c=5
d=9
Console.WriteLine("Resultado: {0}", Sumatoria("Parmetro", a, b, c))
Console.WriteLine("---------------------------------------")
Console.WriteLine("Resultado: {0}", Sumatoria("Nuevo Parmetro", a, b, d))
Console.Read()
End Sub
End Module
65

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

2.3.3 Paso de argumentos a mtodos.


Parmetros opcionales
Un argumento de un procedimiento puede ser opcional si as se especifica, es
decir, que no es necesario suministrarlo al llamar al procedimiento. Los
argumentos opcionales se indican mediante la palabra clave Optional en la
definicin del procedimiento. Se aplican las siguientes reglas:

Todos los argumentos opcionales de la definicin del procedimiento deben


especificar un valor predeterminado.
El valor predeterminado de un argumento opcional debe ser una expresin
constante.
Todos los argumentos que vayan a continuacin de un argumento opcional
en la definicin del procedimiento tambin deben ser opcionales.

Un ejemplo sencillo es el siguiente


Module Module1
Public Sub FuncionaGeneral(ByVal x As Integer, Optional ByVal var As String =
"Prueba", Optional ByVal p As Integer = 0, Optional ByVal y As Integer = 0)
If var = "Prueba" Then
Console.WriteLine("No se cambio el parmetro var")
Else
Console.WriteLine("Cambi el parmetro var")
End If
If p = 0 And y = 0 Then
Console.WriteLine("No se asign ningn parmetro para (p) y (y)")
ElseIf p <> 0 Then
Console.WriteLine("P ha sido cambiado (p)")
ElseIf y <> 0 Then
Console.WriteLine("Y ha sido cambiado (y)")
End If
End Sub
Sub Main()
Dim a, b, c, d As Integer
a=4
b=3
c=5
d=9
FuncionaGeneral(a, , b, c)
Console.WriteLine("---------------------------------------")
FuncionaGeneral(a, "hola a cambiado", b)
66

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Console.Read()
End Sub
End Module
Funciones recursivas
Un procedimiento recursivo es aqul que se llama a s mismo. Por ejemplo, el
siguiente procedimiento utiliza la recursividad para calcular el factorial de su
argumento original:
Un ejemplo clsico
Function Factorial(ByVal N As Integer) As Integer
If N <= 1 Then
Return 1
Else
Return Factorial(N - 1) * N
End If
End Function
Nota Si un procedimiento Function se llama a s mismo de manera
recursiva, su nombre debe ir seguido de un parntesis, aunque no
exista una lista de argumentos. De lo contrario, se considerar que el
nombre de la funcin representa al valor devuelto por sta.
Los programas tienen una cantidad de espacio limitado para las
variables. Cada vez que un procedimiento se llama a s mismo, se
utiliza ms espacio. Si este proceso contina indefinidamente, se
acaba produciendo un error de espacio de la pila. La causa puede
ser menos evidente si dos procedimientos se llaman entre s
indefinidamente, o si nunca se cumple una condicin que limita la
recursividad.
Debe asegurarse de que los procedimientos recursivos no se llamen
a s mismos indefinidamente, o tantas veces que puedan agotar la
memoria. La recursividad normalmente puede sustituirse por bucles.
Pasar vectores con longitud fija a funciones
Un ejemplo aclarara lo anterior
Module Module1
Public Function sumar(ByVal x() As Integer) As Integer
Dim i, j As Integer
67

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
For Each i In x
Console.WriteLine("{0}", i)
j += i
Next
sumar = j
End Function
Sub Main()
Dim valor() As Integer = {1, 2, 3, 4, 5}
Console.WriteLine("Resultado:{0} ", sumar(valor))
Console.Read()
End Sub
End Module
UNIDAD 3
Acceso a Bases de datos
ADO.NET
Es una evolucin del modelo de acceso a datos de ADO que controla
directamente los requisitos del usuario para programar aplicaciones escalables.
Se dise especficamente para el Web, teniendo en cuenta la escalabilidad, la
independencia y el estndar XML.
ADO.NET utiliza algunos objetos ADO, como Connection y Command, y
tambin agrega objetos nuevos. Algunos de los nuevos objetos clave de
ADO.NET son DataSet, DataReader y DataAdapter.
La diferencia ms importante entre esta fase evolucionada de ADO.NET y las
arquitecturas de datos anteriores es que existe un objeto, DataSet, que es
independiente y diferente de los almacenes de datos. Por ello, DataSet funciona
como una entidad independiente. Se puede considerar el objeto DataSet como
un conjunto de registros que siempre est desconectado y que no sabe nada
sobre el origen y el destino de los datos que contiene. Dentro de un objeto
DataSet, de la misma manera que dentro de una base de datos, hay tablas,
columnas, relaciones, restricciones, vistas, etc.
El objeto DataAdapter es el objeto que se conecta a la base de datos para
llenar el objeto DataSet. A continuacin, se vuelve a conectar a la base de datos
para actualizar los datos de dicha base de datos a partir de las operaciones
realizadas en los datos contenidos en el objeto DataSet. En el pasado, el
procesamiento de datos se basaba principalmente en la conexin. Ahora, con el
fin de proporcionar a las aplicaciones multinivel mayor eficacia, se est
adoptando para el procesamiento de datos un enfoque basado en mensajes que
68

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
manipulan fragmentos de informacin. En el centro de este enfoque se sita el
objeto DataAdapter, que proporciona un puente entre un objeto DataSet y un
almacn de datos de origen para recuperar y guardar datos. Para ello, enva
solicitudes a los comandos SQL apropiados que se ejecutan en el almacn de
datos.
El objeto DataSet basado en XML proporciona un modelo de programacin
coherente que funciona con todos los modelos de almacenamiento de datos: sin
formato, relacional o jerrquico. Funciona sin tener 'conocimiento' del origen de
los datos y representa a los datos que contiene como colecciones y tipos de
datos. Independientemente del origen de los datos del objeto DataSet, stos se
manipulan mediante el mismo conjunto de API estndar expuestas a travs del
objeto DataSet y sus objetos subordinados.
Aunque el objeto DataSet no tiene conocimiento del origen de sus datos, el
proveedor administrado tiene informacin detallada y especfica. La funcin del
proveedor administrado es conectar, llenar y almacenar el objeto DataSet desde
almacenes de datos (o viceversa). Los proveedores de datos OLE DB y SQL
Server de .NET (System.Data.OleDb y System.Data.SqlClient) que forman parte
de .Net Framework proporcionan cuatro objetos bsicos: Command,
Connection, DataReader y DataAdapter. En el resto de las secciones de este
documento, se describir cada parte del objeto DataSet y los proveedores de
datos OLE DB y SQL Server de .NET, con el fin de explicar qu son y cmo se
pueden utilizar al programar.
En las siguientes secciones se presentarn algunos objetos que han
evolucionado desde la tecnologa anterior y otros objetos nuevos. Los objetos
son los siguientes:

Objetos Connection. Para conectar con una base de datos y


administrar las transacciones en una base de datos.
Objetos Command. Para emitir comandos SQL a una base de datos.
Objetos DataReader. Proporcionan una forma de leer una secuencia
de registros de datos slo hacia delante desde un origen de datos SQL
Server.
Objetos DataSet. Para almacenar datos sin formato, datos XML y datos
relacionales, as como para configurar el acceso remoto y programar
sobre datos de este tipo.
Objetos DataAdapter. Para insertar datos en un objeto DataSet y
reconciliar datos de la base de datos.

Nota al trabajar con conexiones a una base de datos, hay dos opciones
diferentes: un proveedor de datos de SQL Server de .NET
(System.Data.SqlClient) y un proveedor de datos OLE DB de .NET
(System.Data.OleDb). En estos ejemplos se utilizar el proveedor de
datos SQL Server de .NET. Estn programados para comunicarse
69

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
directamente con Microsoft SQL Server. El proveedor de datos OLE DB
de .NET se utiliza para comunicarse con cualquier proveedor OLE DB (ya
que utiliza OLE DB como tecnologa subyacente).
Conexiones
Para establecer la comunicacin con bases de datos, se utilizan las conexiones
y se representan mediante clases especficas de proveedor, como
SQLConnection. Los comandos viajan por las conexiones y devuelven
conjuntos de resultados en forma de secuencias que puede leer un objeto
DataReader o que se pueden insertar en un objeto DataSet.
Mas adenlante se muestra la forma de crear un objeto de conexin. Las
conexiones se pueden abrir explcitamente mediante llamadas al mtodo Open
de la conexin; tambin se pueden abrir implcitamente al utilizar un objeto
DataAdapter
T

Comandos

Los comandos contienen la informacin que se enva a una base de datos y se


representan mediante clases especficas de un proveedor, como
SQLCommand. Un comando podra ser una llamada a un procedimiento
almacenado, una instruccin UPDATE o una instruccin que devuelve
resultados. Tambin es posible utilizar parmetros de entrada o de resultados y
devolver valores como parte de la sintaxis del comando. En el ejemplo siguiente
se muestra la forma de ejecutar una instruccin INSERT en la base de datos
Northwind.
Objetos DataReader

El objeto DataReader es, en cierto modo, sinnimo de un cursor de slo lectura


y slo hacia delante para datos. La API de DataReader es compatible con datos
sin formato y con datos jerrquicos. Cuando se ejecuta un comando en la base
de datos, se devuelve un objeto DataReader. El formato del objeto DataReader
devuelto es distinto de un conjunto de registros. Por ejemplo, podra utilizarse el
objeto DataReader para mostrar los resultados de una lista de bsqueda en una
pgina Web.
Objetos DataSet y DataAdapter

Objetos DataSet
El objeto DataSet es similar al objeto Recordset de ADO, pero ms eficaz y con
una diferencia importante: DataSet siempre est desconectado. El objeto
DataSet representa a una memoria cach de datos, con estructuras anlogas a
las de una base de datos, como tablas, columnas, relaciones y restricciones. Sin
embargo, aunque se puede utilizar un objeto DataSet como una base de datos
70

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
(y su comportamiento es muy similar), es importante recordar que los objetos
DataSet no interactan directamente con bases de datos ni con otros datos de
origen. Esto permite al programador trabajar con un modelo de programacin
que siempre es coherente, independientemente de dnde resida el origen de
datos. En los objetos DataSet se pueden colocar datos provenientes de una
base de datos, un archivo XML, cdigo o informacin escrita por el usuario. A
continuacin, a medida que se realizan cambios en el objeto DataSet, se puede
hacer un seguimiento y una comprobacin de los cambios antes de actualizar
los datos de origen. El mtodo GetChanges del objeto DataSet crea en realidad
otro objeto DataSet que slo contiene los cambios realizados en los datos.
Posteriormente, un objeto DataAdapter u otros objetos, utilizan este objeto
DataSet para actualizar el origen de datos original.
El objeto DataSet tiene muchas caractersticas de XML, incluida la capacidad de
producir y consumir datos XML y esquemas XML. Los esquemas XML se
pueden utilizar para describir esquemas intercambiables a travs de servicios
Web. De hecho, un objeto DataSet con un esquema puede compilarse con
seguridad de tipos y finalizacin automtica de instrucciones.
Objetos DataAdapter (OLEDB/SQL)
El objeto DataAdapter funciona como un puente entre el objeto DataSet y los
datos de origen. El uso del objeto SqlDataAdapter especfico del proveedor
(junto con los objetos SqlCommand y SqlConnection asociados) permite
aumentar el rendimiento global al trabajar con bases de datos de Microsoft SQL
Server. Para otras bases de datos compatibles con OLE DB, se debe utilizar el
objeto OleDbDataAdapter y los objetos OleDbCommand y OleDbConnection
asociados.
El objeto DataAdapter utiliza comandos para actualizar el origen de datos
despus de hacer modificaciones en el objeto DataSet. Si se utiliza el mtodo
Fill del objetoDataAdapter, se llama al comando SELECT; si se utiliza el
mtodo Update se llama al comando INSERT, UPDATE o DELETE para cada
fila modificada. Es posible establecer explcitamente estos comandos con el fin
de controlar las instrucciones que se utilizan en tiempo de ejecucin para
resolver cambios, incluido el uso de procedimientos almacenados. En
escenarios ad-hoc, un objeto CommandBuilder puede generarlos en tiempo de
ejecucin a partir de una instruccin de seleccin. Sin embargo, para generar en
tiempo de ejecucin hay que hacer un viaje de ida y vuelta adicional al servidor
con el fin de recopilar los metadatos necesarios; por tanto, si se proporcionan
explcitamente los comandos INSERT, UPDATE y DELETE en tiempo de
diseo, el rendimiento en tiempo de ejecucin mejorar.

71

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Dim
myConnection
As
SqlConnection
=
New
SqlConnection("server=(local)\VSdotNET;Trusted_Connection=yes;database=nort
hwind")
Dim mySqlDataAdapter As SqlDataAdapter = New SqlDataAdapter("select * from
customers", myConnection)
mySqlDataAdapter.InsertCommand.CommandText = "sp_InsertCustomer"
mySqlDataAdapter.InsertCommand.CommandType
CommandType.StoredProcedure
mySqlDataAdapter.DeleteCommand.CommandText = "sp_DeleteCustomer"
mySqlDataAdapter.DeleteCommand.CommandType
CommandType.StoredProcedure
mySqlDataAdapter.UpdateCommand.CommandText = "sp_UpdateCustomers"
mySqlDataAdapter.UpdateCommand.CommandType
CommandType.StoredProcedure
mySqlDataAdapter.Update(myDataSet)

=
=
=

Los registros se asignan a los comandos correspondientes de la forma apropiada.


En el ejemplo siguiente se ilustra la carga de un objeto DataAdapter a travs de
una instruccin SELECT. A continuacin, se actualizan, eliminan y agregan
algunos registros en el objeto DataSet. Por ltimo, se devuelven las
actualizaciones a la base de datos de origen a travs del objeto DataAdapter. En
la pgina, se muestran los comandos DeleteCommand, InsertCommand y
UpdateCommand creados. Tambin se ilustra el uso de varios objetos
DataAdapter para cargar varias tablas (Customers y Orders) en el objeto DataSet
ADO.NET: Ejecutar un comando
Los comandos se ejecutan en bases de datos con el fin de realizar acciones en
almacenes de datos. Por ejemplo, sera posible ejecutar un comando para
insertar o eliminar datos. Los comandos incluyen cualquier comando que se
pueda ejecutar en una base de datos y, si se trata de un comando
OleDbCommand, puede ser especfico del almacn de datos. Por ejemplo, se
puede emitir una llamada a un procedimiento almacenado para un comando o,
quizs, un comando para "set quoted_identifier on". Independientemente de cul
sea el comando, se puede utilizar el objeto OleDbCommand o SqlCommand
para ejecutar el comando en el almacn de datos del servidor.
En la tecnologa tradicional de ADO se pueden emitir comandos a travs de los
objetos Command, Connection y Recordset. En ADO.NET, el nico objeto que
ejecuta comandos es Command.
Para emitir un comando en una base de datos, el objeto Command debe tener
dos elementos bsicos: un objeto Connection y un objeto CommandText, que
se pueden establecer en el constructor. Para ejecutar el comando, es necesario
abrir el objeto Connection ,que no debe estar en estado de bsqueda:

72

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Dim InsertCmdString As String
InsertCmdString = "Insert into Region (RegionID, RegionDescription) VALUES
(100, 'Description')"
Dim mySqlCommand As SqlCommand = New SqlCommand(InsertCmdString,
myConnection)
En este tema se trata la ejecucin de comandos que no generan resultados.
Para ejecutar un comando que no devuelve resultados, hay que llamar al
mtodo ExecuteNonQuery.
mySqlCommand.ExecuteNonQuery()
Los objetos OleDbCommand y SqlCommand tienen colecciones de
parmetros que presentan el mismo comportamiento que las colecciones de
parmetros de ADO. Se pueden transferir los parmetros en lnea:
mySqlCommand.CommandText = "myStoredProc 'CustId'"
O se puede utilizar la coleccin Parameters:
workParam
=
mySqlCommand.Parameters.Add("@CustomerID",
SQLDataType.NChar, 5)
workParam.Value = "NewID"
ADO.NET: Obtener parmetros de resultados de un procedimiento
almacenado
Algunos procedimientos almacenados devuelven valores a travs de
parmetros. Cuando un parmetro de una instruccin SQL o un procedimiento
almacenado est declarado como parmetro de resultados ("out"), se devuelve
su valor al llamador. El valor se almacena en un parmetro de la coleccin
Parameters de los objetos OleDbCommand o SqlCommand.
A diferencia de lo que ocurre en el ejemplo siguiente, cuando no se establecen
ni la conexin ni el nombre del comando, se pueden establecer los parmetros,
pero ser necesario crear la coleccin de parmetros y definir los tipos
esperados.
workParam = myCommand.Parameters.Add("@CustomerID",
SQLDataType.NChar, 5)
workParam.Value = "CUSTID"

73

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
ADO.NET: Llenar un objeto DataSet a partir de una base de datos
El hecho de recuperar datos de una base de datos y manipularlos es ms fcil
que nunca. Si desea mostrar los resultados de una base de datos como una
secuencia de datos de slo lectura y slo hacia delante, es posible ejecutar un
comando y recuperar los resultados mediante el objeto DataReader. En lo
que se refiere a operaciones ms interactivas, como enlazar datos, recorrer
datos o la configuracin remota de los resultados de una consulta de base de
datos, es posible colocar los resultados en un objeto DataSet, de la forma
mostrada en este ejemplo.
El concepto ms importante que hay que recordar es que el objeto DataSet es
una estructura de datos independiente y distinta de un almacn de datos.
Aunque en el ejemplo se obtienen datos desde una base datos, no importa
cul sea su origen porque el objeto DataSet siempre presentar un modelo de
programacin coherente. Se trata de una coleccin de datos sencilla, con
caractersticas de base de datos relacional. No se incluyen mtodos Load,
Open ni Execute, ya que no se sabe de dnde provienen los datos. En esta
seccin se describe la forma de utilizar un objeto SqlDataAdapter para cargar
en el objeto DataSet datos de una base de datos.
Es posible agregar datos al objeto DataSet mediante el mtodo Add, insertar
datos directamente con los mtodos intrnsecos de XML. Un objeto
SqlDataAdapter puede utilizarse para recuperar datos de una base de datos,
pero tambin se puede utilizar para insertar datos en la base de datos. En
esta seccin se tratar la obtencin de datos.
El primer paso es crear un objeto SqlDataAdapter. Esto se hace de la misma
manera que se crea un objeto SqlCommand.
Dim SelectCmdString As String = "select * from customers"
Dim
mySqlDataAdapter
As
SqlDataAdapter
SqlDataAdapter(SelectCmdString, myConnection)
'...or this can also be done as follows:

New

Dim mySelectCommand as SqlCommand = New SqlCommand("select * from


customers", myConnection)
Dim
mySqlDataAdapter
as
SqlDataAdapter
=
new
SqlDataAdapter(mySelectCommand)
Los objetos SqlDataAdapter y SqlCommand son muy similares, con la
diferencia de los mtodos Fill y Update. El mtodo Fill llena un objeto
DataSet. El mtodo Update recoge los cambios realizados en un objeto
DataSet y los aplica en la base de datos. Para ello se utilizan cuatro
comandos especificados en el objeto DataAdapter. Estos comandos son:
SelectCommand, UpdateCommand, InsertCommand y DeleteCommand. Es
posible establecer explcitamente estos comandos para controlar las
instrucciones que se utilizan en tiempo de ejecucin con el fin de resolver
74

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
cambios, incluido el uso de procedimientos almacenados. En escenarios adhoc, un objeto CommandBuilder puede generarlos en tiempo de ejecucin a
partir de una instruccin de seleccin. Sin embargo, para generar en tiempo
de ejecucin hay que hacer un viaje de ida y vuelta adicional al servidor a fin
de recopilar los metadatos necesarios; por tanto, si se proporcionan
explcitamente los comandos de insercin, actualizacin y eliminacin en
tiempo de diseo, el rendimiento en tiempo de ejecucin ser mayor.
NOTA: Visual Studio ayuda en gran medida a establecer objetos
SqlDataAdapter y DataSet, y crea procedimientos almacenados de forma
prcticamente automtica. Estudie esta caracterstica mediante los objetos
ComponentDesigner y Database.
Cuando se haya establecido el objeto SqlDataAdapter, se le podr pasar un
objeto DataSet para llenarlo:
myDataSet = New DataSet()
mySqlDataAdapter.Fill(myDataSet,"Customers")
Ahora el objeto DataSet contiene el resultado de la consulta. De hecho, puede
contener los resultados de varias consultas e incluso relacionarlos. Como
contiene varios resultados, el objeto DataSet contiene un conjunto de tablas.
Hay que tener en cuenta que el mtodo Fill utiliza "Customers" como segundo
argumento. Se trata del nombre de la tabla que se va a llenar en el objeto
DataSet. Si la tabla no existe, se crea.
Como los datos se almacenan en una coleccin de filas de la tabla, es posible
utilizar fcilmente una instruccin foreach para recorrer las filas:
Dim myDataRow as DataRow
For Each myDataRow In myDataSet.Tables("Customers").Rows
Console.WriteLine(myDataRow("CustomerId").ToString())
Next
De hecho, tambin se puede utilizar la misma instruccin foreach para recorrer las
columnas.
ADO.NET: Actualizar una base de datos a partir de un objeto DataSet
En este tema se ilustra la forma de actualizar datos de una base de datos
mediante un objeto DataSet. Es importante recordar que tambin se puede
insertar, actualizar y eliminar datos directamente en una base de datos mediante
un objeto SqlCommand.
Algunos de los temas que se explican en Llenar un objeto DataSet a partir de
una base de datos son la carga de un objeto DataSet a partir de una base de
75

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
datos y la diferencia e independencia entre un objeto DataSet y una base de
datos. Cuando se haya cargado el objeto DataSet, se podrn modificar los datos
y el objeto DataSet har un seguimiento de los cambios.
El objeto DataSet se puede considerar una cach en memoria de datos
obtenidos a partir de una base de datos. El objeto DataSet contiene un conjunto
de tablas, relaciones y restricciones. En este ejemplo se muestra la forma de
utilizar el mtodo Add en el objeto DataTable para agregar datos nuevos a un
objeto DataSet. El mtodo Add utiliza una matriz de las columnas de datos
esperadas o un objeto DataRow.
' Create a new Connection and SqlDataAdapter
Dim myConnection as SqlConnection
Dim mySqlDataAdapter as SqlDataAdapter
myConnection
=
new
SqlConnection("server=(local)\VSdotNET;Trusted_Connection=yes;database=nort
hwind")
mySqlDataAdapter = new SqlDataAdapter("Select * from Customers",
myConnection)
Dim myDataSet as DataSet = new DataSet()
Dim myDataRow As DataRow
' Create command builder. This line automatically generates the update
commands for you, so you don't
' have to provide or create your own.
Dim myDataRowsCommandBuilder as SqlCommandBuilder = new
SqlCommandBuilder(mySqlDataAdapter)
' Set the MissingSchemaAction property to AddWithKey because Fill will not
cause primary
' key & unique key information to be retrieved unless AddWithKey is specified.
mySqlDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
mySqlDataAdapter.Fill(myDataSet, "Customers")
myDataRow = myDataSet.Tables("Customers").NewRow()
myDataRow("CustomerId") = "NewID"
myDataRow("ContactName") = "New Name"
myDataRow("CompanyName") = "New Company Name"
myDataSet.Tables("Customers").Rows.Add(myDataRow)

76

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Hay que tener en cuenta que el objeto DataTable debe devolver un objeto
DataRow a travs del mtodo NewRow. El mtodo devuelve un objeto DataRow
con el esquema apropiado del objeto DataTable. El nuevo objeto DataRow ser
independiente de la tabla hasta que se agregue a la coleccin RowsCollection.
Para modificar datos de un objeto DataRow hay que tener acceso al objeto
DataRow. Se puede utilizar el ndice de la fila en la coleccin RowsCollection
mediante la propiedad Rows:
myDataSet.Tables("Customers").Rows(0)("ContactName")="Peach"
Tambin se puede tener acceso a una fila especfica a travs del valor de la
clave principal:
Dim
myDataRow1
myDataSet.Tables("Customers").Rows.Find("ALFKI")
myDataRow1("ContactName")="Peach"

As

DataRow

donde "ALFKI" corresponde al valor de la clave principal "CustomerID" de la


tabla "Customers". Cuando se utiliza el objeto SqlDataAdapter, la clave se
establece a partir de la base de datos. Tambin se puede establecer la clave si
no se utiliza la base de datos mediante la propiedad PrimaryKey.
Utilice el mtodo Delete para quitar el objeto Row. Hay que tener en cuenta que
se produce una eliminacin lgica en el objeto DataSet, que slo ser una
eliminacin definitiva cuando se actualice la base de datos a partir del objeto
DataSet. De forma similar, se puede utilizar RejectChanges en el objeto
DataSet, en cuyo caso se restaurar el objeto Row.
myDataSet.Tables("Customers").Rows(0).Delete()
Se mantendrn en la fila los valores originales y los valores nuevos. El evento
RowChanging permite tener acceso a valores nuevos y valores originales con
el fin de decidir si se desea seguir adelante con la modificacin. Como se
mantienen valores nuevos y valores originales, se pueden establecer escenarios
como el bloqueo optimista o cambios de clave.
Antes de devolver los datos enviados a la base de datos, es necesario
configurar
los
comandos
InsertCommand,
UpdateCommand
y
DeleteCommand para cotejar los cambios en la base de datos. En escenarios
limitados se puede utilizar la clase SqlCommandBuilder para generar
automticamente estos comandos de la forma mostrada en el siguiente ejemplo:

77

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Dim
myDataRowsCommandBuilder
as
SqlCommandBuilder(mySqlDataAdapter)

SqlCommandBuilder

new

Para enviar los datos desde el objeto DataSet a la base de datos, hay que
utilizar el mtodo Update en el objeto SqlDataAdapter.
mySqlDataAdapter.Update(myDataSet, "Customers")
ADO.NET: Utilizar transacciones de base de datos
Las transacciones de base de datos se utilizan para controlar la confirmacin de
datos en bases de datos. Por ejemplo, en los procedimientos estndar de
cuentas, es necesario retirar fondos de una cuenta e ingresarlos a su vez en
otra. Como los equipos pueden sufrir interrupciones de funcionamiento (por
interrupcin del suministro elctrico, problemas de red, etc.), podra darse el
caso de que se actualizara o agregara un registro determinado, pero no el otro.
Para evitar estas situaciones, se utilizan transacciones. Las transacciones de
ADO.NET se controlan de la misma manera que en ADO, en el nivel de la base
de datos y, para ello, la base de datos debe ser compatible con el uso de
transacciones.
Existen tres comandos bsicos para las transacciones: BeginTransaction,
Commit y Rollback. BeginTransaction marca el principio de una transaccin.
Todo lo que ocurra entre la ejecucin del comando BeginTransaction y la del
siguiente comando (ya sea Rollback o Commit) se considerar como parte de
la transaccin. El siguiente fragmento de cdigo ilustra el uso de las
transacciones.
Dim
myConnection
as
SQLConnection
=
new
SQLConnection("server=(local)\VSdotNET;Trusted_Connection=yes;database=nor
thwind")
Dim myCommand as SQLCommand = new SqlCommand()
Dim myTrans as SqlTransaction
' Open the connection.
myConnection.Open()
' Assign the connection property.
myCommand.Connection = myConnection
' Begin the transaction.
myTrans = myConnection.BeginTransaction()
' Assign transaction object for a pending local transaction
myCommand.Transaction = myTrans
try
' Restore database to its original condition so sample will work correctly.
78

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
myCommand.CommandText = "DELETE FROM Region WHERE (RegionID =
100) OR (RegionID = 101)"
myCommand.ExecuteNonQuery()
' Insert the first record.
myCommand.CommandText = "Insert
RegionDescription) VALUES (100, 'MidWestern')"
myCommand.ExecuteNonQuery()
' Insert the second record.
myCommand.CommandText = "Insert
RegionDescription) VALUES (101, 'MidEastern')"
myCommand.ExecuteNonQuery()

into

Region

(RegionID,

into

Region

(RegionID,

myTrans.Commit()
Console.Write("Both Records are written to the database!")
catch e as Exception
myTrans.Rollback()
Console.WriteLine(e.ToString())
Console.Write("Neither record is written to the database!")
finally
myConnection.Close()
end try
En el ejemplo se muestra que si no se realiza correctamente la insercin, se
deshacen las dos operaciones para volver al estado original. Si se realizan las
dos correctamente, se confirma la transaccin.
Al igual que ocurre en la tecnologa ADO tradicional, se pueden controlar
transacciones a travs del objeto connection. De hecho, el uso de una
conexin OleDbConnection se basa en el mismo modelo de transacciones
OLE DB subyacente. Por tanto, si era posible confirmar transacciones en la
base de datos con la tecnologa ADO tradicional, tambin se podrn confirmar
con ADO.NET. En el siguiente fragmento de cdigo se ilustra el uso de
SqlConnection y SqlCommand para insertar dos registros en la tabla
"Region". Si uno de los dos no se ejecuta correctamente, se deshacen los
cambios.
El objeto DataSet tambin tiene un modelo de confirmaciones
(AcceptChanges,RejectChanges), pero no afecta a la base de datos. El
modelo de confirmacin se utiliza para el almacenamiento de datos en cach,
nicamente en el caso del objeto DataSet. Para enviar los datos desde el
objeto DataSet a la base de datos, hay que utilizar el mtodo Update del
objeto SqlDataAdapter.

79

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
ADO.NET: Trabajar con datos relacionales
Un objeto DataSet puede contener tablas no relacionadas o tablas
relacionadas. Se puede considerar que un objeto DataSet es un documento
de datos. De hecho, los documentos de datos XML son as, con la diferencia
de que se basan en un paradigma jerrquico. Como los datos se suelen
almacenar en bases de datos relacionales, el objeto DataSet puede controlar
relaciones jerrquicas y las relaciones de clave y clave externa. Las relaciones
tambin pueden tener distintos tipos de obligatoriedad. De forma
predeterminada, las eliminaciones y actualizaciones se aplican en cascada: si
se elimina una fila de Customer, tambin se eliminarn las filas relacionadas
de Orders; si se actualiza la clave de una fila Customer, tambin se
actualizarn los valores de clave externa asociados de la tabla Orders.
Un objeto DataSet contiene una coleccin Relations. Es posible agregar una
relacin a esta coleccin mediante la columna (o las columnas, si la clave es
de varias columnas) de las tablas relacionadas. En el siguiente ejemplo se
crea una relacin entre Customers y Orders y se asigna a la relacin el
nombre CustOrders.
myDataSet.Relations.Add("CustOrders",myDataSet.Tables("Customers").Columns
("CustomerID"), _
myDataSet.Tables("Orders").Columns("CustomerID"))
Despus de agregar una relacin entre la clave CustomerID de la tabla
Customers y la clave externa CustomerID de la tabla Orders del objeto
DataSet, se pueden recorrer los datos.
Dim myDataRow1 as DataRow
for each myDataRow1 in myDataSet.Tables("Customers").Rows
Console.WriteLine("Customer: " + myDataRow1("ContactName").ToString())
' Iterate over orders data
Dim myDataRow2 as DataRow
for
each
myDataRow2
myDataRow1.GetChildRows(myDataSet.Relations("CustOrders"))
Console.WriteLine("Order #" + myDataRow2("OrderID").ToString())
next

in

Console.WriteLine()
next
ADO.NET: Filtrar datos
Existen muchas formas de filtrar datos. Una forma consiste en filtrar datos en el
nivel de comandos de base de datos, mediante una clusula en la consulta. Otra

80

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
forma consiste en filtrar los datos cuando ya estn en el objeto DataSet. En este
tema se explica el filtrado en el objeto DataSet.
Cuando los datos ya estn en un objeto DataSet, se pueden utilizar mtodos del
objeto DataSet para manipular subconjuntos de datos.
Filtrar con el mtodo Select
Considere un objeto DataSet con las tablas Customers y Orders. Para filtrar
datos de la tabla Customers que tengan Kelly como valor de FirstName, se
puede utilizar el mtodo Select, que devuelve una matriz de filas.
myRowArray = dsCustomers.Select("ContactName like 'Kelly%'")
Observe que las instrucciones son del tipo ANSI-SQL. Dichas instrucciones son
bsicamente un subconjunto de ANSI-SQL, con esta diferencia: dado que DataSet
puede contener mltiples tablas relacionadas, el filtro tambin puede aplicarse
sobre estas tablas relacionadas. En el ejemplo siguiente, utilice la palabra clave
Child para filtrar las solicitudes y los clientes.
myRowArray = dsCustomers.Select("ContactName like 'Kelly%' AND
[child].OrderDate = '7/26/68'")
Estas funciones devuelven una matriz de filas. Puede iterar en la matriz
utilizando la instruccin foreach.
Filtrar y ordenar con objetos DataView
Con el objeto DataView, puede colocar mltiples filtros en DataSet, configurar
el enlace de datos a ellos, etc. Un objeto DataView se puede filtrar utilizando
las mismas reglas de lenguaje que en Select pero, en este caso, el filtro es
dinmico. Por tanto, si se agrega una fila a los datos y cumple los criterios del
filtro, aparecer en la vista. Las vistas se pueden ordenar y filtrar. Los filtros
pueden ser de datos y de versin (actual, nueva, modificada, eliminada). Para
configurar un objeto DataView, constryalo de forma que controle a
DataTable dentro de DataSet:
Dim
myDataView
DataView(myDataSet.Tables("Customers"))

As

DataView

New

Es posible configurar un filtro con la propiedad RowFilter mediante el mismo


lenguaje de filtro de consultas que el del ejemplo del mtodo Select anterior.
Para configurar una ordenacin, utilice una lista delimitada por comas de
ordenaciones de columnas, seguida de ASC (configuracin predeterminada y
opcional) o DESC, con el fin de indicar orden ascendente o descendente.
' Sort the view based on the FirstName column
myDataView.Sort = "CustomerID"
' Filter the dataview to only show customers with the CustomerID of ALFKI
myDataView.RowFilter = "CustomerID='ALFKI'"
81

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Tambin puede filtrar en funcin del estado de las filas (eliminadas, nuevas,
etc.). A continuacin se muestra un ejemplo de filtro en filas eliminadas:
myDataView.RowStateFilter = DataViewRowState.Deleted 6
TP

PT

3.7 Crear el proyecto de instalacion


Una vez que una aplicacin VB.NET ha sido desarrollada, comprobada y
compilada, debe ser instalada en las mquinas cliente donde ser utilizada en el
futuro. En ese proceso el entorno .NET suministra una serie de mtodos y
herramientas para realizar programas instaladores dependiendo del tipo de
aplicacin creada y de las caractersticas de dicha mquina cliente.
El programa instalador debe ocuparse de cargar la aplicacin en la mquina
cliente as como cualquier otro archivo o recurso que sta emplee en su
funcionamiento, ya sea en el estado actual o en el futuro previsto.
Se distinguen tres tipos de instalaciones:
-

instalacin XCOPY

programa instalador de aplicacin


-

programa instalador de mdulo

Instalacin XCOPY
Es el mtodo ms sencillo de instalacin y no precisa el uso de ninguna
herramienta de Visual Studio.NET por lo que constituye un mtodo
accesible a cualquier desarrollo. Se basa en el proceso de copia de la
carpeta de la aplicacin en la mquina cliente utilizando para ello el
comando XCOPY de MSDOS disponible en cualquier sistema Windows.
Para utilizarlo debe accederse a la lnea de comandos desde Inicio Todos
los Programas Accesorios Smbolo del Sistema y la sintaxis a emplear
es
XCOPY ruta_carpeta_origen ruta_carpeta_destino /s
donde /s indica que debe copiarse la carpetas y sus ficheros, pero tambin
las de todas las subcarpetas independientemente del nivel de anidamiento.
6
TPPT

http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art53.asp

82

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Por ejemplo, si la aplicacin se encuentra en la carpeta c:\Calculadora y se
debe tener en d:\Operaciones la sentencia es
XCOPY c:\calculadora d:\operaciones /s
Este proceso de copia migra todos los archivos necesarios, incluyendo el
EXE generado y las DLL relacionadas a la carpeta destino pudiendo ser
empleada. Si se desea instalar desde una mquina en otras mquinas de la
red la nica diferencia es que la ruta de la carpeta destino es la de una
carpeta compartida en la mquina cliente y donde se han de tener permisos
de escritura por parte del instalador.
Sin embargo, este mtodo de instalacin est sujeto a dos requisitos:
la mquina cliente debe tener instalado .NET Framework ya que, en
caso contrario, no puede disponer de las clases y otros recursos que la
aplicacin puede demandar
las aplicaciones que se instalen de esta forma no pueden tener
dependencias externas salvo el .NET Framework Esto implica que no
puede hacer uso de archivos externos como pueden ser bases de datos o
componentes compartidos.
Debido a las condiciones anteriores la instalacin XCOPY slo debe
emplearse cuando la aplicacin .NET no tiene dependencias externas y se
puede suponer instalada en .NET Framework en todas las mquinas cliente
lo cual reduce el nmero de aplicaciones que pueden instaladas de esta
forma.

Programa instalador de aplicacin


Cuando la aplicacin no puede instalarse mediante XCOPY deben utilizarse
las herramientas de Visual Studio para generar un programa de instalacin
especfico, el cual emplee la aplicacin Windows Installer para poder
instalar la aplicacin en cualquier mquina cliente de una forma sencilla. En
ese sentido, se distingue la instalacin de una aplicacin independiente o
de un control o componente desarrollado en VB.NET pero que no est
orientado a existir ni a ser ejecutado de forma independiente sino cuyo
objetivo es servir como paquete redistribuible para mltiples tipos de
proyectos. Sin embargo, la herramienta a emplear en ambos casos es la
misma y los pasos necesarios para ello son muy similares.
Para crear un proyecto del tipo indicado se emplea la herramienta de Visual
Studio, Asistente de Proyecto Instalador empleando los siguientes pasos:
83

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Luego de abrir la solucin que se desea instalar se accede a
Archivo Agregar Proyecto Nuevo proyecto, mostrndose el cuadro de
dilogo de creacin de proyectos donde, en la lista Tipo de Proyecto se
selecciona Proyectos de instalacin e implementacin y en la lista de
Plantillas creadas para guiar al programador en la creacin del proyecto se
selecciona Asistente de Proyectos de Instalacin

84

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Una vez iniciado el Asistente, nos indica que sern precisos cinco pasos para
la creacin del proyecto instalador

El primer paso determina si el programa instalador se utilizar para una


aplicacin independiente (en cuyo caso distingue entre una aplicacin
Windows para ser empleada en mquinas cliente, o una aplicacin web
para ser empleada en Internet) o un paquete redistribuible que puede
contener controles o componentes (en cuyo caso permite crear un
mdulo de Windows Installer o un archivo Cabinet CAB)

85

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Por tanto, para un programa instalador de aplicacin Windows


se selecciona la primera opcin y se pulsa Siguiente
El cuadro siguiente permite indicar qu elementos de la
aplicacin estarn en el programador instalador

86

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Los elementos que ofrece para ser seleccionados son Resultado principal,
Recursos adaptados, Smbolos de depuracin, Archivos de contenido y
Archivos de cdigo fuente. El elemento principal es el primero porque es el
que incluye el archivo ejecutable EXE de la aplicacin y las DLL que
emplea pero otros elementos, como por ejemplo el ltimo que contiene el
cdigo fuente de la aplicacin, no suele ser necesario en la instalacin en
las mquinas cliente.
El siguiente paso permite aadir al instalador otros ficheros que no
pertenecen directamente a la aplicacin como pueden ser archivos de tipo
Lame o pginas web HTML de ayuda de la aplicacin. Slo sera
necesario pulsar el botn Agregar y localizarlos en el sistema de carpetas
actual.

87

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

El siguiente cuadro muestra un resumen con las opciones elegidas


para el proyecto de instalacin. Si alguna no fuera correcta se puede pulsar
Atrs y modificarlas. Como se puede apreciar la ruta elegida es, por
defecto, un carpeta con el nombre dado al proyecto de instalacin dentro de
la carpeta de la aplicacin.

88

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Cuando se pulsa Finalizar se modifica el IDE para mostrar los


elementos del programa instalador en una ficha nueva con el nombre de
dicho programa

Adems, tambin es visible en el Explorador de Soluciones una carpeta


nueva con el nombre del proyecto de instalacin y los elementos y
dependencias pertenecientes a l.

89

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

Como se puede apreciar, uno de los elementos del programa


instalador son las dependencias detectadas que indican aquellos elementos
considerados imprescindibles en la mquina cliente para el correcto
funcionamiento de la aplicacin final. Y como se puede ver el primero es
siempre el propio .NET Framework.
El resultado normal de un programa de instalacin generado de esta
forma es un solo fichero de extensin MSI porque supone que las mquinas
cliente en las que ser utilizado tienen instalado Windows Installer, una
aplicacin del sistema operativo que controla la instalacin de aplicaciones.
Por ejemplo, es la responsable de poder desinstalar aplicaciones en el
equipo a travs de la herramienta Agregar y quitar programas del Panel de
Control.
Sin embargo, la suposicin anterior puede no ser cierta y otros
hechos relacionados con la instalacin puede necesitar tener ms control
sobre el resultado y caractersticas de los ficheros que constituyen el
programa instalador. Para realizar esos cambios debe accederse a las
caractersticas del programador instalador mediante la seleccin de la
opcin Propiedades en su men contextual en el Explorador de soluciones.
El primer paso es seleccionar Administrador de configuracin y
cambiar el valor Debug a Release para el proceso de instalacin (Setup1)

90

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

-A partir de ese momento se dispone de las propiedades de la versin


definitiva del programa instalador

Las principales opciones son


Nombre del archivo de resultados: indica la localizacin y nombre
del resultado del proyecto instalador en una sintaxis
<configuracin>\<nombre_proyecto>.<extensin>

91

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
donde <configuracin> indica la subcarpeta donde se crear el resultado
final, <nombre_proyecto> ser el del fichero de instalacin y <extensin>
ser .msi para aplicaciones independientes o .msm para mdulos
instaladores, ambas dadas por el funcionamiento del Windows Installer.
Empaquetar archivos: determina cmo se generan los ficheros
finales en relacin con el proyecto instalador. Son posibles tres opciones:
o
En el archivo de instalacin: es la opcin por defecto e implica que
todos los ficheros se incluyen en el archivo principal de instalacin .msi. Es
la opcin en la que se aplica el mayor grado de compresin y la ms
sencilla porque se genera un nico fichero a emplear en las mquinas
cliente
o
En archivos contenedores CAB: los ficheros Cabinet se emplean en
mltiples instalaciones y pueden ser tiles por el hecho de poder elegir el
tamao mximo a emplear (ver cuadro superior). Si se fija en 1440 kb se
podra guardar el resultado de la instalacin en disquetes y emplear estos
para llevar a cabo la instalacin en las mquinas cliente

Archivos separados sin comprimir: en esta opcin no se aplica


compresin y los archivos que constituyen el programa instalador se
crean directamente en la misma carpeta que el fichero .msi.
Programa previo (Bootstrapper): se emplea para determinar si el
programa de instalacin de nuestra aplicacin debe encargarse
tambin de instalar previamente en la mquina cliente la aplicacin
Windows Installer para que sta controle el proceso de instalacin
posterior. Existen tres opciones:
Ninguno: no se instalar Windows Installer por lo que se supone
existente en las mquinas cliente. Si stas tienen instalado Windows
XP o superior es la opcin adecuada ya que Windows Installer est
presente en ellas.
Programa previo para Windows Installer: esta opcin aade
Windows Installer al programa instalador. Cuando ste se inicie
instalar primero en las mquinas cliente Windows Installer y luego
retomar la instalacin de la aplicacin final. Esta eleccin conlleva
la creacin de cuatro ficheros en el programa instalador
Fichero
Setup.exe

Significado
Ser el punto de entrada de la instalacin
Chequear si es precisa la instalacin de
Windows Installer en la mquina cliente en
cuyo caso recurre a InstMsiA.exe o a
InstMsiW.exe para hacerlo. Despus,
reanuda la instalacin del programa final
desde el .msi.
92

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
InstMsiA.exe Instala Windows Intaller en una mquina con
Windows 95 o 98.
InstMsiW.exe Instala Windows Intaller en una mquina con
Windows NT o 2000.
Setup.ini
Contiene el nombre del fichero .msi que
deber ser ejecutado una vez se haya
realizado la instalacin de Windows Installer
o se haya comprobado su existencia previa.

Programa previo para web: se emplea cuando se debe disponer la


instalacin desde Internet. Se crean los ficheros InstMsiA.exe y
InstMsiW.exe. Tambin se crea Setup.exe para detectar la existencia previa
de Windows Installer pero, en este caso, se descargara el ejecutable de
instalacin desde la web, en cuyo caso deber indicarse
la URL de la carpeta de instalacin, donde debe estar el programa
instalador y los ficheros asociados
la URL para instalar Windows Installer y donde, por tanto, deben estar
InstMsiA.exe y InstMsiW.exe. Si no se indica deber ser la misma que para
el programa instalador

Compresin: permite determinar el tipo de compresin emplear


(siempre que las opciones tomadas previamente lo permitan) en tres
valores :
o

Ninguna: no se aplica compresin

o
Optimizada para velocidad: se aplica para generar una
instalacin rpida pero el tamao del proyecto instalador puede
incrementarse

93

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
o
Optimizada para tamao: se comprime al mximo reduciendo
el tamao de los ficheros de instalacin pero el proceso de
instalacin ser ms lento.
Ejecucin del programa instalador
Una vez generado el fichero .msi de instalacin se puede hacer doble clic
en l una vez que se encuentre en la mquina cliente. Se inicia un asistente
que gua al usuario en el proceso de instalacin de la aplicacin. Los pasos
principales son los siguientes:
El primer paso presenta el Asistente e indica el nombre del proyecto
de instalacin seleccionado en su creacin

En el segundo paso el usuario debe seleccionar la carpeta del


sistema local donde desea instalar la aplicacin final. Puede aceptar la ruta
que se ofrece por defecto o pulsar el botn Examinar para indicar otra
distinta.

94

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

El siguiente requisito es confirmar que se desea instalar la aplicacin


pulsando el botn Siguiente

95

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
Si todo es correcto, el programa de setup procede a la
instalacin de la aplicacin final, indicando con una barra de
progreso el avance del proceso

7
TPPT

Para indicar en el ltimo cuadro la finalizacin de la instalacin. 7


TP

PT

www.visual\INSTALADORES DE APLICACIONES EN _NET, AUTOR J_ M_ .mht

96

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera

97

Universidad Nacional Abierta y a Distancia


Facultad de Ciencias bsicas e ingeniera
FUENTES DOCUMENTALES
CEBALLOS, F.J : VISUAL BASIC .NET. LENGUAJE Y APLICACIONES. Ed. Rama
Chappell, David: Aplique.NET, Pearson, 2003 ISBN: 970-26-0385-4
Charte, Ojeda Francisco VISUAL BASIC .NET Ed. Anaya Multimedia
Gmez, Jimnez Enrique : VISUAL BASIC .NET Ed. Anaya Multimedia
Halvorson, Michael :Aprenda ya Microsoft Visual Basic .NET, McGraw-Hill, 2002
ISBN: 84-481-3227-0
Mackenzie Duncan, Sharkey Kent Aprendiendo Visual Basic .NET en 21 lecciones
avanzadas,Pearson Educacin de Mxico, 2003 ISBN: 970-26-0379-X
MacDonald, Matthew: ASP.NET : manual de referencia, McGraw-Hill, 2002 ISBN:
84-481-3709-4
Platt, David S: As es Microsoft .NET McGraw-Hill, 2001,ISBN: 84-481-3251-3
Riordan,
Rebecca M :Aprenda ya Microsoft ADO
Hill/Interamericana de Espaa, 2002 ISBN: 84-481-3639-X

.NET,

McGraw-

Sharkey, Kent APRENDIENDO VISUAL BASIC .NET Ed. Pearson Educacin


INFOGRAFIA
http://es.wikipedia.org/wiki/Visual_Basic
http://es.wikipedia.org/wiki/Visual_Basic.NET
TU

http://www.desarrolloweb.com/articulos/1388.php

UT

es.wikipedia.org/wiki/Bases_de_Datos
http://www.dlsi.ua.es/asignaturas/dpaa/tema1.pdf
http://www.ongconcalidad.org/modelacionsistemas.pdf
http://www.willydev.net/descargas/Cursos/vbnet/index.html

TU

http://www.programatium.com/vbnet.htm

TU

UT

UT

www.visual\INSTALADORES DE APLICACIONES EN _NET, AUTOR J_ M_ .mht

98

Das könnte Ihnen auch gefallen