mes 12 - manual vb. net - avanzado

Upload: carlosalexanderabantodiaz

Post on 05-Mar-2016

17 views

Category:

Documents


0 download

DESCRIPTION

Programacion VB avanzado

TRANSCRIPT

NDICE DE CONTENIDOS

Grupo Educativo Leonardo Da VinciCOMPUTREINGrupo Educativo Leonardo Da VinciCOMPUTREIN

NOTA: La informacin contenida en este material, tiene un fin exclusivamente didctico, y por lo tanto, no est previsto su aprovechamiento a nivel profesional o industrial. Organizacin Leonardo Da Vinci no ser jurdicamente responsable por: errores u omisiones; daos y perjuicios que se pudieran atribuir al uso de la informacin comprendida en este libro, ni por la utilizacin indebida que pueda drsele.

Prefacio

MS Visual Basic .NET - Avanzado, es un manual que te ayudar a utilizar las operaciones y transacciones del lenguaje de programacin ms usado actualmente. Al hacerlo aprenders tambin a desarrollar la capacidad de diseo e implementacin de programas, a generar soluciones mediante mtodos ordenados, y a trabajar en equipo; tres cosas que te sern muy tiles durante toda tu vida.

Los procedimientos empleados en este manual para el diseo e implementacin de Programas, te permitirn realizar con gran facilidad y con calidad excepcional, aquellas tareas que involucren mantenimientos y actualizaciones de programas.

Al trabajar con estas tareas, tu funcin ser el de programador de computadoras; es decir, ser quien plantee y desarrolle las soluciones para alcanzar los objetivos propuestos, creando soluciones fciles de implementar. Tu asesor ser el usuario que plantear el problema que debes resolver.

MS Visual Basic .NET - Avanzado, presenta los casos, procedimientos, tips, actividades, cuestionarios y trminos tcnicos computacionales adecuados y claros para ti, para que aprendas de manera sencilla.

El Director

Los nombres comerciales que aparecen en este libro son maracas registradas de sus propietarios y se mencionan nicamente con fines didcticos, por lo que Organizacin Leonardo Da Vinci no asume ninguna responsabilidad por el uso que se d a esta informacin, ya que no infringe ningn derecho de registro de marca.

Colabor con la recopilacin de esta informacin:Ing. Nathaly Vernica Prado Ramrez.

NDICE DE CONTENIDOS

PROGRAMACIN ORIENTADA A OBJETOS8POO EN MICROSOFT VISUAL BASIC.NET9CONCEPTOS DE POO9DEFINICIN DE OBJETOS10DEFINICIN DE CLASES10CREAR UNA CLASE12CREACIN DE CAMPOS PARA LA CLASE13MTODOS14INSTANCIAR UNA CLASE14PROPIEDADES17ENCAPSULACIN A TRAVS DE PROPIEDADES19PROPIEDADES DE SLO LECTURA O SLO ESCRITURA20TRABAJANDO CON EVENTOS EN WINDOWS FORM23EVENTOS EN WINDOWS FORM24QU ES UN EVENTO?24PROGRAMACIN BASADA EN EVENTOS25ESQUEMA BSICO DE UN SISTEMA ORIENTADO A EVENTOS26EL EMISOR DE EVENTOS26EL RECEPTOR DE EVENTOS27CONEXIN CON UN MANIPULADOR DE EVENTOS27ENLACE ESTTICO DE EVENTOS28CAJAS DE DILOGO EN APLICACIONES WINDOWS30VALIDAR ENTRADAS DE USUARIO31INTRODUCCIN A ADO .NET32ACCESS DATA OBJECT EN VISUAL BASIC.NET33TERMINOLOGA DE BASE DE DATOS33CONCEPTO35ARQUITECTURA DE ADO .NET36ENTORNO CONECTADO O DESCONECTADO36DATASET36COMPONENTES DE ADO.NET37OBJETOS COMUNES DE ADO.NET38ESPACIOS DE NOMBRES Y CLASES EN ADO .NET38OBJETOS ADO. NET39PROVEEDORES DE DATOS DE .NET40CONEXIN CON FUENTES DE DATOS41CONEXIN CON FUENTES DE DATOS42CREACIN DE CONEXIONES42LAS CLASES COMMAND46MTODOS DE LAS CLASES COMMAND47APLICACIONES DE LAS CLASES COMMAND48INSERTAR DATOS USANDO SQLCOMMAND49RECUPERAR DATOS USANDO DATAREADERS51ENLACE A DATOS EN WINDOWS FORM I59OBJETOS DE ENLACE DE DATOS60OBJETO DATAADAPTER60OBJETO DATASET61USO DE DATASET FRENTE A DATAREADER69EXPLORADOR DE SERVIDORES70ENLACE A DATOS EN WINDOWS FORM II75TABLAS DE BSQUEDAS76CONTROL DATAGRIDVIEW76ACTUALIZAR DATOS CON DATAADAPTER Y DATASET78ADMINISTRAR DATOS EN UNA TABLA82DATARELATION87LA CLASE DATAVIEW88DESARROLLANDO COMPONENTES Y CONTROLES DE USUARIO90HERENCIA ENTRE FORMULARIOS91HERENCIA VISUAL91AGREGAR UN PROYECTO CON UN FORMULARIO DERIVADO95CRYSTAL REPORTS I103INFORMES104CREAR CONEXIN CON LA BASE DE DATOS104CREAR UN INFORME109ACCEDER A LA BASE DE DATOS111CRYSTAL REPORTS II116MOSTRAR INFORMES117VISUALIZADOR DEL INFORME117CREAR UN INFORME DESDE ADO NET119VISUALIZAR EL INFORME119PROYECTOS DE INSTALACIN120INSTALAR APLICACIONES121PROYECTO DE INSTALACIN121INSTALAR APLICACIONES126PROYECTO FINAL130DESARROLLO PROYECTO FINAL131

1

Sesin 1

PROGRAMACIN ORIENTADA A OBJETOS

Al finalizar la Sesin usted ser capaz de:

Competencia:Conoce conceptos avanzados de programacin con Visual Basic .NET.

Procedimentales:Participa sugiriendo sobre las actividades propuestas.Analiza informacin acerca de la programacin orientada objetos mediante los contenidos entregados.Crea objetos dentro de su aplicacin.

Actitudinales:Reconoce la importancia del la programacin orientada a objetos e implementacin de clases.

POO EN MICROSOFT VISUAL BASIC.NET

CONCEPTOS DE POOSe trata de una evolucin de la programacin procedural basada en funciones, que permite agrupar elementos de cdigo (rutinas y datos) con funcionalidades similares, bajo un sistema unificado de manipulacin y acceso a dichos elementos.La organizacin de una aplicacin en POO se realiza mediante estructuras de cdigo. Una estructura de cdigo contiene un conjunto de procedimientos e informacin que ejecutan una serie de procesos destinados a resolver un grupo de tareas con un denominador comn. Una aplicacin orientada a objetos tendr tantas estructuras de cdigo como aspectos del programa sea necesario resolver.Un procedimiento que est situado dentro de una de estructura de este tipo, no podr llamar ni ser llamado por otro procedimiento situado en una estructura distinta, si no es bajo una serie de reglas. Lo mismo suceder con los datos que contenga la estructura, permanecern aislados del exterior, y slo sern accesibles siguiendo ciertas normas. Una estructura de cdigo, es lo que en POO identificamos como objeto.Al ser las estructuras de cdigo u objetos, entidades que contienen una informacin precisa y un comportamiento bien definido a travs del conjunto de procedimientos que incluyen, pueden ser clasificados en funcin de las tareas que desempean. Precisamente, uno de los fines perseguidos por la POO es conseguir una mejor catalogacin del cdigo, en base a estructuras jerrquicas dependientes, al estilo de un rbol genealgico.Trasladando las nociones que acabamos de exponer al ejemplo anterior, en el cual se programaban los procesos de gestin de los empleados de una empresa, el resultado obtenido ser una estructura de cdigo conteniendo todos los procedimientos, funciones y variables de la aplicacin, implicados en las operaciones a realizar con un empleado, o lo que es lo mismo, un objeto Empleado. Entre los elementos de este objeto encontraremos el nombre, apellidos, alta del empleado, pago de nmina, etc. Todos los elementos que forman parte de un objeto componen la clase del objeto. Una clase consiste en el conjunto de especificaciones que permiten crear los objetos; en el caso expuesto por el ejemplo anterior sera la clase Empleado.Como acabamos de comprobar, las motivaciones que han llevado al desarrollo de la POO son facilitar una mejor organizacin y clasificacin del cdigo, que la proporcionada por la programacin procedural tradicional; aproximando al mismo tiempo, el modo de programar a la manera en que nuestra mente trabaja para aplicar soluciones a los problemas planteados.

DEFINICIN DE OBJETOSUn objeto es una agrupacin de cdigo, compuesta de propiedades y mtodos, que pueden ser manipulados como una entidad independiente. Las propiedades definen los datos o informacin del objeto, permitiendo consultar o modificar su estado; mientras que los mtodos son las rutinas que definen su comportamiento.Un objeto es una pieza que se ocupa de desempear un trabajo concreto dentro de una estructura organizativa de nivel superior, formada por mltiples objetos, cada uno de los cuales ejerce la tarea particular para la que ha sido diseado.

DEFINICIN DE CLASES Una clase no es otra cosa que el conjunto de especificaciones o normas que definen cmo va a ser creado un objeto de un tipo determinado; algo parecido a un manual de instrucciones conteniendo las indicaciones para crear el objeto. Los trminos objeto y clase son utilizados en OOP con gran profusin y en contextos muy similares, por lo que para intentar aclarar en lo posible ambos conceptos, diremos que una clase constituye la representacin abstracta de algo, mientras que un objeto constituye la representacin concreta de lo que una clase define.La clase determina el conjunto de puntos clave que ha de cumplir un objeto para ser considerado perteneciente a dicha clase o categora, ya que no es obligatorio que dos objetos creados a partir de la misma clase sean exactamente iguales, basta con que cumplan las especificaciones clave de la clase. Expongamos ahora las anteriores definiciones mediante un ejemplo preciso: un molde para crear figuras de cermica y las figuras obtenidas a partir del molde. En este caso, el molde representara la clase Figura, y cada una de las figuras creadas a partir del molde, sera un objeto Figura. Cada objetoFigura tendr una serie de propiedades comunes: tamao y peso iguales; y otras propiedades particulares: un color distinto para cada figura.Aunque objetos distintos de una misma clase pueden tener ciertas propiedades diferentes, deben tener el mismo comportamiento o mtodos. Para explicar mejor esta circunstancia, tomemos el ejemplo de la clase Coche; podemos crear dos coches con diferentes caractersticas (color, tamao, potencia, etc.), pero cuando aplicamos sobre ellos los mtodos Arrancar, Acelerar o Frenar, ambos se comportan o responden de la misma manera.

El proceso por el cual se obtiene un objeto a partir de las especificaciones de una clase se conoce como INSTANCIACIN de objetos. Siguiendo con ejemplo del molde y las figuras; en dicha imagen vemos un molde para fabricar figuras rectangulares, donde la clase Figura estara representada por el molde, y cada uno de los objetos Figura (iguales en forma pero con la propiedad Color distinta), representara una instancia de la clase.

