Está en la página 1de 98

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

UNIVESIDAD NACIONAL ABIERTA Y A DISTANCIA

Escuela de Ciencia Bsicas Tecnologa e Ingeniera Programa de Ingeniera de sistemas

VISUAL AVANZADO VISUAL BASIC. NET

MARIA CONSUELO RODRGUEZ NINO

TUNJA 2008

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa 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 3.10 Actualizacin de Vb 6 a .Net 2

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 Unidad 1; Caractersticas Generales: Introduccin a la plataforma .NET, Fases en el desarrollo de un programa, Utilizacin de Visual Basic. Net 3

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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.

3. 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 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 4

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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. 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. Inducir al estudiante en el desarrollo de aplicaciones en ambiente web, 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

Que el estudiante manipule el entorno de programacin .NET mediante la aplicacin de las estructuras de programacin Que el estudiante desarrolle modelos de solucin de problemas a travs de la programacin orientada objetos, interactuando con motores de bases de datos. 5

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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. El estudiante desarrolla modelos de solucin de problemas a travs de la programacin orientada objetos, realizando interaccin con motores de bases de datos. El estudiante conoce los fundamentos para la implementacin de una aplicacin Web con contenido dinmico mediante de Microsoft Visual Basic .NET.

4.4 METAS 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. 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. 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 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 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,

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

11

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 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 Char Date Cantidad memoria 2 bytes 1 byte 2 bytes 8 bytes 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 Escuela de Ciencias Bsicas Tecnologa e ingeniera

Decimal

16 bytes

Double

8 bytes

Integer Long

4 bytes 8 bytes

Short Single

2 bytes 4 bytes

String

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.

Object

4 bytes

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 Escuela de Ciencias Bsicas Tecnologa 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 por que 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

16

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

Dim As Short,b As short=5 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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

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

Descripcin

Configuracin predeterminada

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

26

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa e ingeniera

de ttulo. MinimizeBox 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

StartPosition

WindowsDefaultLocation

Text

Form1 (Form2, Form3, etc.)

Nombre

formul Botn ario ordena Botn cin alfabt ico Panel descri pcin 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: 1. Load 2. GotFocus 3. Activated 4. Closing 5. Closed 6. Deactivate 7. LostFocus 8. Dispose()

28

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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: 1. Abrir el Editor de cdigo del formulario para el que desea aadir un controlador de eventos. 2. 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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: 1. Si el Cuadro de herramientas no est abierto, en el men Ver, hacer clic en Cuadro de herramientas. 2. 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. 3. Una vez aadidos los controles, podemos cambiar su posicin y tamao: a. Para cambiar la posicin del control, hacer clic sobre el control para seleccionarlo y arrastrarlo a la posicin deseada. b. 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: 1. Si el Cuadro de herramientas no est abierto, en el men Ver, hacer clic en Cuadro de herramientas. 2. En el Cuadro de herramientas, hacer clic en el control que desea aadir. 3. Mover el cursor del ratn sobre el formulario. El smbolo del cursor cambia a una cruz. 4. Posicionar la cruz donde desee que aparezca la esquina superior izquierda del control. 5. 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. 6. Cuando el control tenga el tamao adecuado, liberar el botn del ratn. El control aparece en la ubicacin correcta en el formulario. 7. Podemos cambiar el tamao y la posicin del control despus de liberar el botn del ratn: a. 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 Escuela de Ciencias Bsicas Tecnologa e ingeniera

b. 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: 1. Si el Cuadro de herramientas no est abierto, en el men Ver, hacer clic en Cuadro de herramientas. 2. En el Cuadro de herramientas, hacer doble clic en el control MainMenu. 3. En el cuadro Caption del men recin creado, escribir el texto del ttulo del primer men. Este ttulo aparecer en la barra del men. 4. 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 Escuela de Ciencias Bsicas Tecnologa 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: 1. En el Diseador de Windows Forms, abrir el formulario que contiene los controles que desea posicionar. 2. 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. 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: 1. Seleccionar un control. 2. 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 reutilizar4

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

35

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

En la programacin orientada a objetos, utilizamos la abstraccin y la encapsulacin para crear clases bien diseadas. 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 36

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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. 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 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. 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.
5

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

37

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera VentanaWindows>Tamao, Color, font, etc. b) Mtodos: Son las conductas propias de la naturaleza del objeto. 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. 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 Relacion Metodos que se activan gato detecta gata detectar maullar(), correr(), oler() gato detecta perro detectar bufar(), saltar(), correr() maestro ensena alumno Ensenar pasar lista(), preguntar(), etc Raton click Windows click maximizar(), cerrar() Raton dblclk Windows dblclk minimizar(), etc

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.

38

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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. En visual Basic Net cabe recordar adems que un conjunto de objetos que comparten o contienen caractersticas similares forman la llamada CLASE. 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

Devuelve el cdigo hash de esta instancia.

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

39

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

MaxValue

Se obtiene el valor mximo del tipo de dato correspondiente

Ahora se realizarn ejemplos para mostrar cada uno de los mtodos anteriores 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() 40

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