Ejemplo: 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.Las clases utilizan encapsulacin para garantizar que se cumple una abstraccin. 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.

Lo que ve el usuario: Lo que est encapsulado:

//verify language//authenticate PIN//validate account bal//adjust account bal

ObjetoClaseObjeto12324512

CREAR UNA CLASEVolvamos al ejemplo expuesto al comienzo de este tema, en el cul, habamos dejado a nuestro programador desarrollando los procesos de un empleado dentro de una aplicacin de gestin empresarial. Recordemos que se planteaba el problema de que ante el crecimiento del programa, el mantenimiento del cdigo, al enfocarse de modo procedural, poda volverse una tarea realmente difcil.Vamos a replantear este diseo, encauzndolo bajo una perspectiva orientada a objeto, que nos permita un uso ms sencillo del cdigo y un mantenimiento tambin ms fcil. Para lo cual desarrollaremos una clase que contenga todas las operaciones a realizar por el empleado; en definitiva, crearemos la clase Empleado, cuyo proceso describiremos a continuacin.

Opcin 01:Podemos escribir una clase en VB.NET utilizando diferentes tipos de aplicacin, en este caso emplearemos una aplicacin de consola. Iniciaremos en primer lugar VS.NET, creando un proyecto de tipo consola. Crear un proyecto en Visual Basic .NET. En el men Proyecto, hacer clic en Agregar clase. En el cuadro Agregar nuevo elemento, escribir el nombre de la nueva clase y hacer clic en Abrir. El Editor de cdigo proporciona instrucciones de programacin.

Opcin 02:

Y escribimos el nombre:

El resultado sera:

Tras agregar una nueva clase a nuestro proyecto, podemos agregar miembros de datos a la clase. Un miembro de datos especfico para una instancia de la clase se denomina miembro de datos de una instancia. Cuando agregamos miembros de datos de una instancia a una clase, especificamos el nivel de acceso estableciendo los modificadores de acceso. Los miembros de datos de una instancia incluyen variables y constantes miembro. Las variables miembro tambin se denominan campos.

CREACIN DE CAMPOS PARA LA CLASEUn campo de una clase no es otra cosa que una variable, generalmente con mbito pblico, accesible desde el exterior de la clase. El Cdigo fuente 205 muestra la creacin de un campo para la clase Empleado.

Aplicacin 01:

En el siguiente ejemplo, se agrega a la clase un miembro de datos de tipo Double denominado saldo:

MTODOSPodemos agregar mtodos a una clase. Cuando agregamos mtodos, especificamos el nivel de acceso estableciendo el modificador de acceso. Los mtodos incluyen funciones y procedimientos Sub.

En el siguiente ejemplo, se agrega a la clase un mtodo denominado Deposito:

En este ejemplo, el mtodo Deposito es pblico, por tanto los usuarios de esta clase pueden depositar dinero en una cuenta utilizando el mtodo Deposito.

INSTANCIAR UNA CLASE Para ejecutar los mtodos y utilizar las propiedades de una clase, debemos crear una instancia de la clase. La instancia de una clase se denomina objeto. Para crear una instancia de una clase, en la Ventana de Cdigo del Formulario, declaramos una variable del tipo de la clase y utilizamos la palabra clave New, como se muestra en la siguiente lnea de cdigo:

Una vez declarado el objeto, podemos utilizar el mtodo respectivo:Al hacer clic en Depositar se debe agregar al saldo de la cuenta el monto ingresado.Referencia al Mtodo Deposito:

Asignar el monto para Deposito:

Aplicacin 02: Para explicar la creacin de clases usaremos un ejemplo sencillo basado en una clase principal "bicicleta". Para crear una clase debemos definir sus propiedades y sus mtodos, en este ejemplo se usan los siguientes trminos como propiedades de la clase bicicleta: Modelo, Precio, NumeroVelocidades y Velocidad:

Como mtodos de la clase se usan: Acelerar(km), Frenar() y ConsultarVelocidad().

Nuestra clase bicicleta consta de varias propiedades y mtodos, las palabras Private y Public definen la accesibilidad de las propiedades, funciones o subrutinas. La definicin de una propiedad o mtodo de tipo privado indica que slo podr ser usada dentro del cdigo de la misma clase, si cresemos un objeto de tipo bicicleta, las especificaciones de la clase no nos permitiran acceder a la propiedad velocidad para consultarla o modificarla, ya que est definida como privada. En cambio se pueden usar las subrutinas Acelerar() y Frenar() ya que son de tipo Public, y desde dentro de ellas se interacta con las propiedades privadas, con esto conseguimos encapsular el cdigo y hacer accesible solo aquello que queramos. Una vez est construida la clase ya se pueden instanciar objetos de la misma.

Cdigo completo:

Tras la creacin del objeto objBicicleta a partir de la clase, se pueden modificar los valores de las propiedades de tipo Public, y llamar a los mtodos de tipo Public. En el ejemplo se llama a los mtodos Acelerar(), pasndole el numero de km que queremos acelerar a travs del parmetro "km" que est definido en la subrutina. Luego se llama al mtodo Frenar() que decrementa en una unidad el valor de la propiedad Velocidad. Por ltimo se usa la funcin ConsultarVelocidad(), que retorna el valor de la propiedad Velocidad para introducirlo en la variable VelocidadActual.

PROPIEDADESUna propiedad en la clase se define, por norma general, mediante dos elementos: una variable de propiedad y un procedimiento de propiedad.La variable de propiedad, tal y como su nombre indica, es una variable con mbito privado a nivel de la clase, que se encarga de guardar el valor de la propiedad. Por su parte el procedimiento de propiedad o Property, es el encargado de actuar de puente entre el cdigo cliente y la variable de propiedad, realizando las operaciones de acceso y asignacin de valores a dicha variable. Por lo tanto, para crear una propiedad en nuestra clase, declararemos en primer lugar una variable Private, y en segundo lugar un procedimiento de tipo Property, que consta de dos bloques: Get, para devolver el valor de la variable de propiedad; y Set, para asignrselo.

Aplicacin 03: Se debe declarar una variable de propiedad para la propiedad Categora:

Se debe declarar el procedimiento Property para la propiedad Categora

Cuando declaramos un procedimiento Property, debemos, al igual que en una funcin, tipificarlo, ya que una de sus labores consiste en la devolucin de un valor. Para devolver el valor, en el bloque Get podemos utilizar la palabra clave Return, seguida del valor de retorno, o bien la sintaxis clsica de asignar el valor al nombre de la funcin. Nuestra recomendacin es el uso de Return por las ventajas explicadas en el tema del lenguaje. En cuanto a la asignacin de valor, el bloque Set utiliza un parmetro con el nombre Value, que contiene el valor para asignar a la propiedad.Al declarar un procedimiento de este tipo, el IDE de VS.NET crea automticamente los correspondientes bloques Get y Set, ahorrando ese trabajo al programador.A la hora de manipular una propiedad desde el cdigo cliente, la diferencia no ser notoria, como muestra el Cdigo siguiente. La nica forma de hacer ms patente el uso del procedimiento Property, consiste en ejecutar el programa utilizando el depurador; de esta manera comprobaremos como el flujo de la ejecucin salta a los bloques Get y Set al manejar la variable del objeto.

Dado que los procedimientos Property no son otra cosa que rutinas de cdigo, tambin se les denomina mtodos de acceso y asignacin en el ambiente de POO.

ENCAPSULACIN A TRAVS DE PROPIEDADESUna de las caractersticas de la OOP, la encapsulacin, establece que el cdigo de una clase debe permanecer, siempre que sea posible, protegido de modificaciones no controladas del exterior (cdigo cliente). Nuestra clase debe actuar como una especie de caja negra, que expone un interfaz para su uso, pero que no debe permitir el acceso a la implementacin de dicho interfaz.Supongamos que en nuestra clase Empleado en la Aplicacin 03, necesitamos crear un elemento para guardar el sueldo pagado, pero el importe del sueldo deber estar entre un rango de valores en funcin de la categora del empleado. Si la categora es 1, el sueldo estar entre 1 y 200, mientras que si la categora es 2, el sueldo podr llegar hasta 300.Si usamos la clase Empleado tal como hemos estudiado hasta ahora, no estar validado el sueldo segn la categora.

Para resolver el problema mediante el uso de propiedades, contamos con la ventaja de escribir cdigo de validacin en los correspondientes procedimientos Property; con ello encapsulamos el cdigo de la clase, mantenindolo a salvo de asignaciones incoherentes.

PROPIEDADES DE SLO LECTURA O SLO ESCRITURASe nos plantea ahora un nuevo caso para nuestra clase Empleado: debemos guardar el valor del cdigo de cuenta bancaria del empleado en el objeto, pero sin permitir que dicha informacin sea accesible desde el cdigo cliente. Igualmente y en funcin de los primeros dgitos de la cuenta bancaria, necesitamos mostrar el nombre de la entidad, pero sin permitir al cdigo cliente su modificacin, ya que esta va a ser siempre una operacin que debe calcular el cdigo de la clase.Utilizando campos de clase no es posible resolver esta situacin, ya que al ser de mbito pblico, permiten tanto la escritura como lectura de sus valores.Pero si empleamos propiedades, estas nos permiten la creacin de las denominadas propiedades de slo lectura o slo escritura, en las que utilizando las palabras clave ReadOnly y WriteOnly, conseguimos que a una determinada propiedad, slo podamos asignarle o recuperar su valor.Debido a esto, en una propiedad ReadOnly no podremos escribir el bloque Set, ya que no tendra sentido, puesto que no se va a utilizar. Lo mismo podemos aplicar para una propiedad WriteOnly, slo que en esta, el bloque que no podremos codificar ser Get. Igualmente obtendremos un error del compilador, si en el cdigo cliente intentamos asignar un valor a una propiedad ReadOnly, u obtener un valor de una propiedad WriteOnly.

Aplicacin 04:Crear la siguiente clase:

La clase sera utilizada desde el Botn Aceptar.

Al invocar el cdigo, tendramos:

2

Sesin 2

TRABAJANDO CON EVENTOS EN WINDOWS FORM

Al finalizar la Sesin usted ser capaz de:

Competencias Implementa mdulos, clases y componentes que permitan elaborar programas en n-capas.

Procedimentales:Disea e implementa aplicaciones usando los controles Windows forms y valida los inicios de sesin.

Competencias Actitudinales:Valora el uso de inicio de sesin en las aplicaciones Windows.

EVENTOS EN WINDOWS FORM

QU ES UN EVENTO?Un evento es un suceso o situacin, que acontece en una ubicacin de espacio y tiempo no predecible.Cuando una mquina deja de funcionar por una avera, o cuando una persona resbala y cae, estamos en ambos casos, ante ejemplos de eventos, ya que ocurren en momentos inesperados.Para que se desencadene un evento, se deben dar determinadas circunstancias, las cuales favorecen el que dicho evento se produzca.Cindonos al mbito de la programacin, un evento es, dentro de una aplicacin, una notificacin lanzada por un objeto, que podr ser respondida por aquellos otros objetos interesados en darle soporte.Antes de la llegada de los sistemas y lenguajes orientados a eventos, las aplicaciones ejecutaban su cdigo en un orden fijo, ya que estaban basadas en un modelo construido exclusivamente a base de procedimientos: se realizaban llamadas a las rutinas de cdigo en un orden predeterminado, y una vez terminada la ejecucin de tales rutinas, finalizaba la aplicacin.

Veamos el siguiente ejemplo:

Aplicacin 04:Supongamos que nos encargan desarrollar una clase llamada Empleado, entre cuyos miembros tenemos la propiedad Sueldo. Uno de los requerimientos respecto a esta propiedad es que su valor no debe ser superior a 1000; por ello, en su procedimiento Property, realizamos una validacin a tal efecto, emitiendo un mensaje cuando el sueldo que asignemos sea superior.

Una vez finalizado el desarrollo de la clase, la distribuimos a nuestro cliente. Posteriormente, un nuevo cliente nos requiere la clase, pero en esta ocasin, aunque necesita la validacin sobre la propiedadSueldo, no quiere que se muestre el mensaje al sobrepasar el sueldo asignado.Se nos plantea en este caso un problema, ya que si escribimos una nueva versin de la clase Empleado, tendremos el trabajo extra de mantener ambas. Para solucionarlo mediante una nica versin de la clase recurriremos a los eventos.

PROGRAMACIN BASADA EN EVENTOSLa aparicin de Windows trajo consigo un nuevo esquema en el desarrollo de aplicaciones. En un programa que se ejecute dentro de un sistema basado en eventos como pueda ser Windows, se estn produciendo constantemente eventos (sucesos), provocados por las acciones del usuario o por el propio sistema. Tan elevado es el nmero de eventos que se producen, que dar respuesta a todos, es decir, codificar todas aquellas situaciones que acontecen a lo largo de la ejecucin de un programa, es algo impensable.Por tal motivo, la tcnica seguida al escribir cdigo orientado a eventos, se basa en codificar slo los eventos que nos interese tratar, ya que para el resto, ser el propio sistema quien proporcione el comportamiento por defecto. En una aplicacin Windows tpica, todos los elementos que forman parte de la misma, es decir, el propio formulario y los controles contenidos en l, lanzan eventos en respuesta a las acciones del usuario. El ejemplo ms habitual: al pulsar un botn, se produce su evento clic; si queremos que el programa realice alguna accin al pulsar dicho botn, deberemos escribir cdigo en el procedimiento de evento asociado, para dar respuesta a tal suceso.

ESQUEMA BSICO DE UN SISTEMA ORIENTADO A EVENTOSUn sistema conducido por eventos basa su funcionamiento en dos pilares fundamentales: un emisor y un receptor de eventos.El primero genera y lanza el evento al sistema, mientras que el segundo, si est interesado en tratar el evento lanzado, lo captura y le da respuesta. Si un objeto receptor no necesita gestionar eventos, simplemente no lo obtiene.

EL EMISOR DE EVENTOSUn emisor de eventos, tambin denominado origen de eventos (event source o event sender), es un objeto capacitado para generar y lanzar eventos al sistema, que puedan ser recuperados por otros objetos preparados para realizar su tratamiento. Para que un objeto pueda desencadenar eventos, en su clase debemos realizar dos tareas: Declarar el propio evento usando la palabra clave Event, especificando si es necesario una lista de parmetros que acompaan al evento. Lanzar el evento mediante la palabra clave RaiseEvent, seguida del nombre del evento a disparar. Si hemos declarado el evento con parmetros, deberemos aadir los valores para cada uno de los parmetros en el mismo orden en el que los hemos declarado.

Situndonos pues ante el problema planteado por la clase Empleado en un apartado anterior, la solucin que proponemos consistir en generar desde la clase Empleado un evento cuando se produzca un fallo en la validacin del sueldo. De esta manera, el cdigo cliente que lo necesite, responder al evento; y el que no lo precise, har caso omiso del evento lanzado. En primer lugar, declaramos en la zona de declaraciones de la clase el evento LimiteSueldo, que ir acompaado de un parmetro que nos informar del importe errneo que se intentaba asignar a la propiedad.A continuacin, en la propiedad Sueldo, cuando detectemos que el sueldo sobrepasa el valor permitido, en lugar de mostrar el mensaje de Error, generaremos el evento LimiteSueldo, que podr ser recuperado por el cdigo cliente que haga uso de la clase, actuando como necesite en cada ocasin. Ntese que al mismo tiempo que lanzamos el evento, le pasamos el importe del sueldo que se intentaba asignar.

Agregamos la siguiente lnea, declarando el evento respectivo:

Modificamos la Propiedad Sueldo:

Con estas modificaciones sobre la clase Empleado, ya tenemos listo nuestro emisor de eventos. Queda ahora por completar la parte que captura los eventos lanzados por el emisor

EL RECEPTOR DE EVENTOSUn receptor de eventos, tambin denominado manipulador de eventos (event receiver o event handler), es aquella parte del cdigo cliente, que configuramos para que sea capaz de recibir los eventos generados por un objeto emisor. Para que ambos elementos, en este canal de comunicacin que es la transmisin de eventos puedan operar, es necesario conectarlos.

CONEXIN CON UN MANIPULADOR DE EVENTOSExisten dos medios para comunicar un evento con un manipulador de eventos: En tiempo de compilacin, realizando un enlace esttico entre la clase y el manipulador mediante las palabras clave WithEvents y Handles. Esta tcnica tiene la ventaja de que permite escribir un cdigo mucho ms legible, en cuanto a la manipulacin de eventos se refiere. En tiempo de ejecucin, realizando un enlace dinmico entre la clase y el manipulador mediante la palabra clave AddHandler. La ventaja en este caso, es que podemos asociar procedimientos manipuladores de evento dinmicamente durante el transcurso de la ejecucin del programa.

ENLACE ESTTICO DE EVENTOSEste es el modo ms sencillo para implementar la conexin entre un evento y un procedimiento manipulador de evento.En primer lugar, declaramos una variable del tipo de objeto cuyos eventos queremos capturar, en la zona de declaraciones del mdulo, clase, etc., utilizando la palabra clave WithEvents.

A continuacin, tenemos que escribir el procedimiento manipulador, que ser invocado cada vez que se dispare el evento. Dicho procedimiento debe ser de tipo Sub, ya que un evento no puede devolver valores, por lo que no podremos utilizar un Function; tambin debemos finalizar su declaracin con la palabra clave Handles, seguida del nombre de la variable del objeto que hemos declarado en la zona de declaraciones, y el nombre del evento que el procedimiento va a tratar. Para nuestra Aplicacin, el procedimiento Emple_LimiteSueldo( ), ser llamado cada vez que se produzca el evento LimiteSueldo en el objeto Empleado.

El nombre utilizado para el procedimiento puede ser cualquiera, aunque en este caso hemos empleado la convencin NombreObjeto_NombreEvento simplemente para facilitar la lectura del cdigo, pero podramos haber utilizado:

NOTA:Para facilitar la creacin de los procedimientos manipuladores de evento, consiste en abrir la lista Nombre de clase y seleccionar el nombre de la variable que hemos declarado WithEvents:

Luego pasamos a la lista Nombre de mtodo, y all elegimos el nombre del evento que vamos a programar:

Esto nos crea el procedimiento manipulador de evento vaco, en base a una convencin de nombres predefinida en el IDE.

Como hemos escrito el manipulador de evento para el objeto Empleado en un mdulo, vamos ahora a probar la aplicacin, instanciando en el mismo, un objeto de esta clase. Asignaremos en primer lugar, un valor correcto a la propiedad Sueldo, y a continuacin un valor que provocar el evento en la clase. Se Recomienda ejecutar el cdigo lnea a lnea con el depurador, para observar el efecto cuando se produzca el evento.

CAJAS DE DILOGO EN APLICACIONES WINDOWS Aplicacin 05:

MsgBoxMuestra un mensaje al usuario, acompaado del Botn Aceptar.

InputBoxSolicita ingreso de datos al usuario.

MessageBoxMuestra un mensaje al usuario, y espera la respuesta del usuario para poder ejecutar alguna accin.

VALIDAR ENTRADAS DE USUARIO

Aplicacin 06:

Programar el evento Validating:

Cdigo:

3Sesin 3

INTRODUCCIN A ADO .NET

Al finalizar la Sesin usted ser capaz de:

Competencias:Conoce conceptos avanzados de programacin con Visual Basic .NET.Desarrolla programas con controles de enlace a datos.

Procedimentales:Identifica la arquitectura ADO .NET y reconoce los objetos de conexin a base de datos.Disea e implementa la conexin de sus formularios a la base de datos

Actitudinales:Comprende la arquitectura ADO .NET y la necesidad de utilizar objetos de conexin a datos.

ACCESS DATA OBJECT EN VISUAL BASIC.NET

TERMINOLOGA DE BASE DE DATOSPara trabajar con bases de datos, es importante conocer cierta terminologa bsica. Los siguientes trminos se definen en el contexto de las bases de datos relacionales.

Base de datos relacional: Una base de datos relacional es un tipo de base de datos que almacena informacin en tablas. Las bases de datos relacionales utilizan valores coincidentes de dos tablas para relacionar datos en una tabla con datos de otra. En una base de datos relacional, normalmente almacenamos un tipo especfico de datos slo una vez.

Tabla: Una tabla es un objeto base de datos que almacena datos en registros (filas) y campos (columnas). Normalmente, los datos tienen relacin con una categora concreta de cosas, como empleados o pedidos.

Registro: Un registro es una coleccin de datos sobre una persona, un lugar, un evento o algn otro elemento. Los registros son los equivalentes lgicos de filas en una tabla. Por ejemplo, un registro en la tabla Empleados debera tener informacin sobre un empleado particular.

Campo: Un registro est compuesto de varios campos. Cada campo de un registro contiene una pieza de informacin sobre el registro. Por ejemplo, el registro de un Empleado tiene campos para el ID del empleado, Apellido, Nombre, etc.

Clave principal: Una clave principal identifica de modo nico cada fila de una tabla. La clave principal es un campo o una combinacin de campos cuyo valor es nico para cada fila (o registro) de la tabla. Por ejemplo, el campo Employee ID es la clave primaria para la tabla Empleados. No puede haber dos empleados con el mismo ID.

Clave fornea: Una clave fornea es uno o ms campos (columnas) de una tabla que hacen referencia al campo o campos de la clave principal de otra tabla. Una clave fornea indica cmo estn relacionadas las tablas. Relacin: Una relacin es una asociacin establecida entre campos comunes (columnas) de dos tablas. Una relacin puede ser de uno a uno, de uno a muchos, o de muchos a muchos. Las relaciones permiten que los resultados de las consultas incluyan datos de varias tablas. Una relacin uno a uno entre una tabla Clientes y una tabla Pedidos permitira que una consulta devolviera todos los pedidos de un determinado cliente.