Dim i As Integer = 5 Dim j As Integer = 4 Dim r As Boolean r = i.Equals(j) 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 41

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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

42

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

Module Module1 Sub Main() Dim i As Integer Console.WriteLine("el valor minimo de este tipo de dato es {0}", i.MinValue) 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 43

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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

44

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

Es importante no olvidar la instruccin Option Strict On y OPTION Explicit On en cada uno de los ejemplos. La clase String Esta clase posee muchos mtodos entre ellos tenemos ToUpper ToLower Chars Convierte todos los caracteres de una cadena en Maysculas. Convierte todos los caracteres de una cadena en minsculas. Obtiene el carcter situado en una posicin especificada en la instancia en cuestin. Obtiene el nmero de caracteres de la instancia en cuestin. Crea otra referencia a la misma cadena Concatena dos cadenas Crea un nuevo objeto de tipo string Determina si un string termina o no en una cadena dada. Retorna la posicin de la primera ocurrencia de un carcter o de un string dado como parmetro. Inserta una instancia especificada de String en una posicin de ndice especificada de la instancia. Concatena un objeto String separador especificado entre cada uno de los elementos de una matriz String especificada, generando una sola cadena concatenada.

Length Clone Concat Copy EndsWith IndexOf

Insert

Join

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. 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

PadRight

45

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

Remove

Elimina un nmero de caracteres especificado de la instancia a partir de una posicin especificada. Reemplaza todas las apariciones de un carcter Unicode o un objeto String en la instancia por otro carcter Unicode u otro objeto String. Toma en un vector de tipo string las cadenas que estn separadas por un carcter especifico.

Replace

Split

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 ToString ToUpper Trim TrimEnd TrimStart Devuelve una copia de String en minsculas. Convierte el valor de la instancia en un objeto String. Devuelve una copia de String en maysculas. 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 46

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

Module Module1 Sub Main() Dim a(2) As String, b As String, c As String, d As String = " un espacio " a(0) = "universidad " 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") 47

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

Console.Read() End Sub End Module Este otro ejemplo muestro otro grupo de mtodos de esta clase 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)) 48

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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 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. 49

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

CDbl

Double

Cdec

Decimal

Cint CLng

Integer Long

CObj Cshort CSng

Object Short Single

CStr

String

-1,79769313486231E+308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a 1,79769313486231E+308 para valores positivos. +/-79.228.162.514.264.337.593.543.950.335 para 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 50

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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() 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

51

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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 52

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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))") 53

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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

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 54

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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}, _ 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.

55

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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 56

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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

57

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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.

58

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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"

59

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

'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) '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)

60

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

Console.WriteLine("Despus ProdMOSTRAR = X + Y") Console.Read() End Sub End Module

de

realizar

la

siguiente

operacin

Ahora veremos un ejemplo cuando los parmetros son por referencia. Option Strict On OPTION Explicit On Module Module1 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) 61

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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") 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 62

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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

63

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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

64

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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. 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 65

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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 66

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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) 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.

67

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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 68

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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.

69

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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

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 70

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 (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 71

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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. 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 72

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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: 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,

73

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

pero ser necesario crear la coleccin de parmetros y definir los tipos esperados. workParam = myCommand.Parameters.Add("@CustomerID", SQLDataType.NChar, 5) workParam.Value = "CUSTID"

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)

74

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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. 75

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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" 76

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

myDataRow("CompanyName") = "New Company Name" myDataSet.Tables("Customers").Rows.Add(myDataRow)

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 As myDataSet.Tables("Customers").Rows.Find("ALFKI") myDataRow1("ContactName")="Peach"

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.

77

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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: 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()

78

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

' Assign transaction object for a pending local transaction myCommand.Transaction = myTrans try ' Restore database to its original condition so sample will work correctly. 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, 79

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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. 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 Console.WriteLine() next

in

80

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

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 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 As DataView(myDataSet.Tables("Customers")) 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"

81

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

' Filter the dataview to only show customers with the CustomerID of ALFKI myDataView.RowFilter = "CustomerID='ALFKI'"

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.Deleted6

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

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

82

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

donde /s indica que debe copiarse la carpetas y sus ficheros, pero tambin las de todas las subcarpetas independientemente del nivel de anidamiento. 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.

83

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

Para crear un proyecto del tipo indicado se emplea la herramienta de Visual Studio, Asistente de Proyecto Instalador empleando los siguientes pasos: 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa 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

92

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

desde el .msi. 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 Escuela de Ciencias Bsicas Tecnologa 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 Escuela de Ciencias Bsicas Tecnologa e ingeniera

El siguiente requisito es confirmar que se desea instalar la aplicacin pulsando el botn Siguiente

95

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa 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

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

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

96

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa e ingeniera

97

Universidad Nacional Abierta y a Distancia Escuela de Ciencias Bsicas Tecnologa 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 http://www.desarrolloweb.com/articulos/1388.php 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 http://www.programatium.com/vbnet.htm


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

98

También podría gustarte