Acceso de slo lectura: El acceso de slo lectura a una base de datos significa que podemos recuperar (leer) los datos pero no podemos modificarlos (escribir). Un archivo de slo lectura o un documento puede visualizarse o imprimirse pero no puede modificarse de ningn modo.

Acceso de lectura/escritura: El acceso de lectura/escritura a una base de datos significa que podemos recuperar (leer) los datos y modificarlos (escribir).

Programacin De Base De Datos:

Cuando desarrollamos aplicaciones, tenemos diferentes requerimientos para trabajar con datos. En algunos casos, simplemente desearemos mostrar datos en un formulario. En otros casos, es posible que necesitemos crear una forma de compartir informacin con otra organizacin. Cuando trabajamos con datos, utilizamos varios objetos para recuperar y modificar informacin de una base de datos. En general, cuando trabajamos con bases de datos en ADO.NET, realizamos las siguientes tareas: Conectar a una base de datos. Solicitar datos especficos. Especificar los datos que se desean recuperar y si se necesita acceso de solo lectura o de lectura/escritura a los datos. Recuperar y mostrar los datos. Cerrar la conexin (en algunas aplicaciones). Modificar los datos recuperados (si se dispone de acceso de lectura/escritura). Volver a abrir la conexin (en algunas aplicaciones). Transmitir a la base de datos los cambios realizados en los datos. Cerrar la conexin.

CONCEPTO ADO .NET es la nueva versin del modelo de objetos ADO (ActiveX Data Objects), es decir, la estrategia que ofrece Microsoft para el acceso a datos. ADO .NET ha sido ampliado para cubrir todas las necesidades que ADO no ofreca, y est diseado para trabajar con conjuntos de datos desconectados, lo que permite reducir el trfico de red. ADO .NET utiliza XML como formato universal de transmisin de los datos.ADO .NET posee una serie de objetos que son los mismos que aparecen en la versin anterior de ADO, como pueden ser el objeto Connection o Command, e introduce nuevos objetos tales como el objeto DataReader, DataSet o DataView. ADO .NET se puede definir como: Un conjunto de interfaces, clases, estructuras y enumeraciones que permiten el acceso a datos desde la plataforma .NET de Microsoft La evolucin lgica del API ADO tradicional de Microsoft Permite un modo de acceso desconectado a los datos, los cuales pueden provenir de mltiples fuentes de datos, de diferente arquitectura de almacenamiento. Soporta un completo modelo de programacin y adaptacin, basado en el estndar XML

ARQUITECTURA DE ADO .NET

ENTORNO CONECTADO O DESCONECTADOMicrosoft a puesto en su lista de prioridades para ADO.NET el que cada vez los desarrolladores puedan escribir aplicaciones ms y ms escalables, y para hacerlo debemos reducir al mximo el nmero de conexiones abiertas en la base de datos. No es ningn secreto que en ADO el mejor rendimiento se obtena manteniendo una conexin abierta a la fuente de datos, sin embargo, en ADO.NET, gracias a los DataSets es posible tomar una parte de los datos y mantenerlos en memoria en forma relacional, tal cual son almacenados. Esto permite brindarle datos a la aplicacin cliente sin sacrificar el rendimiento al mantener conexiones abiertas a la base de datos.

DATASETEl API de ADO .NET proporciona una superclase, DataSet, que encapsula lo que sera la base de datos a un nivel lgico: tablas, vistas, relaciones, integridad entre todos ellos, etc., pero siempre con independencia del tipo de fabricante que la dise. Aqu se tiene el mejor concepto de datos desconectados: una copia en el cliente de la arquitectura de la base de datos, basada en un esquema XML que la independiza del fabricante, proporcionando al desarrollador la libertad de trabajo independiente de la plataforma. Un DataSet es una cach de registros recuperados de una base de datos que acta como un sistema de almacenamiento virtual, y que contiene una o ms tablas basadas en las tablas reales de la base de datos. Adicionalmente, almacena las relaciones y reglas de integridad existentes entre ellas para garantizar la estabilidad e integridad de la informacin de la base de datos. Muy importante es recalcar, que los DataSets son almacenes pasivos de datos, esto es, no se ven alterados ante cambios subyacentes de la base de datos. Es necesario recargarlos siempre que queramos estar al da, en cuanto a datos se refiere.Los DataSets son un concepto realmente revolucionario y si precedentes. Son, bsicamente, representaciones en memoria de algo ms que una simple tabla, es posible verlo como una porcin de base de datos en la memoria de la PC del cliente, el cual puede contener tablas, relaciones e incluso hasta constraints (primary keys, foreign keys, uniques). La idea detrs de esto es que la aplicacin cuente con todos los datos necesarios para poder trabajar, y por ninguna razn requiera conectarse a la base de datos, salvo para cargar o actualizar los cambios generaron en el DataSetsLa Figura siguiente muestra una representacin de este tipo de objeto.

COMPONENTES DE ADO.NETLos componentes de ADO.NET han sido diseados para separar el acceso a datos de la manipulacin de los datos. Existen dos componentes principales de ADO.NET que lo cumplen: el componente DataSet y los Proveedores de datos .NET. Los proveedores de datos .NET constan de un conjunto de componentes que incluyen los objetos Connection, Command, DataReader y DataAdapter. Los componentes del proveedor de datos .NET estn diseados explcitamente para la manipulacin de datos desconectados. ADO.NET y Windows Forms proporcionan componentes para el consumidor de datos que podemos utilizar para mostrar nuestros datos. Incluyen controles como DataGrid, que pueden ser enlazados a datos, y propiedades de enlace a datos en la mayora de controles estndares de Windows, como los controles TextBox, Label, ComboBox y ListBox. El .NET Framework incluye numerosos proveedores de datos .NET, incluyendo el proveedor de datos de .NET para SQL Server, el proveedor de datos de .NET OLE DB para SQL, y el proveedor OLE DB para Microsoft Jet. Si necesitamos un proveedor personalizado, podemos escribir proveedores de datos .NET para cualquier fuente de datos.

OBJETOS COMUNES DE ADO.NETLos proveedores de datos de .NET y el espacio de nombres System.Data proporcionan los objetos ADO.NET que utilizaremos en un escenario desconectado.

ESPACIOS DE NOMBRES Y CLASES EN ADO .NETLos distintos espacios de nombres que constituyen la tecnologa ADO .NET: System.Data: Clases genricas de datos de ADO .NET. Integra la gran mayora de clases que habilitan el acceso a los datos de la arquitectura .NET. System.Data.SqlClient: Clases del proveedor de datos de SQL Server. Permite el acceso a proveedores SQL Server en su versin 7.0 y superior. System.Data.OleDb: Clases del proveedor de datos de OleDB. Permite el acceso a proveedores .NET que trabajan directamente contra controladores basados en los ActiveX de Microsoft. System.Data.SqlTypes: Definicin de los tipos de datos de SQL Server. Proporciona la encapsulacin en clases de todos los tipos de datos nativos de SQL Server y sus funciones de manejo de errores, ajuste y conversin de tipos, etc. System.Data.Common: Clases base, reutilizables de ADO .NET. Proporciona la coleccin de clases necesarias para acceder a una fuente de datos (como por ejemplo una Base de Datos). System.Data.Internal: Integra el conjunto de clases internas de las que se componen los proveedores de datos.

Dentro del espacio de nombres System.Data encontramos las siguientes clases compartidas, que constituyen el eje central de ADO .NET. DataSet: Almacn de datos por excelencia en ADO .NET. Representa una base de datos desconectada del proveedor de datos. Almacena tablas y sus relaciones. DataTable: Un contenedor de datos. Estructurado como un conjunto de filas (DataRow) y columnas (DataColumn). DataRow: Registro que almacena n valores. Representacin en ADO .NET de una fila/tupla de una tabla de la base de datos. DataColumn: Contiene la definicin de una columna. Metadatos y datos asociados a su dominio. DataRelation: Enlace entre dos o ms columnas iguales de dos o mas tablas. Constraint: Reglas de validacin de las columnas de una tabla. DataColumnMapping: Vnculo lgico existente entre una columna de un objeto del DataSet y la columna fsica de la tabla de la base de datos. DataTableMapping: Vnculo lgico existente entre una tabla del DataSet y la tabla fsica de la base de datos.

OBJETOS ADO. NETADO.NET proporciona un modelo de objetos comn para proveedores de datos de .NET. La siguiente tabla describe los principales objetos ADO.NET que utilizaremos en un escenario desconectado.

OBJETODESCRIPCIN

ConnectionEstablece y gestiona una conexin a una fuente de datos determinado. Por ejemplo, la clase sqlConnection se conecta a fuentes de datos SQL.

CommandEjecuta un comando en una fuente de datos. Por ejemplo, la clase sqlCommand ejecutar instrucciones SQL.

DataSetDiseado para acceder a datos con independencia de la fuente de datos. En consecuencia, podemos utilizarlo con varias y diferentes fuentes de datos, con datos XML, o para gestionar datos locales a la aplicacin. El objeto DataSet contiene una coleccin de uno o ms objetos DataTable formados por filas y columnas de datos, adems de clave principal, clave fornea, restricciones e informacin de la relacin sobre los datos en los objetos DataTable.

DataReaderProporciona un flujo de datos eficaz, slo-reenvo y de slo-lectura desde una fuente de datos.

DataAdapterUtiliza los objetos Connection, Command y DataReader implcitamente para poblar un objeto DataSet y para actualizar la fuente de datos central con los cambios efectuados en el DataSet.

PROVEEDORES DE DATOS DE .NETUn proveedor de datos de .Net sirve para conectarse a una base de datos, ejecutar comandos y recuperar resultados. Esos resultados se procesan directamente o se colocan en un DataSet de ADO.NET con el fin de exponerlos al usuario para un propsito especifico, junto con datos de varios orgenes o de utilizarlos de forma remota entre niveles. El diseo del proveedor de datos de .Net hace que sea ligero, de manera que cree un nivel mnimo entre el origen de datos y su cdigo, con lo que aumenta el rendimiento sin sacrificar la funcionalidad.La siguiente figura muestra los componentes de cada proveedor de datos .Net

Base de DatosConnectionConnectionCommandDataReaderDataAdapterProveedor de datos .Net

4Sesin 4

CONEXIN CON FUENTES DE DATOS

Al finalizar la Sesin usted ser capaz de:

Competencias:Conoce conceptos avanzados de programacin con Visual Basic .NET.Desarrolla programas con controles de enlace a datos.

Procedimentales:Implementa la conexin de sus formularios a la base de datos.Analiza e identifica la gestin de excepciones de conexin, con la estructura TRY CATCH.

Actitudinales:Valora la importancia de la conexin de los formularios a la base de datos.

CONEXIN CON FUENTES DE DATOS

CREACIN DE CONEXIONES Antes de trabajar con datos, es necesario establecer primero una conexin con una fuente de datos. Para conectar con una fuente de datos, escogemos el tipo de conexin, especificamos la fuente de datos, y abrimos la conexin a la fuente de datos. Cuando acabamos de trabajar con los datos, cerraremos la conexin.

Escoger el tipo de conexin:Podemos utilizar el objeto Connection para conectar a una fuente de datos especfica. Podemos utilizar SqlConnection para conectar a bases de datos SQL Server u OleDbConnection para conectar a otros tipos de fuentes de datos.

Especificar la fuente de datos:Despus de escoger el tipo de conexin, utilizamos una propiedad ConnectionString para especificar el proveedor de datos, la fuente de datos, y dems informacin utilizada para establecer la conexin. El formato de estas cadenas difiere ligeramente entre el espacio de nombres SqlClient y el espacio de nombres OleDb.

Abrir y cerrar la conexin de datos:El objeto Connection soporta un mtodo Open que abre la conexin despus de que se hayan establecido las propiedades de la conexin, y un mtodo Close que cierra la conexin a la base de datos despus de que todas las transacciones se hayan liberado.

Probar ConexinEl siguiente ejemplo muestra cmo utilizar un objeto Connection, la propiedad ConnectionString y el mtodo Open para conectarnos a una base de datos SQL Server utilizando el Data Provider .NET de SQL Server.NOTA: Para efectos del ejemplo, crearemos en SQL una Base de Datos llamada Negocio.

Aplicacin 07:En Vb .NET, disearemos el siguiente formulario:

Agregar un Mdulo llamado ModDeclaraciones para las variables y procedimientos necesarios.

La Cadena de Conexin depende del modo de autenticacin del SQL. Si el SQL est con autenticacin SQL Server, la Cadena est formada por: Data Source: Servidor de Base de Datos del SQL. Initial Catalog: Nombre de la Base de Datos en SQL (Negocio). User Id: Inicio de Sesin que se usar en SQL. Password: Clave del Inicio de Sesin.

Aplicacin 07.1Usando Base de Datos Access:

Declarar las Variables:

Declarar la cadena de Conexin:

Navegacin entre registros:

Primer Registro:

Registro Anterior:

Registro Siguiente:

ltimo Registro:

Nuevo Registro:

Guardar Registro:

Cancelar ingreso de datos:

Eliminar registro

LAS CLASES COMMANDEstablecida una conexin con un almacn de datos, la siguiente operacin lgica consiste en enviarle sentencias para realizar los distintos tipos de operaciones que habitualmente realizamos con los datos. Para realizar las operaciones con datos utilizaremos Las clases Command de ADO .NET.

SqlCommand y OleDbCommand, son muy similares al objeto Command existente en ADO. El objeto Command nos va a permitir ejecutar una sentencia SQL o un procedimiento almacenado sobre la Base de Datos a la que estamos accediendo, para nuestro caso: Negocio.

A travs de un objeto Command tambin podremos obtener un conjunto de resultados del almacn de datos. En este caso, los resultados se pasarn a otros objetos de ADO .NET, como DataReader o DataAdapter; estos dos objetos los comentaremos ms adelante.

Un objeto Command se crea a crear a partir de una conexin existente, y contiene una sentencia SQL a ejecutarse sobre las tablas de la conexion.

Entre las propiedades que ofrecen los objetos SqlCommand y OleDbCommand, tenemos:

CommandText: Contiene una cadena de texto que va a indicar la sentencia SQL o procedimiento almacenado que se va a ejecutar sobre el origen de los datos.

CommandTimeout: Tiempo de espera en segundos que se va a aplicar a la ejecucin de un objeto Command. Su valor por defecto es de 30 segundos.

CommandType: Indica el tipo de comando que se va a ejecutar contra el almacn de datos, es decir, indica cmo se debe interpretar el valor de la propiedad CommadText. Puede tener los siguientes valores: StoredProcedure: para indicar que se trata de un procedimiento almacenado. TableDirect: se trata de obtener una tabla por su nombre (nicamente aplicable al objeto OleDbCommand). Text: que indica que es una sentencia SQL. EL valor por defecto es Text.

Connection: Devuelve el objeto SqlConnection u OleDbConnection utilizado para ejecutar el objeto Command correspondiente. Parameters: Coleccin de parmetros que se pueden utilizar para ejecutar el objeto Command, esta coleccin se utiliza cuando deseamos ejecutar sentencias SQL que hacen uso de parmetros, esta propiedad devuelve un objeto de la clase SqlParameterCollection o un objeto de la clase OleDbParameterCollection. Estas colecciones contendrn objetos de la clase SqlParamter y OleDbParameter, respectivamente, para representar a cada uno de los parmetros utilizados. Estos parmetros tambin son utilizados para ejecutar procedimientos almacenados.

MTODOS DE LAS CLASES COMMAND ExecuteReader: Ejecuta la sentencia SQL definida en la propiedad CommandText contra la conexin definida en la propiedad connection. En este caso, la sentencia s devolver un conjunto de registros. El resultado de la ejecucin de este ser un objeto de la clase SqldDataReader, que nos va a permitir leer y recorrer los resultados devueltos por la ejecucin del objeto command correspondiente.

ExecuteNonQuery: Ejecuta la sentencia SQL definida en la propiedad CommandText contra la conexin definida en la propiedad connection. La sentencia a ejecutar debe ser de un tipo que no devuelva un conjunto de registros, por ejemplo Insert, Update, Delete.

ExecuteReader: Ejecuta la sentencia SQL definida en la propiedad ComandText contra la conexin definida en la propiedad Connection. En este caso, la sentencia s devolver un conjunto de registros. El resultado de la ejecucin de este ser un objeto de la clase SqlDataReader/ OleDbDataReader, que nos va a permitir leer y recorrer los resultados devueltos por la ejecucin del objeto Command correspondiente.

ExecuteScalar: Este mtodo se utiliza cuando deseamos obtener la primera columna de la primera fila del conjunto de registros, el resto de datos no se tendrn en cuenta. La utilizacin de este mtodo tiene sentido cuando estamos ejecutando una sentencia SQL del tipo Select Count (*). Este mtodo devuelve un objeto de la clase genrica Object.

Prepare: Este mtodo construye una versin compilada del objeto Command dentro del almacn de datos.

APLICACIONES DE LAS CLASES COMMAND Para las aplicaciones siguientes crearemos en SQL usaremos la Base de Datos llamada Negocio creada para la aplicacin anterior, la cual debe contener la siguiente estructura de tablas.

Cdigo:

Diagrama Final:

INSERTAR DATOS USANDO SQLCOMMANDAplicacin 08: Insertar Datos en la Tabla Cliente, usando el objeto SQLCommand. Utilizamos procedimientos y variables pblicas, las cuales las declararemos en el Mdulo llamado ModDeclaraciones. Declarar las variables para conexin:

Declarar el procedimiento para conectar a la Base de Datos.

Como vamos a ejecutar una sentencia que no produce un conjunto de resultados, emplearemos el mtodo ExecuteNonQuery( ). La conexin slo permanece abierta en el momento de ejecutar el comando; esta accin es recomendable para todas las operaciones con datos: mantener abierta la conexin el menor tiempo posible. Disear el siguiente formulario en la VB .NET.

En el Mdulo ModDeclaraciones, declarar las siguientes variables:

En el Mdulo ModDeclaraciones, declarar el siguiente procedimiento:

Al Dar clic en el Botn grabar, capturar los datos de los clientes en sus respectivas variables, asignar la sentencia SQL, Abrir la Conexin y ejecutar.

Ejecutar:

Prctica Clase:Programar el ingreso de Datos para las Tablas Vendedor y Producto.

RECUPERAR DATOS USANDO DATAREADERSEl beneficio de utilizar un DataSet es que nos ofrece una vista desconectada de la base de datos. Para aplicaciones de larga ejecucin, es a menudo el mejor mtodo. Sin embargo, los desarrolladores de aplicaciones con .NET generalmente realizan operaciones cortas y sencillas con cada peticin, como visualizar datos. Para estas breves operaciones, generalmente no es eficiente mantener un objeto DataSet. En tales casos, podemos utilizar un DataReader.

Crear un DATAREADERPara minimizar la dificultad de tales situaciones, el DataReader ha sido diseado para producir un flujo slo-lectura, slo-reenvo que se devuelve desde la base de datos. nicamente un registro a la vez est siempre en memoria. Hay dos clases DataReader: SqlDataReader y OleDbDataReader. Un DataReader mantiene la conexin abierta hasta que se cierra el DataReader. Para utilizar un SqlDataReader, declarar un SqlCommand en vez de un SqlDataAdapter. El SqlCommand expone un mtodo ExecuteReader que toma un SqlDataReader como parmetro. Observar que cuando utilizamos un SQLCommand, debemos explcitamente abrir y cerrar SqlConnection. Sintaxis de parametros que se le pasa al SqlCommand (consulta, conexin).

Gestin de errores con un DATAREADER Cuando utilizamos conexiones con el objeto DataReader, siempre deberamos utilizar un bloque Try/Catch para garantizar que, si se lanza alguna excepcin, las conexiones se cerrarn.

Leer datos de un DATAREADERUna vez que hemos invocado el mtodo ExecuteReader del objeto Command, accedemos a un registro en el DataReader invocando el mtodo Read. La posicin inicial en el DataReader se sita antes del primer registro; por tanto, debemos invocar a Read antes de acceder a cualquier dato. Cuando no hay ms registros disponibles, el mtodo Read devuelve False.

Recorrer todos los registros Para recorrer todos los registros y mostrarlos por la consola en un DataReader, podemos utilizar un bucle While.

Cerrar el DATAREADER Mientras que el DataReader est en uso, la conexin asociada est ocupada sirviendo el DataReader. Por tanto, debemos llamar a Close para cerrar el DataReader cuando hayamos acabado de utilizarlo.

Aplicacin 09:Usando la base de datos de la aplicacin anterior, mostrar de los datos de un cliente segn el cdigo ingresado.

En el Mdulo ModDeclaraciones, declarar las siguientes variables:

Al hacer clic en el Botn Buscar, capturar el cdigo del Cliente que se va a buscar, asignar la sentencia a usarse y mostrar los datos en las Cajas de Texto respectivas.

Para mostrar todos los registros de una tabla, se usa el siguiente cdigo.

Aplicacin 10:Usando la base de datos de la aplicacin anterior, mostrar de los datos de todos los clientes en un ListView.

En el Mdulo ModDeclaraciones, declarar el ListViewItem.

Al hacer clic en Mostrar Clientes:

Aplicacin 11:Usando la base de datos de la aplicacin anterior, mostrar de los datos de un cliente, modificarlos y volver a grabarlos.

Debemos crear en el Mdulo ModDeclaraciones, los procedimientos para Borrar, Activar y Desactivar las Cajas de texto.

Las cajas de texto se muestran desactivadas, excepto el Cdigo.

Primero se tiene que buscar el cliente de quien se desean modificar sus datos.

Al dar clic en Modificar, se activan las cajas de texto, desactivndose el Cdigo.

Se ingresan los nuevos datos y se da Clic en Actualizar y los datos deben grabarse en la Tabla respectiva.

Prctica Clase:Programar la bsqueda y actualizacin de datos para las Tablas Vendedor y Producto.

Aplicacin 12:Usando la base de datos de la aplicacin anterior, mostrar de los datos de un cliente, eliminarlo de la Tabla.

Primero se tiene que buscar el cliente de quien se desean modificar sus datos.

Una vez encontrado el cliente, sus datos sern eliminados de la tabla.

Los datos del cliente sern eliminados de la tabla.

Prctica Clase:Programar la bsqueda y eliminacin de Datos para las Tablas Vendedor y Producto.

5Sesin 5

ENLACE A DATOS EN WINDOWS FORM I

Al finalizar la Sesin usted ser capaz de:

Competencias:Conoce conceptos avanzados de programacin con Visual Basic .NET.Implementa mdulos, clases y componentes que permitan elaborar programas en n-capas.Desarrolla programas con controles de enlace a datos.Disea informes para la impresin de datos desde una aplicacin Windows.Genera proyectos de instalacin de aplicaciones desarrolladas. Instala y desstanla aplicaciones

Procedimentales:Utiliza los controles de enlace a datos conectados y/o desconectados y ejecuta las sentencias de cdigo.

Actitudinales:Reconoce las propiedades de los controles de enlace a datos y valora la importancia de su uso.

OBJETOS DE ENLACE DE DATOS

OBJETO DATAADAPTER Como hemos comentado anteriormente, el objeto sqlDataAdapter va a desempear el papel de puente entre el origen de datos y el DataSet, permitindonos cargar el DataSet con la informacin de la fuente de datos y posteriormente, actualizar el origen de datos con la informacin del DataSet.La Clase DataAdapter dispone de cuatro propiedades, que nos van a permitir asignar a cada una, un objeto Command (sqlCommand) con las operaciones estndar de manipulacin de datos. Estas propiedades son las siguientes.PROPIEDADDESCRIPCIN

InsertCommandObjeto de la clase Command, que se va a utilizar para realizar una insercin de datos.

SelectCommandObjeto de la Clase Command que se va a utilizar para ejecutar una sentencia Select de SQL.

UpdateCommandObjeto de la Clase Command que se va a utilizar para realizar una modificacin de los datos

DeleteCommandObjeto de la Clase Command que se va a utilizar para realizar una eliminacin de datos.

Tipos de adaptadores de datosVisual Studio incorpora dos adaptadores de datos principales para utilizarse con bases de datos: OleDbDataAdapter es apropiado para utilizarlo con cualquier fuente de datos que proporcione un proveedor OLE DB.

SqlDataAdapter es especfico a SQL Server. Como no funciona a travs de una capa OLE DB, es ms rpido que OleDbDataAdapter. Sin embargo, slo puede ser utilizado con SQL Server versin 7.0 o superior.

Creacin del DATAADAPTERPodemos instanciar el DataAdapter utilizando la palabra clave Dim y pasando una cadena de consulta y un objeto Connection como parmetros. El DataAdapter verificar si la Connection est abierta, y si no lo est, la abrir para nosotros y la cerrar cuando nuestra llamada al mtodo se complete. Esta aproximacin es til si ya hemos establecido las propiedades de un objeto Connection en nuestra aplicacin y slo necesitamos abrir la conexin para poblar las tablas de datos.

OBJETO DATASET Este objeto pertenece a la clase desconectada de ADO.NET y se encuentra definida en el espacio de nombres System.Data. Las clases desconectadas se muestran en la siguiente tabla.CLASEDESCRIPCIN

DATASETClase desconectada de datos que almacena tablas (y sus columnas), que pueden estar relacionadas entre s y sobre las cuales se puede aplicar diferentes vistas.

DATATABLEClase que define la estructura de datos bsica de un SGBDR. Se compone de filas y columnas en las que almacena la informacin y sus esquemas.

DATACOLUMNRepresenta una unidad de informacin dentro de la tabla. Almacena su descripcin (Metadatos) y su informacin (Dato).

DATAROWAgrupacin de un conjunto de columnas con informacin. Una tabla representa a su vez una agrupacin de filas.

DATARELATIONEstablece el vnculo que existe entre dos o ms tablas a partir de un campo clave. Esto permitir navegar por la informacin de las tablas relacionadas de manera transparente

DATAVIEWProporciona la habilidad de acceder a los datos de una tabla desde diferentes puntos de vistas, ordenacin y filtrado de datos.

La estructura de un DataSet se muestra en la siguiente figura.

ConstraintCollectionDataRelationCollectionDataTableCollectionDataTableDataColumnCollectionDataRowCollectionDataSet

Cada tabla contenida dentro de un objeto DataSet se encuentra disponible a travs de su propiedad Tables. Que es una coleccin de objetos system.data.datatable.

Cada objeto DataTable contiene una coleccin de objetos DataRow que representan las filas de la tabla. Cada objeto DataRow, es decir, cada fila posee una coleccin de objetos DataColumn, que representa cada una de las columnas de la fila actual.

Cada objeto DataTable dispone de una propiedad llamada DefaultView, que devuelve un objeto de la clase DataView, el cual nos ofrece una vista de los datos de la tabla para que podamos recorrer los datos, filtrarlos, ordenarlos, etc.Para poder crear e inicializar las tablas de dataSet debemos hacer uso del objeto DataAdapter. Para SQL el objeto es sqlDataAdapter.

Llenar un DATASETUn dataset es un contenedor, de modo que necesitamos poblarlo con datos. Podemos poblar un dataset de varios modos: Invocar el mtodo Fill de un adaptador de datos. Llamando este mtodo hace que el adaptador ejecute una sentencia SQL o un procedimiento almacenado y pueble una tabla en el dataset con los resultados. Al objeto DataAdapter le pasamos como parmetro una cadena que representa la consulta que se va a ejecutar, y que va a rellenar de datos el DataSet. Del objeto DataAdapter utilizamos el mtodo Fill(), que posee dos parmetros; el primero es el Data Set a rellenar de informacin; y el segundo, una cadena con el nombre que tendr la tabla creada dentro del DataSet, producto de la ejecucin de la consulta.

Poblar tablas manualmente en el dataset creando DataRows y aadirlas a la coleccin Rows de la tabla.

Aplicacin 13:Consulta en un ListBoxEl siguiente cdigo fuente se muestra un sencillo ejemplo de creacin de un objeto DataSet que llenaremos con un DataAdapter. Una vez listo el DataSet, recorreremos la tabla que contiene y mostraremos valores de sus columnas en un ListBox.

En el ModDeclaraciones, agregar una variable para el SQLDataAdapter.

En el ModDeclaraciones, agregar una variable para el SQLDataAdapter.

En el ModDeclaraciones, agregar una variable para el DataTable.

En el ModDeclaraciones, agregar una variable para el DataRow.

Al hacer clic en Mostrar Clientes, se deben mostrar todos los datos de la tabla Cliente en el ListBox.

En el ejemplo solo se estn mostrando los Campos Nombre y Apellido:

Prctica Clase:Programar la bsqueda de Datos para las Tablas Vendedor y Producto.

Aplicacin 14:Consulta en un ListViewUsaremos la misma lgica de la aplicacin anterior, y mostraremos todos los datos de la Tabla Cliente en un ListView.

Al hacer clic en Mostrar Clientes:

El resultado sera:

Prctica Clase:Programar la recuperacin de Datos para las Tablas Vendedor y Producto.

Aplicacin 15:Mostrar los Datos en TextBox y permitir recorrer todos los registros uno a uno. Los TextBox deben iniciar desactivados.

Al Cargar el Formulario se deben mostrar los datos del primer cliente.

Programar los Botones Primero, Siguiente, Anterior y ltimo.

En la aplicacin se estn agrupando los botones de movimiento en un procedimiento comn y a travs del parmetro sender se controla al botn sobre el cual se hace click usando en todo momento la variable reg, para saber en todo momento la fila sobre la cual nos encontramos.

Prctica Clase:Programar la Navegacin de Datos para las Tablas Vendedor y Producto.

USO DE DATASET FRENTE A DATAREADEREl procedimiento general para acceder a bases de datos vara, dependiendo de si utilizamos un DataSet o un DataReader:

USANDO DATASETSUSANDO DATAREADERS

1. Conectar a la base de datos utilizando SqlConnection u OleDbConnection.1. Conectar a la base de datos utilizando SqlConnection u OleDbConnection.

2. Almacenar la consulta de la base de datos en un SqlDataAdapter o en un OleDbDataAdapter.2. Abrir la conexin con el mtodo Open.

3. Poblar un DataSet desde el DataAdapter utilizando Fill.3. Almacenar la consulta de la base de datos en objetos SqlCommand u OleDbCommand.

4. Crear una nueva DataView para la tabla deseada.4. Poblar un DataReader desde el Command utilizando el mtodo ExecuteReader.

5. Enlazar un control servidor, como el DataGrid al DataView.5. Invocar los mtodos Read y Get del DataReader para leer datos.

1. 6. Visualizar manualmente los datos.

2. 7. Cerrar el DataReader y la conexin.

EXPLORADOR DE SERVIDORES

Podemos utilizar el Explorador de servidores para visualizar y manipular enlaces a datos, conexiones de bases de datos, y recursos del sistema en cualquier servidor para el que tengamos acceso en red. Utilizando el Explorador de servidores, podemos: Crear y abrir conexiones de datos a Microsoft Access, a servidores ejecutando Microsoft SQL Server y a otras bases de datos. Iniciar sesin en servidores y mostrar sus bases de datos, tablas, campos y sus datos sin abandonar el entorno de desarrollo ni utilizar el software de la base de datos. Visualizar los servicios del sistema, incluyendo el registro de sucesos, colas de mensajes, contadores de rendimiento y otros servicios del sistema. Visualizar informacin sobre los Servicios Web XML disponibles y los mtodos y esquemas que proporcionan. Almacenar proyectos y referencias a bases de datos. Crear componentes de datos que hagan referencia al recurso de datos o monitorizar su actividad arrastrando nodos desde el Explorador de servidores a nuestros proyectos de Visual Studio .NET. Interactuar con recursos de datos programando los componentes de datos creados en nuestros proyectos de Visual Studio .NET.

Podemos abrir el Explorador de servidores en cualquier momento durante el proceso de desarrollo, mientras trabajamos con cualquier tipo de proyecto o elemento. Abrir el Explorador de Servidores En el men Ver, hacer clic en Explorador de servidores. Si la ficha Explorador de servidores se muestra en el extremo izquierdo de la pantalla, hacer clic en esa ficha.

Agregar y eliminar conexiones a datosEl Explorador de servidores muestra las conexiones a bases de datos bajo el nodo Conexiones de datos. Despus de establecer una conexin, podemos disear programas para abrir conexiones y recuperar y manipular los datos. De modo predeterminado, el Explorador de servidores muestra conexiones a datos y enlaces a servidores utilizados con anterioridad.

Agregar una conexin a datos en el Explorador de servidores 1. En el men Herramientas, hacer clic en Conectar con base de datos. Se abre el cuadro de dilogo Propiedades del vnculo de datos.

2. En la ficha Proveedor del cuadro de dilogo Propiedades del vnculo de datos, seleccionar un proveedor.

3. Dar clic en continuar para buscar la Base de Datos con la cual se desea conectar. Para nuestro ejemplo, estamos usando SQLServer, por lo tanto debemos seleccionar la Autenticacin.

4. Dar clic en Seleccionar para buscar la Base de Datos.

5. Dar clic en Probar conexin.

6. Aceptar la Conexin y el resultado ser el siguiente:

Eliminar una conexin de datos desde el explorador de servidores 1. En el Explorador de servidores, expandir el nodo Conexiones de datos.2. Seleccionar la conexin a la base de datos deseada. 3. Pulsar Eliminar. No se produce ningn efecto en la base de datos. Hemos eliminado la referencia desde nuestra vista.

6Sesin 6

ENLACE A DATOS EN WINDOWS FORM II

Al finalizar la Sesin usted ser capaz de:Competencias:Conoce conceptos avanzados de programacin con Visual Basic .NET.Desarrolla programas con controles de enlace a datos.

Procedimentales:Utiliza los controles de enlace a datos conectados y/o desconectados y relaciona tablas en el Data Set. Ejecuta las sentencias de cdigo.

Actitudinales:Reconoce las propiedades de los controles de enlace a datos conectados y/o desconectados y valora la importancia de su uso.

TABLAS DE BSQUEDASCONTROL DATAGRIDVIEWDespus de poblar un dataset, podemos visualizar y modificar datos utilizando el control DataGridView de Windows Forms. DataGridView muestra datos en una serie de filas y columnas. El caso ms simple es cuando la rejilla se enlaza con una fuente de datos que contiene una nica tabla sin relaciones. En ese caso, los datos aparecen simplemente en filas y columnas, como en una hoja de clculo.

Cmo funciona el DATAGRIDVIEWSi el DataGridView se enlaza a datos con mltiples tablas relacionadas y si se activa la navegacin en la rejilla, ste visualizar expansores en cada fila. Un expansor permite la navegacin desde una tabla padre a una hija. Haciendo clic en un nodo se muestra la tabla hija y haciendo clic en el botn Atrs muestra la tabla padre original. En este modo, la rejilla muestra las relaciones jerrquicas entre tablas.

DataGridView puede proporcionar un interfaz de usuario para un dataset, navegacin entre tablas relacionadas y ricas capacidades de formateo y edicin. La visualizacin y manipulacin de datos son funciones separadas: el control gestiona el interfaz de usuario, mientras que las actualizaciones de datos las gestiona la arquitectura de enlace de datos de Windows Forms y por los proveedores de datos ADO.NET. Por tanto, mltiples controles enlazados a la misma fuente de datos permanecern sincronizados.

Enlace de datos al controlPara que el control DataGridView funcione, debemos enlazarlo con una fuente de datos utilizando las propiedades DataSource y DataMember en tiempo de diseo. Este enlace vincula el DataGridView a un objeto de fuente de datos instanciado (como un DataSet o DataTable) y el control DataGridView se actualiza con los resultados de acciones realizadas sobre los datos. La mayora de acciones especficas de datos no son realizadas por el DataGridView. Se realiza por medio de la fuente de datos.

Aplicacin 16:Mostrar datos de un DataSet usando el control DataGridView

En el Mdulo ModDeclaraciones, declarar la Variable para el constructor de las sentencias SQL: SQLCommandBuilder.

Al hacer clic en Mostrar Clientes, se debe llenar el DataGridView con todos los datos de la Tabla Cliente.

Prctica Clase:Programar para las Tablas Vendedor y Producto.ACTUALIZAR DATOS CON DATAADAPTER Y DATASETDataAdapter soporta mtodos especficos para mover datos entre el DataSet y la fuente de datos. Podemos utilizar un adaptador de datos para realizar las siguientes operaciones: Recuperar filas de una fuente de datos y poblarlas en tablas de datos correspondientes en un DataSet. Para recuperar filas de una fuente de datos y poblar un DataSet, utilizar el mtodo Fill de SqlDataAdapter u OleDbDataAdapter. Cuando invocamos el mtodo, se invoca una sentencia SQL SELECT en la fuente de datos. Ejecutar este mtodo abrir y cerrar el objeto de conexin. Transmitir los cambios realizados a una tabla DataSet a la fuente de datos correspondiente. Para transmitir los cambios en una tabla DataSet a la fuente de datos, utilizar el mtodo Update del adaptador. Cuando invocamos el mtodo, ejecuta cualquier sentencia SQL INSERT, UPDATE o DELETE que sea necesaria, dependiendo de si el registro afectado es nuevo, modificado o borrado. Ejecutar este mtodo abrir y cerrar el objeto conexin.

Aplicacin 17:Mostrar datos en un DataGridView y permitir agregar nuevos Clientes ingresando los Datos en los TextBox.

En el Mdulo ModDeclaraciones, declarar el Comando para Insertar Datos.

En el Mdulo ModDeclaraciones, declarar el Comando para Insertar Datos.

Crear el Procedimiento Privado MostrarDatos, para llenar el DataSet y mostrar los datos en el DataGridView.

Crear el Procedimiento Privado CrearParametros, para crear el Comando CMDInsertar indicando la sentencia que ejecutar el DataAdapter DAP en su accin Insertcommand.

Crear el Procedimiento Privado AsignarParametros, para capturar los Datos que usar el DataAdapter al momento de insertar los Datos.

Al dar clic en Mostrar, se deben llenar los Datos existentes en la Tabla Cliente.

Al dar Clic en Ingresar se deben Agregar a la Tabla los Datos ingresados en los TextBox, actualizndose los datos en el DataGridView.

El resultado sera:

Prctica Clase:Programar para las Tablas Vendedor y Producto.

ADMINISTRAR DATOS EN UNA TABLAAPLICACIN 18:Usando SQLDataAdapter, SQLCommand y DataSet, permitir navegar por todos los registros de la Tabla Cliente. Los TextBox inician desactivados.

Crear el procedimiento para cargar los datos que se mostrarn.

Al cargar el Formulario se deben mostrar los datos del Primer Cliente.

Al dar clic en el botn Primero

Al dar clic en el botn Siguiente

Al dar clic en el botn Anterior

Al dar clic en el botn ltimo

Al dar clic en el Botn Nuevo:

Al dar clic en el Botn Ingresar, se deben ingresar los datos de los TextBox a la Tabla Cliente.

El resultado sera:

Al dar Clic en Modificar:

Al dar clic en Actualizar:

El resultado sera:

Al hacer clic en Eliminar:

Prctica Clase:Programar para las Tablas Vendedor y Producto.

DATARELATIONLos objetos DataRelation nos permiten establecer una relacin entre dos tablas (objetos DataTable) de un DataSet, a travs de una columna o campo comn (objetos DataColumn).

Obtener tablas relacionadas mediante cdigoAplicacin 19:Se desean mostrar las Boletas generadas con sus respectivos detalles de los productos.Podemos ahorrar la escritura de las instrucciones que se encargan de obtener las filas hijas, relacionadas con la fila seleccionada de la tabla padre, empleando un DataGrid. Este control implementa de forma transparente todos los mecanismo necesarios gracias al databinding, por lo que, una vez creada la relacin, slo hemos de asignar a su propiedad DataSource, la tabla padre del Dataset.

LA CLASE DATAVIEWLa clase DataView nos permite la aplicacin de vistas personalizadas a partir de una tabla contenida en un DataSet, as como la ordenacin y bsqueda de filas.En ADO clsico, para disponer de varias vistas de una misma tabla, deberamos crear diferentes objetos Recorset, lo cual provocaba el consumo de una gran cantidad de recursos.Este aspecto ha cambiado fundamentalmente en ADO.NET, ya que partiendo de un objeto DataTable situado en un DataSet, vamos a definir varias vistas simultneamente, ordenar y buscar registros, con la ventaja de que el consumo de recursos es menor, puesto que los objetos DataView se alimentan del mismo Datatable.El DataSet del formulario del ejercicio va a estar compuesto por dos tablas. El siguiente cdigo fuente muestra el evento de carga del formulario.

Aplicacin 20:

7Sesin 7

DESARROLLANDO COMPONENTES Y CONTROLES DE USUARIO

Al finalizar la Sesin usted ser capaz de:

Competencias:Conoce conceptos avanzados de programacin con Visual Basic .NET.Desarrolla programas con controles de enlace a datos.

Procedimentales:Desarrolla componentes, controles de usuario y ejecuta la sentencia de cdigo

Actitudinales:Valora la importancia del uso de componentes en el entorno de programacin.

HERENCIA ENTRE FORMULARIOS

HERENCIA VISUAL Adems de la herencia habitual por cdigo que hemos utilizado en los ejemplos de escritura de clases, los formularios Windows disponen de los mecanismos necesarios para crear un formulario base, a partir del cual, posteriormente podremos heredar en formularios derivados; todo ello de modo visual.Vamos a desarrollar por lo tanto un ejemplo, en el que mostraremos los pasos necesarios a dar, tanto en la creacin del formulario base como del heredado.

Aplicacin 21:Crear un formulario para identificar y validar a un usuario antes de permitirle el acceso a una aplicacin. Como norma general, los datos mnimos que todo usuario debe teclear son su nombre (login) y contrasea (password); pero en algunos casos, dependiendo del programa a escribir, esta ventana de identificacin puede requerir la introduccin de datos adicionales, como un cdigo adicional, una fecha, etc.Dado que a priori, desconocemos los datos adicionales que podrn ser necesarios para este formulario, crearemos el formulario base incluyendo la introduccin del login, password, y un botn para validar dichos datos, y posteriormente, en otro proyecto, heredaremos este formulario en uno derivado, al que aadiremos nuevos controles.

El formulario baseComencemos por tanto, abriendo Visual Studio .NET, y creando un nuevo proyecto VB.NET, de tipo Windows, al que daremos el nombre FormularioBase.

A continuacin, abriremos la ventana del explorador de soluciones, seleccionaremos el formulario por defecto de este proyecto y lo eliminaremos.

Siguiendo en el explorador de soluciones, en esta ocasin haremos clic sobre el nombre del proyecto, y pulsaremos el botn de propiedades de esta ventana.

En la ventana de propiedades, abriremos la lista desplegable Tipo de Aplicacin, y seleccionaremos la opcin Biblioteca de clases. Para poder utilizar un formulario como clase base de otro formulario, el proyecto que contiene el formulario base debe ser de tipo librera, para que al compilarlo, genere un fichero .DLL con dicho formato de biblioteca.

El siguiente paso consiste en aadir a este proyecto, el formulario que va a actuar como base. Agregamos un nuevo Formulario llamado frmValidar.

En el formulario frmValidar, insertaremos los controles necesarios para introducir los datos de usuario con su respectiva clave y un botn de validacin de dichos datos.

Programamos el Botn Validar:

Para finalizar con el formulario base, seleccionaremos en el IDE la opcin de Generar.

Lo cual crear la biblioteca de clases, es decir, el archivo FormularioBase.DLL.

A partir de este punto, deberemos crear el proyecto que contenga un formulario que herede el formulario base que acabamos de crear. Esto lo podemos conseguir de dos modos: Agregando un nuevo proyecto a la solucin. Creando un nuevo proyecto aparte.

En ambos casos, tendremos que establecer la oportuna referencia, bien hacia el proyecto del formulario base en el primer caso, o hacia el archivo que contiene la librera de clases, como veremos en la siguiente aplicacin.

AGREGAR UN PROYECTO CON UN FORMULARIO DERIVADOAplicacin 22:Creamos un Nuevo proyecto y lo aadimos a la solucin actual, con el nombre FormularioDerivado. Ello har que nuestra solucin de proyectos FormularioBase, quede de la siguiente manera (con el proyecto del formulario base y el nuevo).

Para poder realizar las oportunas pruebas, haremos clic derecho en el nuevo proyecto, FormularioDerivado, y seleccionaremos del men contextual la opcin Establecer como proyecto de inicio, ya que como una biblioteca de clases no podemos ejecutarla visualmente, necesitamos un proyecto que sea de tipo aplicacin Windows, que s disponen de medio visual de representacin a travs de formularios.

El siguiente paso ser eliminar el formulario que contiene el proyecto FormularioDerivado, de igual modo que el mostrado anteriormente.

Agregamos un nuevo Elemento al Proyecto.

Seleccionamos Formulario Heredado y le damos el nombre de FRMIngreso:

Al aceptar la ventana de creacin del formulario, el entorno de desarrollo buscar la biblioteca de clases con el mbito ms prximo, y que disponga de formularios heredables, mostrando el resultado en la ventana Selector de herencia. En nuestro caso, naturalmente, aparecer el formulario base frmValidar, contenido en la DLL que hemos generado anteriormente.

Al aceptar ser habr creado el nuevo formulario, en base al formulario base especificado, y establecida una referencia en el proyecto FormularioDerivado hacia el proyecto base FormularioBase.

Al abrir el formulario frmIngreso en el diseador de formularios, se mostrar con los controles pertenecientes al formulario base bloqueados; ello es debido a que tales controles pertenecen a la clase base del formulario, y slo pueden ser manipulados desde el proyecto del formulario base.

Al formulario derivado le podemos agregar algunos controles ms.

En lo que respecta al cdigo de este formulario, slo podemos escribir los eventos de los nuevos controles, ya que el cdigo de los controles heredados se encuentra protegido, siendo slo modificable desde el proyecto del formulario base. El nico evento, por lo tanto que vamos a escribir aqu, ser el del botn BTNSalir, que llamar al mtodo de cierre del formulario.

Al ejecutar, el cdigo del Botn Validar se heredara del FormularioBase.

Aplicacin 23:Crear un formulario heredado desde un proyecto independiente La diferencia principal en este caso consiste en que dentro de la solucin de proyectos, no est el proyecto que contiene el formulario base, por lo que tendremos que buscar el archivo que contiene la librera de clases manualmente.

Vamos a crear un nuevo proyecto de aplicacin Windows, al que daremos el nombre FormularioDerivado01.

Eliminamos el formulario por defecto que contiene y agregamos el formulario Heredado.

Le damos el nombre de FRMInicio:

Al Agregar, el selector de herencia nos avisa de que no puede localizar en el mbito de que dispone, un ensamblado (biblioteca de clases en este caso) que contenga formularios de los que heredar.

Tenemos por lo tanto, que pulsar el botn Examinar y buscar el archivo FormularioBase.DLL, que creamos en la aplicacin 21 y se encuentra en la ruta de dicho proyecto, en su directorio bin\Debug.Una vez localizado, aceptaremos esta ventana.

Seleccionar FRMValidar.

El IDE se encargar a continuacin, de establecer la referencia entre nuestro proyecto y el ensamblado o archivo DLL que contiene el formulario base, mostrando finalmente el nuevo formulario heredado del mismo modo en que vimos en el ejemplo anterior. Seguidamente, aadiremos algunos controles para adaptarlo a las necesidades particulares de este proyecto.

8Sesin 8

CRYSTAL REPORTS I

Al finalizar la Sesin usted ser capaz de:

Competencias:Conoce conceptos avanzados de programacin con Visual Basic .NET.Desarrolla programas con controles de enlace a datos.

Procedimentales:Disea e implementa Reportes y realiza el enlace con la base de datos.

Actitudinales:Muestra inters por disear reportes enlazados a la base de datos.

INFORMESVisual Studio. Net incluye Crystal Reports como un mecanismo oficial de creacin de reportes. Crystal Reports es un producto muy desarrollado y completo para la creacin de reportes y cuenta con una infinidad de opciones.

CREAR CONEXIN CON LA BASE DE DATOS

1) Agregar nuevo origen de Datos.

2) Elegir tipo de Origen de Datos

3) Elegir la conexin a usarse.

4) Agregar la conexin a la Base de Datos. Clic en examinar para buscar la Base de Datos respectiva.

5) Seleccionar la Base de Datos.

6) Seleccionar el modo de Autenticacin.

7) Probar conexin.

8) Agregar la Base de Datos a la Solucin.

9) El Asistente buscar los elementos de la Base de Datos seleccionada.

10) Seleccionar los objetos que se desean agregar de la Base de Datos para que se almacenen en un DataSet.

11) Ya tenemos la conexin en el Explorador de Servidores.

CREAR UN INFORME Independiente de cmo se har la presentacin, el reporte se define en un archivo .RPT, que forma parte de su proyecto. Ese archivo especifica el modo en que se har la presentacin del reporte, pero no incluye los datos propiamente dichos. Los datos se definirn en el tiempo de ejecucin.

Crystal Reports se basa en un concepto muy comn de la definicin de reportes: los reportes se componen de secciones, y cada seccin es un espacio horizontal en la pgina. Existen diversos tipos de secciones, por ejemplo:

Encabezado del reporte, aparece en la primera pgina.Encabezado de pgina, aparece en la parte superior de todas las pginas.Detalle: lo ms importante. En el tiempo de ejecucin, se genera una de estas secciones para cada lnea (registro) en la base de datos.

Pie de pgina, aparece en la parte inferior de todas las pginas.Pie de reporte, aparece al final del reporte.

Aplicacin 24:Crear un Reporte que muestre la lista de todos los Clientes.Antes de crear el reporte debemos tener un proyecto abierto y deber estar la fuente de datos a mostrar.Agregamos un nuevo elemento al Proyecto.

Ahora agregaremos un reporte al proyecto. Seleccionaremos CrystalReports y le daremos el nombre de RPTClientes.

Crystal Reports mostrar la galera en la cual seleccionaremos Usar asistente de Informes. Tambin seleccionamos Informe Estndar.

ACCEDER A LA BASE DE DATOS El siguiente paso de creacin de Reportes es seleccionar el origen de datos para nuestro Reporte.Presione Aceptar para pasar a la pantalla siguiente para la eleccin de la fuente de los datos. Seleccione la tabla a mostrar a partir del conjunto de datos creado.

Seleccionar los Campos que se desean mostrar:

Seleccionar el nivel de Agrupamiento.

Si se desea se puede seleccionar que se muestre algn resumen en el Reporte. Esto se puede usar cuando se generan Reportes de Ventas.

Este paso es opcional, solo si se desea crear un subconjunto de informacin en el Reporte.

Finalmente, seleccionar el estilo del Informe:

El resultado sera:La vista Diseo del Reporte:

Cuando creamos el reporte se mostrar de la siguiente manera

El informe creado ser un elemento ms del Proyecto.

Actividad:Crear un Reporte para cada Tabla de la Base de Datos.

9Sesin 9

CRYSTAL REPORTS II

Al finalizar la Sesin usted ser capaz de:

Competencias:Conoce conceptos avanzados de programacin con Visual Basic .NET.Implementa mdulos, clases y componentes que permitan elaborar programas en n-capas.Desarrolla programas con controles de enlace a datos.Disea informes para la impresin de datos desde una aplicacin Windows.Genera proyectos de instalacin de aplicaciones desarrolladas. Instala y desstanla aplicaciones.

Procedimentales:Personaliza la presentacin del informe mediante los controles del crystalreportviewer.

Actitudinales:Muestra inters al trabajar con controles dentro de su informe.

MOSTRAR INFORMES

VISUALIZADOR DEL INFORMELos reportes se visualizan en los formularios usando el control CrystalReportViewer.

Aplicacin 25:

Modificar las propiedades:

El CrystalReportViewer cambiar de apariencia:

CREAR UN INFORME DESDE ADO NET Aplicacin 26: La presente aplicacin mostrar un reporte creado con cdigo.

VISUALIZAR EL INFORME

10Sesin 10

PROYECTOS DE INSTALACIN

Al finalizar la Sesin usted ser capaz de:

Competencias:Conoce conceptos avanzados de programacin con Visual Basic .NET.Implementa mdulos, clases y componentes que permitan elaborar programas en n-capas.Desarrolla programas con controles de enlace a datos.Disea informes para la impresin de datos desde una aplicacin Windows.Genera proyectos de instalacin de aplicaciones desarrolladas. Instala y desstanla aplicaciones.

Procedimentales:Genera aplicacin y Crea el proyecto de instalacin.Genera la instalacin y desinstalacin del proyecto

Actitudinales:Muestra inters, responsabilidad y satisfaccin en el proyecto de instalacin.

INSTALAR APLICACIONES

PROYECTO DE INSTALACIN 1) Una vez finalizada la programacin de los proyectos, se guarda y se genera la aplicacin.

2) Agregar un nuevo proyecto.

3) Seleccionar Asistente para proyectos de instalacin y agregarlo a la solucin actual.

4) Se inicia el asistente:

5) Seleccionar el tipo de instalador.

6) Agregar los elementos necesarios.

7) Se deben agregar los elementos que no pertenecen al proyecto, como Copias de Seguridad.

8) Se muestra la lista de elementos incluidos.

9) Finalizar el Proyecto de instalacin.

10) La solucin final tendr dos Proyectos.

11) Generar el Proyecto de Instalacin.

12) Mientras se est generando el proyecto final se muestran las siguientes opciones.

13) Una vez concluido el proceso.

14) En la carpeta de la solucin se muestra la carpeta para el proyecto de instalacin.

INSTALAR APLICACIONES El proceso de instalacin del proyecto finalizado es similar a la instalacin de cualquier programa.

1) Se ejecuta el archivo Setup.exe

2) Se inicia el instalador

3) Se inicia el asistente de instalacin.

4) Seleccionar carpeta de instalacin.

5) Confirmar la instalacin.

6) Progreso de la instalacin.

7) Finalizar la instalacin.

8) En la carpeta seleccionada para la instalacin, se copiarn los archivos necesarios.

9) Para desinstalar la aplicacin, el proceso se ejecuta desde el Panel de control.

11Sesin 11

PROYECTO FINAL

Al finalizar la Sesin usted ser capaz de:

Competencias:Conoce conceptos avanzados de programacin con Visual Basic .NET.Desarrolla programas con controles de enlace a datos.

DESARROLLO PROYECTO FINALVisual Basic .NET - Avanzado- 26 -Visual Basic .NET - Avanzado- 25 -