Manual Visual Basic .NET

Embed Size (px)

Citation preview

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Desarrollo de Aplicaciones para la Plataforma Microsotf NET. usando VISUAL Basic.NET Objetivo Al finalizar el curso, el participante estar capacitado para: Conocer la estrategia Microsoft, NET y los componentes del Marco. NET. Describir la nuevas caractersticas de Visual Studio. NET Usar las nuevas caractersticas de Visual Basic. NET Crear aplicaciones para Windows mediante los Windows Forms. Acceder a bases de datos usando ADO.NET Crear y usar componentes. NET Crear Aplicaciones Web mediante ASP. NET Crear y usar Servicios Web XML.

Prerequisitos Curso programacin con Visual Basic 6.

Metodologa El curso se desarrolla integramente en el laboratorio de computacin a travs de resolucin de casos prcticos. El instructor utiliza audivisuales para presentar los temas y desarrolla ejemplos prcticos. CAPTULO 1: PLATAFORMA MICROSOFT.NET Microsoft .NET se compone de un conjunto de recursos que hacen posible su implementacin, estos componentes se muestran en la siguiente ilustracin:

2. Servidores Empresariales.NETWeb Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Microsoft Exchange Server: Ofrece servicios de mensajera (correo electrnico) y colaboracin entre aplicaciones (workflow). Microsoft Host Integration Server: Realiza la comunicacin entre sistemas Cliente/Servidor, aplicaciones Intranet o Internet con los sistemas legados por el negocio, tales como Mainframe o AS/400. Microsoft Internet Security and Aceleration Server: Antes llamado Proxy Server, ISA Server se usa para brindar seguridad en las comunicaciones por Internet. Microsoft SQL Server: Es el servidor de datos de Microsoft que permite crear soluciones de Data Warehouse y se integra con Microsoft Office. 3. Bloque de Servicios .NET El Bloque de Servicios .NET se est construyendo como un conjunto de Servicios Web XML que permitan la integracin entre los usuarios y las aplicaciones clientes que corran en diferentes dispositivos (PCs, dispositivos mviles, etc). Actualmente Microsoft tiene construido dos servicios que ofrecen ventajas para los usuarios: Microsoft Passport: Tiene un conjunto de servicios como el Single Sign In (SSI) que permite autenticar si un usuario es vlido y puede participar en un sitio Web, aparte tiene otras ventajas como reducir el tiempo de autenticacin, guardar contenido personalizado. etc. Hotmail utiliza el servicio de Passport para la autenticacin de usuarios y guardar informacin de ste en el Web. Microsoft Hailstorm: Usa los servicios de Passport para guardar informacin personalizada del usuario, pero su uso principal es almacenar Servicios Web que puedan ser usados por aplicaciones de Visual Studio .NET o cualquier lenguaje compatible con .NET El Marco. NET Definiendo el Marco .NET Fl Marco .NET (en ingles .NET Framework) es la piedra angular de la plataforma .NET y constituye u.i enlomo para la creacin, distribucin y ejecucin de servicios Web, as como de otros tipos de aplicaciones. Se compone de cuatro partes principales que son: 1. Tiempo de F-jccucin en Lenguaje Comn (CLR) Es el RunTime comn para todos los lenguajes que soportan el Marco .NET y realiza la mayor pane de funciones para que corran las aplicaciones .NET, es el que se encarga de compilar \ ejecutar una aplicacin, as como administrar su trabajo con el sistema. 2. Librera de Clases .NET Son un conjunto de componentes que sirven para acceder a travs de objetos a la mayor parte de servicios del sistema, labor que era realizada antes por las APIs de Windows, laWeb Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

MEC o ATL de Visual C++, etc. 3. ADO.NET.vXML ADO .NET se usa para acceder a cualquier origen de datos sea relacional (bases de datos), formatos planos (textos), etc. Por su parte, XML sirve como el formato para intercambiar los datos en diferentes plataformas. 4. ASP.NET Este componente incluye el soporte para la creacin, distribucin y mantenimiento de aplicaciones Web as como de Servicios Web XML que son la razn de ser de la plataforma .NET TIEMPO DE EJECUCIN EN LENGUAJE COMN (CLR) Introduccin al RunTime y al CLR Un RunTime es la aplicacin responsable de manejar la asignacin de memoria, inicio y eliminacin de procesos mientras un programa se est ejecutando, asi como de brindar seguridad al cdigo, y tambin gestionar su relacin con otros programas o componentes. l.os RunTime lian sido usados por los lenguajes de programacin como Visual Basic cuyo nombre es el VBRLN, Visual C++ cuyo nombre es MSVCRT. pero tambin Visual FoxPro, JScnpt, SmaIlTalk. Per!, Python. Java, etc. tienen su propio RunTime. Cada aplicacin Visual Basic 6 que se quera distribuir tenia que distribuirse con el RunTime, lo mismo en Visual C-H-, la diferencia que el primero ocupaba demasiado espacio y no era tan poderoso como el segundo. EL RunTime de .NET se llama el CLR (Common Language RunTime o Tiempo de Ejecucin en Lenguaje Comn) y es la solucin a los diferentes tipos de RunTime que manejan los diferentes lenguajes de programacin antes mencionados, que ahora sern gestionados en ejecucin por un nico RunTime comn. La ventaja de tener un solo RunTime son mltiples ya que se podr compartir las mismas estructuras, tipos de datos, clases, etc. en todos los lenguajes que cumplan las especificaciones del Marco .NET. Servidos del CLR El CLR es el motc(r de ejecucin de las aplicaciones del Marco .NET. Proporciona una serie de servicios, entre los que se incluyen los siguientes: Administracin del cdigo (carga y ejecucin). Aislamiento de la memoria de la aplicacin. Comprobacin de la seguridad de los tipos.Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Conversin del (Lenguaje Intermedio) a cdigo nativo Acceso a los metadatos (informacin de tipo mejorada) Administracin de memoria para los objetos administrados Aplicacin de seguridad de acceso al cdigo Control de excepciones, incluyendo excepciones en varios lenguajes Interoperabilidad entre el cdigo administrado, los objetos COM y las DLL anteriores (datos y cdigo no administrados) Automatizacin del diseo de objetos Suporte para servicios de desarrolladores (creacin de perfiles, depuracin, etc.) Sistema de auto registro o auto descripcin de componentes (no es necesario registrar el componente en el sistema) No es necesario los elementos de COM como GUIDs, interfases iLnknow, etc. Nota: Con esto decimos adis al problema de la compatibilidad de versiones de las dll. Esta informacin se utiliza en tiempo de ejecucin para resolver referencias, aplicar las directivas del enlace de versiones y validar la integridad de los ensambladores cargados. El tiempo de ejecucin puede determinar y ubicar el ensamblador para cualquier objeto de ejecucin, ya que todos los tipos se cargan en el contexto de un ensamblador. Asimismo, los ensambladores constituyen la unidad en la que se aplican los permisos de seguridad de acceso al cdigo. La prueba de identidad de cada ensamblador se considera individualmente cuando .se determinan los permisos que contiene para otorgar al cdigo. Espacio de Nombre Un espacio de nombre (NameSpace) es un esquema de denominacin lgica para los tipos en los que un nombre de tipo sencillo, como OLEDB. va precedido de un nombre jerrquico separado por puntos. Dicho esquema se encuentra totalmente bajo el control del desarrollador. Las herramientas de diseo pueden utilizar los espacios de nombre para facilitar a los desarrolladores el proceso de exploracin y referencia a los tipos en su cdigo. El concepto de espacio de nombre no est relacionado con el del ensamblador. Un nico ensamblador puede contener tipos cuyos nombres jerrquicos dispongan de distintas races de espacio de nombre y una raz lgica de este tipo puede abarcar varios ensambladores. En el Marco .NET. un espacio de nombre es una conveniencia lgica de denominacin en tiempo de diseo, mientras que un ensamblador establece el mbito de nombre para los tipos en tiempo de ejecucin.

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

En Visual Basic, por ejemplo para hacer uso de un Assemblie hay que usar los espacios de nombre con la declaracin [mports, por ejemplo si quisiramos acceder a datos con SQL Server y manejar archivos de texto en una aplicacin Windows realizaramos la siguiente declaracin: Imports System.Windows.Forms Imports System.Data.SQL Imports System.10 CAPITULO 2: VISUAL STUDIO .NET Lenguajes en .NET En Visual Studio .NET vienen los siguientes Lenguajes de Programacin: Visual Basic .NET Visual C# .NET Visual C++ .NET Visual FoxPro .NET (No administrado por el Marco .NET) Visual JScript .NET Adems de estos lenguajes, el Marco .NET soporta otros lenguajes, entre los cuales Destacan:

COBOL: http://wvvw.adtools.com/info/whitepaper/net.html/ Pascal: htlp://w\v\v2.tit.qut.cclu.;ni/('oinpSci/Pi..\S/7ComponfiitPascal/ Sinall Talk: http://wwvv.qks.com/ Eitfel: h(tp://dotnct.ritTeI.com/ MI-: http://research.inicrosoft.coin/Proccts/S.ML..\ET7iiidcx.htni APL: http://vvww.dvadic.com/ Oberon: http://www.obcron.ethz.ch/lightning/ Scheme: http://rovcr.cs.iiwu.edii/-scheme/ Mercur\: htt|):/7w vvw.cs.inu.o7.au/research/mercurv/ Python: http://aspn.activestate.com/ASPN/NET/indcv Haskell: http://haskell.cs.vale.edu/ghc/ Mondrian: http://www.moiidrian-script.org

Se ha dado el nombre de algunos lenguajes junto con sus respectivas pginas Web donde se puede encontrar informacin sobre estos e inclusive bajarse el compilador del lenguaje compatible con .NET. Figura 2.3: Listado de Lenguajes .NETWeb Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

COBOL Jscript.NET Alice

Eiffel HastKell C

Mondrian ML VISUAL

Pascal APL C++

Visual Basic Visual C# Smalltalk

Entorno Integrado de Desarrollo (IDE) Descripcin del IDE Corporativo Visual Studio.NET tien un Entorno Integrado de Desarrollo nico o compartido para crear aplicaciones usando cualquiera de los Lenguajes de Programacin, que pueden ser Visual Basic. Visual C++ o C #. En esta nueva versin de Visual Studio, Visual FoxPro mantiene su propio IDE (similar al de la Versin 6), adems Visual InterDev ya no es parte de Visual Studio, ya que las herramientas de desarrollo para Web estn disponibles a travs de los Web Forms disponibles desde el IDE comn. Al iniciar Visual Studio. NET aparece (por defecto) la Pgina de Inicio, tal como se muestra en la Figura 1.2 Figura 2.4: Ventana de Inicio del Visual Studio. NET

Desde esa pgina de inicio podemos elegir la opcin Get Started para crear un nuevo proyecto o abril uno existente o reportar un error del IDE de Visual Studio, si elegimos New projet se presentar la Ventana que se muestra en la Figura 2.5. Figura 2.5 Ventana de Crear un Nuevo Proyecto

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Esta ventana est dividida 2 secciones: en el lado izquierdo se encuentran los tipos de proyectos que se pueden realizar (Visual Basic, Visual C, Visual C++,etc) y en el lado derecho se encuentra las plantillas o tipos de aplicaciones, que varan de acuerdo al tipo de proyecto. Si se elige Visual Basic o Visual C#, las plantillas se pueden dividir en tres: para Windows, para Web (Aplicaciones, Servicios, Librera de Clases, Librera de Controles, Proyecto Vaco) y de Consola. En el caso de elegir como tipo de proyecto Visual Basic y como plantilla Windows Application hay que seleccionar la ubicacin del nuevo proyecto y escribir el nombre de este, el cual crear una carpeta con el mismo nombre en el lugar seleccionado. A continuacin la figura 2.6 muestra el IDE compartido de Visual Studio. NET en el caso de elegir una Aplicacin para Windows. Figura 2.6: IDE Compartido de Visual Studio. NET

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Entre las partes del nuevo IDE de visual Studio. NET tenemos: 1. Menu Bar 2. ToolBars 3. Serve Explorer Windows (Ctrl+Alt+S) 4. ToolBox(Ctrl+Alt+X) 5. Output Windows (Ctrl+Alt+O) 6. Status Bar 7. Windows Form Designer 8. Solution Explorer Windows (Ctrl+R) 9. Properties Windows (F4) 10. Search Windows (Ctrl+Alt+F3) 11. Dynamic Hep Windows (Ctrl+F1) Existen nuevas ventanas en Visual Studio. NET entre las cuales tenemos: Class View (Ctrl+Shift+C) Resource View (Ctrl+Shift+E) Macro Explores (Alt+F8) Document Outline (Ctrl Alt+T) Task List (Ctrl+Alt+K) Command Windows (Ctrl+Alt+A)

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Find Symbol Results (Ctrl+Alt+Y) Find Symbols Results (Ctrl+Alt+Y) Diseadores Para realizar la construccin de aplicaciones o creacin de componentes o servicios disponemos de Diseadores que facilitan la labor de construccin de interfaces, creacin de sentencias, etc. La mayora de diseadores se habilitan al elegir una plantilla de Visual Studio. NET y casi todos generan cdigo al disear controles sobre el contenedor respectivo; caracterstica totalmente distinta a la forma de trabajo en Visual Basic 6, que ocultaba el cdigo generado por el diseador. Entre los diseadores que trae Visual Studio. NET tenemos: Windows Form Designer: Se muestra al elegir cualquiera de dos plantillas Windows Application o Windows Control Library, habilitando en el Toolbox los controles para Windows que sern usados para construir la interfase de la aplicacin arrastrando dichos controles hacia el formulario o control de usuario. Web Form Designer: Se muestra al elegir la plantilla Web Application habilitando en el Toolbox los controles para Web y los controles HTML que sern usados para construir la pgina Web que correr en el servidor IIS (archivo aspx) arrastrando dichos controles hacia el formulario Web. Component Designer: Este diseador se muestra al elegir una de dos plantillas: Class Library o Windows Service y tambin trabaja con los controles para windows creando una interfase reusable desde otra aplicacin. Web Service Designer: Sirve para disear servicios Web y es mostrado al elegir una plantilla Web Service, tambin trabaja con los controles para Windows, componentes, etc. Existen ms diseadores, pero que lo trataremos en la categora de herramientas de datos, debido al tipo de trabajo que realizan con datos, el cual se trata como tema siguiente. Herramientas de Datos Si se quiere realizar un trabajo rpido con datos, tal como modificar la estructura de la base de Datos, crear tablas, consultas, procedimientos almacenados, etc. existen herramientas que permiten realizar esta labor reduciendo enormentemte el proceso de desarrollo en el caso de hacerse por otros medios. Entre las principales herramientas que trabajan con datos tenemos:Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Server Explorer: Sin duda es una de las principales herramientras de Visual Studio. NET y no solo para acceder a datos sino para mostrar y administrar los diferentes servidores o recursos del sistema, tales como Base de Datos. Servicios Web, Aplicaciones COM+, etc. con solo arrastrar el objeto ste puede ser usado en una aplicacin. Tambin se tratar con mayor detalle en el mdulo de acceso a datos. Data Adapter Wizard: Es un Asistente que permite crear un DataAdapter que es un Comando (Select, Insert, Update, Delete) con el cual se podr general un conjunto de registros o Dataset. La misma funcin puede ser cubierta por el Server Explorer con solo arrartrar los campos hacia el formulario. Query Designer: Es un Diseador que permite crear Consultas SQL de manera sencilla arrastrando tablas o consultas sobre ste y eligiendo los campos que se vern en la consulta de datos, tambin se puede realizar filtros o especificar criterios de seleccin. Adems no solo se pueden construir consultas. Select sino tambin se pueden crear consultas Insert, Update o Delete, etc. DataBase Project: Es un tipo de plantilla que sirve para trabajar con una Base de Datos, para lo cual debe existir una conexin a un origen de datos, este tipo de proyecto da la posibilidad de crear y modificar scripts de creacin de tablas, consultas, vistas, desencadenantes, procedimientos almacenados, etc. Editor de Script: Uno de las principales herramientas para trabajar con base de datos remotas como SQL Server, Oracle, etc., es utilizar el editor de Script que permite crear tablas, consultas, vistas, etc. Mostrando con colores las sentencias o palabras reservadas del lenguaje Transact-SQL. Depurador de Procedimientos Almacenados: Visual Studio.NET incorpora un Depurador de Store Procedure que puede realizar seguimientos paso a paso por lnea de cdigo, por sentencia o por instruccin, adems crea puntos de interrupcin, permitiendo un mayor control y seguimiento del cdigo en caso de errores. Todas estas herramientas mencionadas, son nuevas en Visual Stuido. NET, ha excepcin del Query Builder que es el mismo de la versin anterior de Visual Studio. Como se habr dado cuenta muchas herramientas de acceso a datos de Visual Basic 6 han sido eliminadas, tales como: Data Environment, Data View, Data Report, y otras ms, pero en su reemplazo existen las que ya hemos mencionado. CAPITULO 3: VISUAL BASIC. NET

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Introduccin En los mdulos anteriores hemos tratado el Marco. NET y Visual Studio. NET, ahora trataremos Visual Basic. NET, pero hay que remarcar que las caractersticas del lenguaje depende del Marco. NET y las herramientas son compartidas por el IDE de Visual Studio. NET. Visual Basic. NET es la versin 7 de sta popular herramienta, sta ltima versin tiene cambios radicales, tanto en su concepcin (.NET), en el lenguaje, las herramientas usadas, etc. entre las nuevas caractersticas de Visual Basic. NET tenemos: Dos tipos de desarrollos bien diferenciados:

Aplicaciones para Windows Aplicaciones para Internet

Acceso a Datos usando ADO.NET, el cual permite trabajar con DataSets desconectados. Nuevo Depurador que permite realizar seguimiento de cdigo escrito en diferentes lenguajes. NET Creacin y us o de XML para intercambio de datos entre aplicaciones. Lenguaje Orientado a Objetos, con soporte de Herencia mltiple, y Polimorfismo a travs de la sobrecarga de propiedades, mtodos y funciones con el mismo nombre. Control de errores o excepciones en forma estructurada (Try.Catch.Finally). Soporte de multitheread para que la aplicacin puede ejecutar mltiples tareas en forma independiente. Uso de NameSpaces para referirse a una clase que se va a usar en la aplicacin. Los Assemblies reemplazan a la Librera de Tipos, en un Assemblie puede existir uno o ms NameSpaces. Reestructuracin en los Tipos de Datos; existen nuevos tipos de datos y se han modificado y eliminado cierto tipos de datos. Cambio en el Lenguaje: nuevas forma de declarar variables, conversin explcita de tipos de datos (no existe conversin forzosa); no existen procedimientos sino funciones, etc.

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Declaracin de Variables A diferencia de Visual Basic 6, en VB. NET se pueden declarar varias variables en una sola instruccin y adems se puede asignar directamente sus valores. Otra observacin es que es necesario definir el tipo de declaracin y el tipo de dato (antes se hacia se asuma un tipo de declaracin y un tipo de datos variant, que ahora no existe). Sintaxis As [=] Existen varios tipos de declaracin que detallamos a continuacin en la siguiente tabla Declaracin Public Protected Friend Private Dim Static Alcance de Variables Para las variables declaradas a nivel de procedimientos (Dim y Static) existen un nuevo alcance que es a nivel de estructura o bloque, que puede ser For Nest, If End If, Do Loop, etc. Las variables definidad dentro de un bloque solo valdrn en este bloque. Opciones de Trabajo con Variables Por defecto en VB NET es necesario declarar las variables usadas (Option Explict) y tambin es necesario que se asigne el misto tipo de dato a la variable (Option Strict), si deseamos Declaracin implcita (por defecto Objet) y Conversin Forzosa de tipos (ForeCast), aunque no es lo recomendable por performance, podemos conseguirlo de dos formas: mediante Propiedades del proyecto, opcin Build y elegir Off en las listas de Option Explicit y Option Strict o mediante declaracin al inicio de todo el cdigo: Option Explicit Off Option Strict Off Arrays Un array o arreglo es un conjunto de variables que tienen el mismo nombre pero diferente ndice que permite simplificar el uso de stas y aumentar la velocidad de acceso a los datos que almacena el array. El array puede tener uno o mas dimensiones (hasta 60) y cada dimensin tiene un lmite inferior que siempre es 0 y un lmite superior que es equivalente al tamao de la dimensin del array menos 1. Esta caracterstica es distinta que en la versin anterior, en donde el lmite inferior del array podan empezar en cualquier nmero. La clase base. NET de donde se heredan los array es Array y pertenece al siguiente NameSpace:System.Array.Web Developer Microsoft.NET

Lugar de declaracin Mdulo o Clase Clase Clase Mdulo Procedimiento Procedimiento

Alcance o Ambito Global, en todo el proyecto En la clase declarada o en una derivada En el Assemblie Solo en el mdulo Solo en el Procedimiento Solo en el Procedimiento

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Declaracin de Arrays A diferencia de Visual Basic 6, en VB. NET se puede declarar arrays definiendo el nmero de dimensiones pero sin indicar el tamao. Cabe resaltar que solo se puede declarar e inicializar una array que no tiene tamao definido. Otra diferencia es que no existe la sentencia Option Base que haga que el lmite inferior del array empiece en 0 o en 1, ste siempre empezar en 0 e ir hasta n-1. Sintaxis }| Return (Valor)] End Function Notas: El tipo de argumento por defecto es By Val (en la versin anterior era ByFef) Si se usa Optional debe iniciarse con un valor (antes no era obligatorio) Se puede usar Return para regresar a la llamada del procedimiento. Manejo de Threads Threads Un Threads es la unidad bsica para que el Sistema Operativo pueda ejecutar un proceso. Una aplicacin (AppDonain) siempre inicia un solo Threads, pero este a su vez puede iniciar otro Threads. Al proceso de ejecutar varios Threads le llamaremos Threading. En ventaja principal de los Threads es tener varias actividades ocurriendo en forma simultnea, lo cual es una posibilidad para que los desarrolladores puedan trabajar con varios procesos sin perjudicar otras tareas. Por ejemplo, el usuario puede interactuar con la aplicacin mientras se va ejecutando una consulta de miles de registros. Se recomienda el uso de Threads en las siguientes situaciones Para comunicaciones sobre una red, servidor Web o Servidor de Base de Datos. Al ejecutar operaciones que demoren bastante tiempo Para mantener siempre disponible la comunicacin entre el usuario y la interfase, mientras se van ejecutando tareas en segundo plano, etc. El uso de Threads intersivamente disminuye los recursos del sistema operativo, por tanto solo se recomienda usar en los casos ya descritos, sino la performance de la aplicacin disminuir.Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Implementacin de Threads Para implementar Threads se usa el NameSpace: System.Threading.Thread y luego se hace uso de los mtodos que se definen a continuacin: Star: inicia un Thread, el cual es un proceso de llamada asncrona. Para saber el estado del Threads hay que usar las propiedades ThreadState y IsAlive Abort: Cancela un Thread iniciado, si deseamos saber el estado nuevamente podemos usar las propiedades ThreadState y IsAlive Sleep: Ocasiona una pausa en milisegundos del bloque de instrucciones Suspen: Tambin ocasiona una pausa en el bloque de instrucciones Resume: Reinicia una pausa originada con el mtodo Suspend Join: Espera porun Threads Estado de un Threads Un Threads tener diferentes estados en un mismo tiempo, para saber su estado se encuentra la propiedad ThreadState que devuelve un valor que indica el estado actual del Thread. Accin Otro Thread a Thread Start El Thread inicia su ejecucin El thread llama a Thread.Sleep El Thread llama a Monitor. Espera en otro objeto El Thread llama Thread. Join en otro Thread Otro Thread lalma a Thread.Suspend El Thread responde a un requerimiento de Thread. Suspend Otro Thread llama a Thread.Resume Otro Thread llama a Thread.Interrumpt Otro Thread llama a Thread.Abort El Thread responde a Thread.Abord Control de Excepciones Durante el desarrollo y ejecucin de toda aplicacin pueden presentarse diferentes tipos de errores, los cuales impiden el normal funcionamiento de las aplicaciones. A estos errores se les llama Excepciones. Tipos de Errores Los errores o excepciones se pueden clasificar en 3 tipos: Errores de Sintaxis: Suceden al escribir cdigo en la aplicacin; como por ejemplo una instruccin mal escrita, omisin de un parmetro obligatorio en una funcin, etc. Visual Basic notifica de cualquier error de sintaxis mostrando una marcha de subrayado azul (por defecto) con un comentario indicando la causa del error. Estado de Transicin Unchanged Running WaitSleepJoin WaitSleepJoin WaitSleepJoin SuspendRequested Suspended Running Running AbortRequested Aborted

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Una ayuda para corregir errores de sintaxis, es usar la sentencia Option Explicit que fuerce a declarar variables y evitar expresiones invlidas. Errores Lgicos: Ocurren una vez usada la aplicacin y consiste en resultados inesperados o no deseados: por ejemplo una funcin que debe devolver el sueldo neto est devolviendo un valor de cero o negativo, o una subrutina que debe eliminar un archivo temporal no lo est borrando. Para corregir este tipo de errores se hace uso de herramientas de depuracion, como por ejemplo un seguimiento paso a paso, o inspeccionar el valor de una variable o expresin. Tambin podemos disminuir errores o excepciones de tipos de datos no deseados usando la sentencia Option Strict que evita la conversin forzosa y verifica que el tipo de dato asignado sea del mismo tipo que la variable o funcin, o que un parmetro pasado sea del mismo tipo, etc. Errores en Tiempo de Ejecucin: Este tipo de errores suceden en plena ejecucin de la aplicacin, despus de haber sido compilado el cdigo. No son errores de mala escritura no de lgica, sino mas bien de algunas excepcin del sistema, como por ejemplo tratar de leer un archivo que no existe o que est abierto, realizar una divisin entre cero, etc. Para controlar los errores en tiempo de ejecucin disponemos de los Manipuladores o Controladores de Error, que evitan la cada del programa y permiten que siga funcionando. A continuacin veremos las formas de implementar el control de este tipo de errores. Opciones de Control de Excepciones Para controlar excepciones no solo basta usar una forma de control, sea no estructurada o estructurada, sino tambin es necesario configurar las opciones de control de excepciones para lo cual del men Debug se elige Windows y luego Exceptions o tambin se puede elegir directamente el botn Exceptions de la Barra de Depuracin. Aparecer la ventana de control de excepciones que se muestra a continuacin Existen 2 monitores en que se pueden controlar las excepciones que son: When the exception os threown: Es cuando la excepcin ocurre y se aconseja configurarlos en Continue If the exception is not handled: Ocurre cuando la excepcin no es controlada, es decir cuando no existe controlador de error, es aconsejable que est en Break into the debugger.Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Ambos momentos tienen 3 opciones o formas de control, que son: Break into the debugger: Para y muestra el depurador con la lnea donde ocurri el error en tiempo de ejecucin. Continue: Continua la ejecucin del programa. Si no existe controlador Finaliza la ejecucin del programa. Use parent setting: Indica que se va a usar la configuracin de la opcin de nivel superior o padre. Laboratorio 1 El presente laboratorio tiene como objetivo conocer el Entorno de Visual Studio.NET y usar algunas caractersticas nuevas del Lenguaje Visual Basic.NET, as como implementar MultiThreads y Controlar Excepciones. Este primer laboratorio est dividido en 2 ejercicios que tienen una duracin aproximada de 35 minutos. Ejercicio 1: Reconocimiento VB.NET y Trabajando con el Lenguaje Duracin 20 minutos Empleo de Textbox Establecer las siguientes propiedades: Control Textbox1 Textbox2 Textbox3 Textbox4 Textbox5 Label7 Propiedad Name Maxlength Text Name Maxlength Text Name Text Name Text Name Text Name Autosize Font Text TextAlign Name Autosize Font Text TextAlign Name Text txtCodigo 4 txtNombre Upper txtCurso txtParcial txtFinal lblPromedio True Arial, 10pt,style=Bold MiddleCenter lblObs True Arial, 12 pt,style=Bold MiddleCenter btnNuevo &NuevoWeb Developer Microsoft.NET

Valor

Label8

Button1

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Button2 Form1

Name Text Name CancelButton Text FormBorderStyle Icon StarPosition

btnSalir &Salir frmDemo01 btnSalir Empleo TextBox Sizable Sun.ico CneterScreen

Figura 3.15: Diseo del Formulario

Public Sub Calcular() Try If Trim(txtParcial.Text) "" And Trim(txtFinal.Text) "" Then Dim iParcial As Integer = CType(txtParcial.Text, Integer) Dim iFinal As Integer = CType(txtFinal.Text, Integer) Dim iPromedio As Integer = Math.Round((iParcial + iFinal) / 2, 0) If iPromedio > 10 Then lblPromedio.ForeColor = Color.Blue lblObservacion.ForeColor = Color.Blue lblObservacion.Text = "APROBADO" Else lblPromedio.ForeColor = Color.Red lblObservacion.ForeColor = Color.Red lblObservacion.Text = "DESAPROBADO" End If End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Private Sub txtCodigo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCodigo.TextChanged If Len(Trim(txtCodigo.Text)) = 4 Then txtNombre.Focus() End If End Sub Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click Dim miControl As Control For Each miControl In Me.Controls If TypeOf miControl Is TextBox Then miControl.Text = "" Next lblPromedio.Text = "" : lblObservacion.Text = "" txtCodigo.Focus() End Sub Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click End End Sub Private Sub txtNombre_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtNombre.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then txtCurso.Focus() End If End Sub Private Sub txtCurso_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCurso.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then txtParcial.Focus() End If End Sub Private Sub txtParcial_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtParcial.TextChanged Calcular() End Sub Private Sub txtFinal_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFinal.TextChanged Calcular() End Sub Finalmente, ingrese a la carpeta bin de Lab01 y observe dos archivos: uno ejecutable (extensin exe) y otro archivo intermedio (extensin pdb), (Cul de estos es conocido como Asseblie). Ejercicio 2: Implemento Multi Thread y Control de Excepciones Duracin: 15 minutos

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Ingrese a Visual Studio.NET y del men File elegir y luego Project o simplemente pulsar [Ctrl] + [N], luego elegir un tipo de proyecto Visual Basic y una plantilla de Aplicacin Windows, seleccionar como ubicacin de carpeta C:\\vbnet\Labs y como nombre ingresar Lab01_2.

Se va a crear una aplicacin en la que se implemente mltiples threads para iniciar la lectura de un archivo de texto extenso y poder cancelar este proceso si es necesario, adems para evitar los errores en tiempo de ejecucin haremos uso del control estructurado de excepciones visto en este mdulo.

Primero en la ventana del Solution Explorer seleccionar el nombre del formulario y en la ventana de propiedades escribir en la propiedad FileName el nombre frmArchivo.vb. Realizar el diseo del formulario similar al presentado aqu abajo: Figura 3.17: Diseo del formulario frmArchivo

Declarar una variable llamada Hilo de tipo trread y definir una subrutina que lea el archivo de texto cuya ruta y nombre est especificado en el cuadro de texto, esta rutina usa Try.Catch.Finally para controlar errores en tiempo de ejecucin. Dim Hilo As System.Threading.Thread Sub LeerArchivo ( ) Dim Flujo As System.IO.StreamReader Dim Lines As Strings Try Flujo = System.IO.File.OpenText(txtNombre.Text) no Untitl IsNothing (Linea)Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Linea = Flujo.ReadLine TxtArchivo.Text = txtArchivo.Text + Lnea + Chr(13) + Chr (10) Loop Carch x An IO.IOException MagBox(X.Message,MsfBoxStyle.Information, No se pudo) txt.Nombre.Clear( ) Exit.Sub End.Try Flujo.Close ( ) btnSuspender.Enabled = False btnContinuar.Enabled = btnCancelar.Enabled = End Sub Escribir cdigo en el evento TextChanged de txtNombre y en los eventos Click de los Botones Private Sub txtNombre_TextChanged(ByVal sender As...)Handles BtnLeer.Enabled = txtNombre.Text Private Sub btnLeer_Click(ByVal sender As...) Handins Hilo = New System.Threading.Thread (AddressOf LeerArchivo) Hilo.Start ( ) btnSupender.Enabled = True btnCancelar.Enabled = True End Sub Private Sub btnCancelar_Click(ByVal sender As...) Handles Hilo.Abort ( ) btnLeer.Enabled = False btnSuspender = Enabled = False btnCancelar.Enabled = False End Sub Private Sub btnNuevo_Click(ByVal sender As...) Handles txtNombre.Clear ( ) txtArchivo.Clear ( ) txtNombre.Clear ( )Web Developer Microsoft.NET

False False

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

End Sub Private Sub btnSuspender:Click(ByVal sender As...) Handles hilo.Suspend ( ) btnLeer.Enabled = False btnSuspender = Enabled = True btnCancelar.Enabled = False End Sub Private Sub btnContinuar:Click(ByVal sender As...) Handles Hilo, Resume ( ) End sub Private Sub btnSalir:Click(ByVal sender As...) Handles Me.Close ( ) End Sub Finalmente, grabar y ejecutar la aplicacin

CAPITULO 4: CREANDO APLICACIONES PARA WINDOWS Usando Windows Forms Introduccin Windows es una clase base del Marco.NET usada para crear aplicaciones que corrern sobre Windows, esta se encuentra disponible al elegir en Visual Basic la plantilla Windows Application. Al elegir una aplicacin para Windows automticamente se realizan los siguientes cambios: En el ToolBox aparecer una ficha llamada Windows Forms conteniendo los controles para trabajar con Formularios Windows y Controles de Usuario. En el Cdigo del formulario aparecer la referencia a la clase base heredada: Inherets System.Windows, Form.Form Para ilustrar mejor la funcionalidad que podemos obtener de Windows tenemos la figura 4.1, que resumen los principales objetos usados en Windows, para lo cual se parte de la clase base llamada System, luego se muestran algunos de los objetos de la clase Drawing y de la clase Winforms anteriormente comentadas Cabe comentar que dentro de la clase Windows, encontramos definido el formulario y los controles para Windows (Label, Button, TexBox, Menu, etc.), as como tambin algunos objetos no visuales de utilidad como Application(reemplaza al objeto App de VB6), Clipboard, Help, Screen, etc.)Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Objeto Formulario El objeto formulario Form es el contenedor principal de toda aplicacin para Windows y se encuentra en el siguiente NameSpace: System.Windows.Forms.Form En Visual Studio.Net el formulario ha sufrido muchos cambios, tanto en propiedades mtodos y eventos, tal como se muestra en los siguientes cuadros. Propiedades Propiedades Autocroll Backcolor BackgrondImage BorderStyle ControBox Cursor Descripcin Es una nueva propiedad que permite desplazarse por el formulario a travs de una barra si es que los controles sobrepasan el rea cliente. Especificar el color de fondo del formulario Antes llamada Picture: Permite mostrar una imagen de fondo sobre el formulario, tiene 2 tamaos: cascada y centrado en pantalla Controla la apariencia del borde del formulario y los controles que se presentan en la barra de titulo. Tiene 6 opciones Si esta en True muestra el men de controles de la barra de ttulo, si esta en False no los muestra. Especificar el curso que aparecer al situar el mouse sobre el formulario. Antes era la propiedad MousePointes y si se quera un cursor personalizado se configuraba MouseIcon, ahora solo existe Cursor y sus grficas son vistas en la lista Configura la fuente de los textos de los controles ubicados en el formulario y de los textos mostrados con mtodos de dibujo. Especifica el colore del texto de los controles (excepto el TexBox) y de los textos mostrados con mtodos de dibujo. Determina el tamao de las rejitas que se muestran en tiempo de diseo para disear controles. Indica el icono del formulario, este se muestra en la barra de ttulo de la ventana y en la barra de tareas de Windows Determinar si es que el formulario es un MDL, antes se creaba un formulario MDI aadiendo del men Projet y un formulario hijo configurando la propiedad MDIChild en True. Ahora solo se configura para ambos la propiedad IsMDIContainer. Indica la posicin del formulario con respecto a la esquina superior izquierda de la pantalla. Antes haba que configurar la propiedad Top y Left, ahora los valores de X e Y. Es una nueva propiedad , que indica la forma devisualizacion del formulario, que puede ser desde opaco (100%) hasta transparente (0%). Antes para hacer transparente se usaba la API SetWindowRgm Determina la alineacin de los textos con respecto a sus controles, por defecto es No, es decir se alinea de izquierda a derecha, si es True se alinearn de derecha a izquierda Configura el tamao del formulario no pixeles Indica la posicin e que aparecer por primera vez el formulario con respecto a la pantalla. Tiene 5 opciones Antes se llamaba Caption y permite mostrar el texto de la barra de ttulo en el formulario Posiciona en primer plano la ventana, siempre y cuando no este desactivada. Antes se poda hacer esto con la API WindowsOnTop. Determina la forma en que se presentar la ventana, puede ser Normal,Web Developer Microsoft.NET

Font Forecolor GridSize Icon IsMDIContainer

Location Opaciti RigfRToLeft Size StartPosition Text TopMost WindowsState

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Minimizada o Maximizada. Mtodos Descripcin Activa el formulario y le da el foco Activa un control del formulario Cierra un formulario descargndolo de la memori Pone el foco sobre el formulario Oculta el formulario, sin descargarlo de la memoria Repinta el formulario y sus controles Ubica el formulario en una cierta posicin de la pantalla Configura el tamao de la ventana en pxeles Muestra un formulario como ventana no modal (modeles) Muestra un formulario como ventana modal (modal)

Propiedades Active ActivateControl Close Focus Hide Refresh SetLocation SetSize Show ShowDialog Eventos

Propiedades Activated Click Closed Closing Deactivated DoubleClick GotFocus Load LostFocus MouseEnter MouseLeave Move Paint Resize Uso del ToolBox

Descripcin Ocurre al activarse el formulario Se desencadena al dar clic con el mouse sobre el formulario Se habilita al cerrar el formulario. Es similar al evento. Unload de Visual Basic 6. Ocurre mientras se est cerrando el formulario. Es similar al evento QueryClose de Visual Basic6. Tambin se puede cancelar la salida Ocurre al desactivarse el formulario Se desencadena al dar doble clic con el mouse sobre el formulario Ocurre al ingresar el foco sobre el formulario Se produce al cargar los controles sobre el formulario Ocurre al salir el foco del formulario Se habilita al ingresar el mouse sobre el rea cliente del formulario Se habilita al salir del mouse del rea cliente del formulario Este evento se habilita al mover la ventana o formulario Ocurre al pintarse la ventana en pantalla. Ocurre cada vez que se modifica de tamao el formulario

El TooBox es la caja de herramientas donde se encuentran los controles que se van ha usar para disear la interface de los diferentes tipos de aplicaciones, este vara de acuerdo al tipo de plantilla elegida. A continuacin se presenta el ToolBox cuando elegimos una plantillaWindows Application; este presenta varias fichas Windows Forms, Data, Components y General. Figura 4.2: ToolBox para Aplicaciones Windows

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Para usar un control del TooBox solo hay que elegir la ficha adecuada y luego seleccionar el control y arrastrarlo sobre el formulario o contenedor donde se desea ubicarlo, tambin se puede dar doble clic sobre el control y aparecer por defecto en la posicin 0.0 del formulario (antes se ubicaba al centro de ste). Usando Controles para Windows Forms Utilizacin de Listas.

Establece las siguientes propiedades: Control Propiedad ValorWeb Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Textbox1 Button1 Button2 Button3 Button4 ListBox1

Label3

Form1

Name Text Name Text Name Text Name Text Name Text Name Autosize Font Text Name Autosize BorderStyle Font Text TextAlign Name Text FormBorderStyle StartPosition

txtNombre btnAgregar &Agregar btnEliminar &Eliminar btnLimpiar &Limpiar Todo &btnSalir Salir lstAmistades True Arial, 10pt,style=bold lblTotal True Fixed3D Arial, 12pt,.style=Bold MiddleCenter frmDemo01 Empleo Listas Sizable CenterScreen

En las versiones anteriores de visula basic era muy practico emplear los array de controles de tal forma que podriamos compartir funcionalidades entre una serie de controles, y cuando se requiera saber que control estaba lanzando el evento empleabamos el index En visual basic.NET para poder tener el efecto de un array de controles. Necesitamos conectar un metodo a multiples eventos, a partir de alli puede hacer uso del parametro sender para identificar que control provoco el evento. Para comprobar eso agregar el siguiente codigo, debajo del windows form designer: Public Sub Procesa(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click, btnEliminar.Click, btnLimpiar.Click, btnSalir.Click Dim BotonSeleccionado As Button BotonSeleccionado = CType(sender, Button) With lstAmistades Select Case BotonSeleccionado.Name Case "btnAgregar" .Items.Add(txtNombre.Text) txtNombre.Text = "" : txtNombre.Focus() Case "btnEliminar" .Items.Remove(.SelectedItem) Case "btnLimpiar" .Items.Clear() Case "btnSalir" End End Select lblTotal.Text = .Items.Count End With End Sub INTERFACES IntroduccinWeb Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Una interfase es el medio de comunicacin entre dos entidades, en nuestro caso, la interface sirve de enlace entre el usuario y la aplicacin. En la evolucin de la computacin se inicia con interfaces de texto o de consola, las cuales predominan desde ls inicios de la computacin hasta casi la mitad de la dcada del ochenta, luego aparecen las interfaces grficas. Desde que trabajamos en ambiente Windows, las interfaces han ido evolucionando de acuerdo a la facilidad del usuario para acceder a los elementos de la aplicacin, y entre las principales intefaces tenemos: SDI (single Document Interfce) : Interface de simple documento muetra una sola ventana con un cierto documento en la aplicacin; El acceso a las ventanas es secuencial por lo que no es tan recomendable. Algunas aplicaciones con SDI son los accesorios de Windows. Block de notass, Point, Worpad, etc. MDI. (MultipleDocument Interface) : Interface de multiples document, muestra varios documentos en sus respectivas ventanas, las cuales aparecen sobre una ventana principal; el acceso a las ventanas es directo porque generalmente en la ventana padre existe un men. Algunas aplicaciones con MDI son los programas de Office:Word y Excel. TreeView-ListView (Vistas Arbol Lista) : Muestra los elementos de la aplicacin en un rbol (TreeView) y en elado derecho muestra una lista con los detalles (List View) ; puede mostrarse junto a un SDI, como en el caso del Explorador de Archivos de Windows o puede mostrarse junto a un SDI como en el caso del Entrerprise Manager de SQL Server 6 o Superior. Con la evolucin de Internet tambin se distinguen diferentes tipos de interfaces en el Browser, pero que no se tocan en este captulo, sino que nos centraremos en la creacin de interfaces para aplicaciones Windows. CREANDO APLICACIONES MDI Una aplicacin MDI consta de dos partes: Un formulario MDI padre y uno o ms formularios MDI hijos, la creacin de ambos es muy sencilla en VB . NET y se aplica a continuacin: CREANDO UN FORMULARIO MDI PADRE Para crear un formulario MDI padre solo hay que configurar la propiedad IsMDI Container del formulario a True. A diferencia de la version anterios de Visual Basic, esta versin permite colocar cualquier control Winform dentro del formulario MDI, pero esto har que los formularios hijos se muestren en segundo plano, ya que en primer plano se ver los controles del formulario MDI padre. CREANDO UN FORMULARIO MDI HIJO Para crear un formulario MDI hijo, solo hay que configurar la propiedad PARENT (Disponible solo en tiempo de Ejecucin) del formulario hijo apuntar al formulario padre y luego usar el mtodo Show para mostrarlo. El siguiente cdigo muestra como mostrar un formulario hijo desde un men: Protected sub mnu archivo- Nuevo-clic (ByVal sender Objet,...) Dim X As New frmHijo() X. MDIParent=frmPadre X. Show() End sub ORGANIZANDO FORMULARIOS MDI HIJOS

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Si es que desea organizar los formularios MDI hijos se debe usar el mtodo LAYOUTMDI, del formulario MDI padre junto con una constante de tipo MDILAYAOUT, que tiene 4 valores: Arrangelcons, Cascade, TileHorizontal y TileVertical. Acontinuacin se muestra como ordenar en cascada los formularios MDI hijos de un formulario MDI Padre llamado frmPadre: Frmpadre.layoutMDI(MDILayout.Cascade) CONTROLES TREEVIEW Y LISTVIEW Estos dos controles casi siempre trabajan juntos, uno muestra los elementos de la aplicacin y el otro su contenido o detalle, antes estaban disponibles como controles activeX, ahora en VB.NET estan disponibles como controles del WinForm. Ambos controles generalmente usan imgenes para mostrar los elementos, por lo cual plrimero veremos el uso del control ImageList para almacenar imgenes de las vistas. TRABAJANDO CON EL IMAGELIST. Para llenar una lista de imagenes realice los siguientes pasos: Doble clic al control ImageList del ToolBox y se mostrar en la parte inferior de diseados de formularios. Conigurar la propiedad Name usando el prefijo ils, seguido del nombre y la propiedad imagesize que define el tamao de las imgenes: 16,32,48, etc. Seleccionar la propiedad image que es una coleccin y pulsar sobre el botn, entonces aparecer el dilogo Image collection Editor en el cual se aadir as imgenes con el botn Add y se eliminar con remove Ejemplo: En el siguiente ejemplo se demuestra de cmo utilizar un control MainMenu en un formulario, inicie una nueva aplicacin de tipo Winforms asgnele el nombre Ejercicio01 y realice los siguientes pasos: 1. Debe de Agregar un cuadro de texto al cual en la propiedad multiline debe asignarle el valor true, la representacin final sera como lo muestra la siguiente imagen: 2. Luego debe agregar un control de MainMenu y configurar de acuerdo a las siguientes representaciones.

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

3. A cada opcion del menu asignale un nombre que llev relacion, por ejemplo al menu archico asignale en la propiedad Name: archivoMenuItem, a la opcion Cerrar el name: cerrarMenuItem y asi sucesivamente con cada una de las opciones del menu. para poder representar la linea de divisin de Menu Edicin debe de colocarse en la propiedad text un smbolo de guion (-) 4. Agregar el siguiente codigo: Private Sub CerarMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click Me.Close() End Sub Private Sub CopiarMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click TextBox1.Copy() End Sub Private Sub PegarMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem5.Click TextBox1.Paste() End Sub Private Sub LimpiarMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem6.Click TextBox1.Clear() End Sub 5. Ejecute el programa en el cuadro de texto digite Business Developer, seleccione lo digitado y del menu Edicin seleccione la opcion copiar, borra el contenido del cuadro de texto con la opcion Limpiar Todo y luego del menu Edicin seleccione Pegar, finalmente del menu Archivo seleccione Cerrar. Creando Windows Control Existen Tres Formas o tcnicas para la creacin de nterfaces de usuario personalizadas las cuales son: Heredar desde un control Construir un Control compuesto Definir desde una clase Control Construir un control heredado de otro control Implementar un cuadro de texto numerico Como ejemplo crearemos un control que solo permita entradas numricas esto nos hace pensar en el control Textbox que permita el ingreso de cualquier carcter. El nuevo control heredado debe de cumplir con las siguientes consideraciones: Permitir solo digitos Permite la entrada del punto decimal Permite el ingreso del signo menos , pero solo en la primera opcion Todos los demas caracteres deben ser ignorados por el control Para desarrollar debemos de seguir las siguientes instrucciones: 1.Iniciar un nuevo proyecto de tipo windows Control Library, Complete la informacin de acuerdo a la siguiente representacin y pulse OK.

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

2. Seleccione del menu Project la opcion de code o pulsar la tecla de funcin F7 3. Renombre la clase empleando la descripcin CuadroTextoNumerico en vez de Usercontrol1. 4. Reemplzar la sentencia Inherits System.Windows.Forms.UserControl por la siguiente: Inherits System.windows.Forms.Textbox 5 .Siguiente paso es agregar la funcionalidad requerida. En nuestro caso debemos controlar los ingresos que se realicen en el cuador de texto, para ello programaremos en el evento KeyPress, para seleccionar dicho evento seleccione las listas como se muestra en la siguiente representacin

6. En el evento seleccionado agregar el siguiente codigo: Private Sub CuadroTextoNumerico_KeyPress(byval sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress Dim keyascii As Integer keyascii = Asc(e.KeyChar) Select Case keyascii Case 48 To 57, 8, 13 Case 45 If InStr(Me.Text, "-") 0 ThenWeb Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

keyascii = 0 End If If Me.SelectionStart 0 Then keyascii = 0 End If Case 46 If InStr(Me.Text, ".") 0 Then keyascii = 0 End If Case Else keyascii = 0 End Select If keyascii = 0 Then e.Handled = True Else e.Handled = False End If End Sub

7. Pulsar la combinacin Ctrl+shift+B y grabe su aplicacin8. Del menu File, seleccione la opcion Add Project y haga clic en New Project 9. Complete de acuerdo a la siguiente representacion

10. Sobre el toolbox de la aplicacin cliente haga clic derecho y seleccione customize Toolbox, luego selecione .Net Framework componets como muestra la siguinte representacin:

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

11. Pulse el boton Browse y seleccione el archivo CuadroTextoNumerico.dll y pulse Open luego pulse el boton OK. 12. Desde el ToolBox aada el control CuadroTextoNumerico al formulario, la representacin sera la siguiente:

13. En la ventana del solution Explorer haga clic derecho sobre el proyecto ClienteCuadroTextoNumerico y seleccione la opcion Set Up As Startup Project, tal como lo muestra la siguiente representacin:

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

14. Grabe y ejecute su aplicacin Modificar la funcionalidad al control Como habra notado el ejcutar la aplicacin encontramos que la descripcin CuadroTextoNumerico1 aparece como contenido del control que acabamos de crear esto podria ocasionar confusin al usuario si tomamos en cuenta las funcionalidades del control, por lo tanto tenemos que realizar un ligero cambio en la propiedad Text de nuestro control de tal manera que si la descripcin que se le asigen a dicha propiedad contiene letras esta no se muestra al momento de ejecutar el programa. Para ello al final del codigo que evalua los caracteres digitados , modifiquen el comportamiento de la propiedad Text con el siguiente Codigo: Public Overrides Property Text() As String Get Return MyBase.Text End Get Set(ByVal Value As String) If IsNumeric(Value) Then MyBase.Text = Value End If If Value = Nothing Then MyBase.Text = Value Exit Property End If End Set End Property Al ejecutar su aplicacin ya no observara la descripcin que aparece por defecto en la propiedad Text del control personalizado.

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

INTRODUCCIN AL ACCESO A DATOS Entendiendo ADO.NET ADO.NET es un modelo de programacin basado en estndares que permite crear aplicaciones distribuidas que accedan a datos compartidos. Por ser una Interfase de Programacin de Aplicaciones (API), est disponible desde muchas aplicaciones, herramientas de desarrollo, lenguajes de programacin y navegadores de Internet. Entre los Software donde podemos usar ADO.NET tenemos: Visual Basic.NET Visual C++.NET Visual C# ASP.NET Jscrip.NET

Esta nueva versin de ADO ofrece ventajas significativas con respecto a las versiones anteriores que podemos resumirlas en dos, las cuales se detallan ms adelante:

Interoperabilidad: Formado de transporte universal XML Escalabilidad: DataSet, desconectado aumenta la concurrenciaAl igual que ADO,ADO.NET permite acceder a todo tipo de orgenes de datos, ya sean planos como archivos de texto, bases de datos relacionales como MS Acceso o MS SQL Server, y documentos de diferente tipo como Word, Excel, etc. En el caso de aplicaciones que requieran acceder a datos comparativos, por ejemplo en una pgina Web de Internet, se utilizan datos desconectados, intercambindose a travs de XML los datos. Las ventajas de usar DataSet y enviarlos a travs de XML en ADO.NET es que no requiere de ninguna infraestructura adicional, lo que se enva es texto; en cambio, en ADO se requera del Marshalling que es administrado por COM, por lo que haba que tener la arquitectura adecuada para realizar esto (Servidor Windows con MTS). Las ventajas de usar DataSet y enviarlos a travs de XML en ADO.NET es que no requiere de ninguna infraestructura adicional, lo que se enva es texto; en cambio, en ADO se requiera del Mashalling que es administrado por COM, por lo que haba que tener la arquitectura adecuada para realizar esto (Servidor Windows NT con MTS). Otra ventaja de ADO.NET es que para operaciones de mltiples actualizaciones concurrentes, en el caso de que trabajen cientos o miles de usuarios con los datos, el bloqueo es inmediato y no mantiene conexiones abiertas debido a que los DataSet trabajan con el concepto de datos desconectados. Diferencias entre ADO y ADO,NETWeb Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Para entender las nuevas caractersticas y ventajas de ADO.NET vamos a realizar un cuadro comparativo con la versin anterior de ADO. Caractersticas ADO Representacin de Datos Usa el objeto Recordsel el cual se en memoria comporta como si fuese una simple tabla Relacin tablas varias Se realiza mediante una consulta con JOIN unindose el resultado en una simple tabla. Navegacin de datos Se recupera un conjunto de registros secuencialmente entre ADO.NET Usa el objeto DataSet, el cual puede contener una o ms tablas representadas por DataTables Tiene el objeto DataRelation que permite asociar registros entre dos DataTables. Acceder a los registros de forma no secuencial, para lo cual sigue las relaciones entre los registros de una t abla con otra relacionada. Se comunica con la BD a travs de llamadas estandarizadas al objeto DataAdapter, el cual se comunica con un proveedor. Una XML para transmitir datos desde el origen da datos a una aplicacin.

Acceso desconectado

El acceso desconectado se implementa a travs del Recordset y el acceso conectado se da a travs del objeto Connection

Programabilidad

Usa el objeto Connection para transmitir comandos direccionandolos a un origen de datos. Compartir datos Usa el Marshalling de COM para desconectados entre transmitir un Recordset niveles o componentes desconectado. Solo est disponible para tipos de datos definidos por el estndar COM. Transmisin de datos a Es complicada la transmisin, por travs de Firewalls cuanto los Firewalls impiden el pedido de datos a nivel de sistema, que es el caso de COM. Escalabilidad

Se transmite mediante DataSet grabado en un archivo XML, este soporta cualquier tipo de datos y no requiere conversin de tipos. Es soportada, porque los objetos DataSet de ADO.NET viajan a travs de XML que es basado en HTML que puede pasar libremente a travs de Firewalls El bloqueo a la base de datos y el El acceso desconectado mantenimiento de conexiones permite retener lo menos activas limitan los recursos de las posible las conexiones abiertas bases de datos y el bloqueo dando una gran escalabilidad

Arquitectura de ADO.NET Para entender ADO.NET es necesario conocer la arquitectura y forma de trabajo de ste, que se basa en el objeto DataSet que es una copia de los datos en la memoria del cliente y por tanto trabaja desconectado, para comunicarse con el origen de datos se utilizan los proveedores administrados, tal como se muestra en la figura de abajo.

Figura 5.1 Forma de trabajo de ADO.NET

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

El transporte de datos tanto desde y hacia el origen de datos se hace a travs de XML favoreciendo el intercambio de datos entre diferentes tipos de plataformas, favoreciendo el desarrollo de aplicaciones Cliente/Servidor que integren aplicaciones entre negocios (BtoB)

Herramientas de Datos Las Herramientas de Datos son el medio ms rpido y sencillo para crear aplicaciones que acceden a datos. En Visual Studio.NET tenemos varias herramientas que hacen el trabajo con datos ms fcil, entre las cuales podemos menciona:

Server Explores DataAdapter Wizard Men Data

Server explorer Esta ventana muestra bsicamente dos cosas. Las Conexiones activas a Bases de Datos, como por ejemplo MS Access, SQL, etc, y los Servidores instalados en la red, cada Servidor a su vez visualiza los diferentes servicios tales como eventos de errores, colas de mensajes, servicios Windows y Web, servicios de datos, tal como se muestra en la siguiente figura.

Figura 5.3 Ventana del Server Explores

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Creando una Conexin con el Server Explorer En este mdulo como lo que nos interesa es acceder a datos, lo primero que debemos hacer es aadir una conexin a alguna Base de Datos, en nuestro caso la BD se llama Nort Wind y se encuentra en el Servidor SQL Server llamado Lduenas, para lo cual usaremos la ventana del Server Explores, realizando los siguientes pasos: Dar clic derecho sobre la opcin Data Conecctions del Server Explorer y elegir del men contextual la opcin Add Connetion. Se mostrar la ventana de enlace a datos, similar a la de Visual Basic 6 usada al crear una conexin con el Data Environment. Por defecto aparece la ficha Connetion con una conexin a SQL Server, pero si queremos acceder a otro origen de datos elegir la primera ficha Provider y modificar el proveedor OLEDB, de lo contrario llenar la propiedad de conexin.

Figura 5.4 Ventana de Enlace de Datos

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

En el paso 1 seleccionar de la lista el Servidor de Datos al cual se quiere conectar; si es remoto y no aparece, ha que escribir su nombre, por ejemplo: Lduenas.

En el paso 2 especificar el tipo de seguridad que puede ser Integrada Windows NT o Estndar (SQL Server), si se elige Estndar ingresar el usuario y password de la Base de Datos, por ejemplo como usuario ingresar sa sin password.

En el paso 3 elegir la Base de Datos a la cual se quiere conectar, en nuestro caso North Wind. Probar la conexin dando clic en el botn Test COnnection y si la respuesta es satisfactoria dar clic en el botn OK.

Finalmente, se habr creado la conexin que se mostrar en la ventana del Server Explorer.

Accediendo a Datos con el Server Explorer Una vez creada la conexin al origen de datos podemos explorar el contenido de la base de datos y ver sus tablas, vistas o consultas, y procedimientos almacenados (en el caso de SQL Server), tal como lo muestra la siguiente figura. El Server Explorer realiza el mantenimiento de una aplicacin sin tener que ir hasta la mquina donde se encuentra el servidor del datos, es decir, podemos crear, modificar y eliminar objetos como tablas, vistas o consultas, procedimientos almacenados, etc.

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Por ejemplo, si se quiere ingresar un empleado a la tabla Employees solo basta dar doble clic sobre el nombre de la tabla y se mostrarn todos los registros, ubicarse al final e ingresar los datos del empleado (excepto su cdigo que es a utogenerado). Para cualquier otra operacin solo basta dar clic derecho sobre la tabla y aparecer: Creando Aplicaciones de Datos con el Servidor Explorer Para los desarrolladores, el Server Explorer tambin da la posibilidad de crear aplicaciones de manera simple y rpida. Por ejemplo, si queremos realizar una aplicacin que muestre la lista de empleados, realice los siguientes pasos: Crear una aplicacin para Windows y colocar un control DataGrid sobre el formulario al cual le puede llamar dgdEmpleado. Expandir la tabla Employees del Server Explorer y elegir los campos que se desean mostrar, por ejemplo: EmployeeId, LastName, FirstName y Title, Arrastrar los campos hacia el formulario y se crearn dos objetos: Sq[Conecction] y Sq[DataAdapter] los cuales se vern en la zona de diseo. Dar clic derecho sobre el objeto Sq[DataAdapter] y elegir del men contextual Generate Dataset... y aparecer la siguiente ventana. Figura 5.7 Ventana de Generar Dataset

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Seleccionar la opcin New y escribir el nombre del Dataset, en nuestro ejemplo: dstEmpleado y dar clic en OK e inmediatamente se crear un objeto Dataset sobre el diseador llamado dstEmpleado1 Finalmente, para que se muestre los datos en tiempo de ejecucin hay que agregar el siguiente cdigo en el evento Load del formulario: SqlDataAdapter1.Fill(DstEmpleado1)

DataAdapter Wizard

El DataAdapter Wizard es un asistente que permite crear un objeto Conection y un objeto DataAdapter. Este ltimo permitir crear el Dataset que es el que contiene los datos y permite realizar actualizaciones sobre la base de datos. Como existen dos proveedores de datos.NET, existen dos formas de usar el asistente: 1. SqlDataAdapter 2. OledbDataAdapter En nuestro caso, vamos a indicar como crear un DataAdapter para la tabla Product de la BD NorthWind usando el Sq1DataAdapter, para lo cual se realiza lo siguiente: Dar doble clic al botn Sq1DataAdapter de la ficha Data del Too1Box. Se mostrar el Paso 1 del Asistente de Configuracin del DataAdapter Damos clic en el botn Next del Paso 1 que nos muestra la utilidad del DataAdapter Wizard.

En el Paso 2 se debe especificar la Conexin que usar el DataAdapter, si es que ya ha sido creada solo debemos elegirla de la lista, pero sino daremos clic en el botn New Conecction y seguiremos los pasos vistos en el tema anterior para crear la Conexin. Despus de especificar la conexin clic en el botn Next y pasaremos a la ventana del paso 3 donde se elige la forma como se quiere crear la Consulta, la cual puede ser de tres formas: a travpes de una Sentenc ia SQL (Select, Insert y Delete), un nuevo Store Procedure o uno existente. En nuestro caso elegimos la opcin por defecto: Usar una Sentencia SQL y clic en el botn Next, apareciendo la ventana del Paso 4 que pide escribir el Comando, tal como lo muestra la Creamos la consulta escribiendo la sentencia SQL, sino elegimos el botn del Q uery Builder que crea consultas de manera simple, cuya apariencia se muestra en la figura.

Figura 5.12 Ventana del Query Builder

Mtodos Descripcin Inicia una transaccin que se ejecuta de acuerdo a un cierto nivel de aislamiento, que puede ser de lectura confiable y noWeb Developer Microsoft.NET

Mtodo Begin Transaction

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

ChangeDataBase Close CreateCommand Open

confiable, serializable, etc. Cambia la base de datos a la cual nos conectamos Cierra la conexin a la base de datos Crea un objeto Command asociado con la conexin abierta Abre la conexin hacia el origen de datos de acuerdo a la cadena de conexin

Eventos Ocurre cuando el origen de datos enva un mensaje a la aplicacin, por ejemplo cuando ocurre un error de integridad referencial Ocurre cada vez que se modifica el estado de la conexin, es decir, cuando cambia el valor de la propiedad State.

InfoMessage

StateChange

Crear una Conexin Usando SQLClient: Imports System.Data.SqlClient Dim en As SglConnection=New SqlConnetion (User Id=sa;Password=_Data Source=Iduenas:Initial Catalog=Nortwind)

Usando Oledb Imports System.Data.Oledb Dim en As OledbConnection=New Oledb Connetion (Provider SQLOLEDB;;_User Id=saPassaword; Data Source=Iduenas:Initial Catalog=Nortwind)

Cerrar una Conexin En Close

Men Data El Men Data aparece cuando se crea un DataApadter que accede a da tos, este men contiene varias opciones, entre las principales: 1. Generar Dataset 2. Preview de Datos

Generar Dataset

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Esta opcin del men Data permite generar un conjunto de registros desconectado o DataSet, para lo cual, se tiene que ingresar el nombre del DataSet y especificar que se desea aadir una instancia de la clase DataSet dentro del programa, tal como se mostr en la figura 5.7 al usar el Server Explorer.

En nuestro caso, continuando con el ejemplo anterior de mostrar los productos elegir la opcin new y escribir dstProducto, luego OK e inmediatamente se aadir un objeto DsProducto1 al diseador.

Para que se vean los productos en tiempo de ejecucin aadir en el evento Load del formulario el siguiente cdigo: DgdProducto.DataSource = DsProducto1.Tables(0).DefaultView SqlDataAdapter1.Fill(DstProducto1) Nota: Si se desea ver las caractersticas del Dataset generado se selecciona el objeto y del Men Data se elige Dataset properties...

Preview de Datos Esta opcin del men Data es usada para mostrar una vista preliminar con los datos creados por el DataSAdapter, es decir los registros de cualquier tabla de un DataSet.

Al elegir esta opcin se presenta una ventana, en donde primero se debe elegir el DataAdapter, en el caso de que sea un Store Procedure con parmetros, podr configurarse el valor de los parmetros.

Luego, en la lista Data tables se presentarn todas las tablas que hayan sido creadas por el DataSet. Elegir una y dar clic en el botn Execute e inmediatamente se presentarn los datos, tal como se muestra en la figura de abajo.

Figura 5.13 Ventana del Preview de Datos

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Algo interesante, que cabe mencionar, es que esta herramienta muestra el tamao aproximado que ocupa los datos mostrados por el Data Table. Si se desea ejecutar una nueva vista de datos, se da clic sobre el botn Clear Results, se elige un nuevo Data Table y clic en Fill Dataset. Para salir de esta herramienta dar clic en el botn Close o sobre el botn de cerrar de la ventana.

Objetos de ADO.NET Despus de ver la forma de acceder a datos mediante herramientas, ahora veremos como usar el modelo de objetos de ADO.NET el cual es a diferencia de su antecesor ADO 2.X totalmente distinto, ya que antes exista un solo modelo de objetos empezando por el componente OLEDB y las clases Connection, Command y Recordset. Ahora los objetos de ADO.NET se encuentra distribuidos en varios modelos de datos, dividindose en dos grupos: Proveedores de datos.NET y Dataset, los cuales se examinan a continuacin:

Objetos Connection y Comand Objeto Connection Se usa para establecer una conexin con el origen de datos y poder asegurar las transacciones que realizan las instrucciones o comandos sobre dicho origen de datos. Este objeto ha tenido muchos cambios con respecto a la versin anterior de ADO, para lo cual analizamos sus elementos.

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Propiedades Propiedad ConnectionString Connection TimeOut Descripcin Configura o devuelve la cadena de conexin que consta del proveedore, usuario, passaword, servidir y base de datos. Devuelve los segundos que puede esperar como mximo mientras trata de conectarse a la base de datos. Si se pasa DataBase PacketSise Provider ServerrVersin State WorkStationId del tiempo de espera se genera un error de conexin Obtiene el nombre del servidor al cual se ha conectado Muestra el tamao de los paquetes en bytes usados para comunicarse con el servidor de datos a travs de la red. Devuelve el nombre del Proveedor OLEDB Regresa la versin del servidor de d a tos que se est usando Devuelve el esta actual de la conexin, que puede ser abierta, en ejecucin, pausada o cerrada Obtiene el nombre del cliente que est conectado al servidor. Mtodos Mtodo Begin Transaction Descripcin Inicia una transaccin que se ejecuta de acuerdo a un cierto nivel de aislamiento, que puede ser de lectura confiable y no ChangeDataBase Close CreateCommand Open confiable Cambia la base de datos a la cual nos conectamos Cierra la conexin a la base de datos Crea un objeto Command asociado con la conexin abierta Abre la conexin hacia el origen del datos de acuerdo a la cadena de conexin. Eventos Evento InfoMessage Descripcin Ocurre cuando el origen de datos enva un mensaje a la aplicacin, por ejemplo cuando ocurre un error de StateChange integridad referencial Ocurre cada vez que se modifica el estado de la conexin, es decir, cuando cambia el valor de la propiedad State. Crear una Conexin Usando SQLClient Imports System.DataSq1Client

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Dim en As Sq1Connection=New Sq1Connection (User Id=sa;Password=;_DataSource=Ldueas; Initial Catalog=Northwind) Cn.open

Usando Oledb: Imports System.DataSq1Oledb Dim en As OledbConnection=New OledbConnection (Provider=SQLOLEDB:User Id=sa;Password=;_DataSource=Ldueas; Initial Catalog=Northwind) Cn.open

Cerrar una Conexin Cn.Close

Objeto Command Se usa para ejecutar instrucciones sobre el origen de datos, tales como ejecutar una consulta (Select), insercin (Insert), actualizacin (Update) o eliminacin (Delete) as como ejecutar un procedimiento almacenado del servidor de datos. Este objeto tambin ha tenido muchos cambios con respecto a la versin anterior de ADO, para lo cual analizamos sus elementos. Propiedades

Propiedad Command Text Command TimeOut CommandType

Descripcin Configura o devuelve la sentencia SQL, el nombre de la tabla o del procedimiento almacenado a ejecutar Devuelve los segundos que se puede esperar como mximo mientras trata de ejecutarse el comando Asigna o recupera el tipo de comando a ejecutar, que puede ser una instruccin SQL, una tabla o procedimiento

Connection Parameters

almacenado. Configura o devuelve la conexin que est usando el comando. Es una coleccin que guarda informacin de los parmetros de un procedimiento almacenado o una consulta con

Transaction

parmetros. Es un objeto que permite manipular transacciones, para esto cuenta con mtodos como: Begin, Commit y RollBack

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Eventos Evento InfoMessage Descripcin Ocurre cuando el origen de datos enva un mensaje a la aplicacin, por ejemplo cuando ocurre un error de StateChange integridad referencial Ocurre cada vez que se modifica el estado de la conexin, es decir, cuando cambia el valor de la propiedad State. Mtodos

Mtodo Cancel CreateParameter ExecuteNonQuery ExecuteReader ExecuteScalar Prepare

Descripcin Cancela la ejecucin de un comando Crea un objeto Parameter para trabajar con un parmetro de un procedimiento almacenado o consulta con parmetros Ejecuta una instruccin SQL y devuelve el nmero de registros afectados. Se usa para ejecutar Insert, Update o Delete Ejecuta una consulta SQL o un procedimiento almacenado de seleccin y devuelve los registros en un objeto DataReader. Ejecuta una instruccin SQL y devuelve un simple valor Crea una versin compilada o preparada del comando en el servidor. Es muy til para dar velocidad a la aplicacin.

Eventos

Evento FillError

Descripcin Ocurre cuando se produce un error al ejecutar el mtodo Fill del DataAdapter para llenar un conjunto de registros en el

RowUptated RowUpdating

Dataset. Ocurre despus de actualizar los registros de un Dataset cuando se invoca al mtodo Update del DataAdapter Ocurre mientras se est actualizando los registros de un Dataset cuando se invoca al mtodo Update del DataAdapter.

Llenar Datos con el DataAdapter

Como ejemplo vamos a llenar un DataGrid con todos los productos de la tabla Products usando el mtodo Fill del DataAdapter.

Usando SQLClient:Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Imports System.Data Imports System.DataSq1Client

Dim en As Sq1Connection=New Sq1Connection (User Id=sa;Password=;DataSource=Server; Initial Catalog=Northwind) Dim da As SqlDataAdapter=New Sq1DataAdapter(Select * From Products,cn) da.Fill (ds, Products) dgdproducto.DataSource = ds.Tables(0).DefaultView

Usando Oledb: Imports System.Data Imports System.Data.Oledb

Dim cn As OledbConnection=New OledbConnection (Provider=SQLOLEDB:User Id=sa;Password=;_DataSource=Ldueas; Initial Catalog=Northwind) Dim da As OledbDataAdapter=New OledbDataAdapter(Select * From Products,cn) Din ds As DataSet=New DataSet (Products) da.Fill (ds, Products) dgdProducto.DataSource = ds.Tables(0).DefaultView

Objeto DataReader El DataReader es una vista de datos de solo lectura (Read Only) y avance solo hacia delante (Forward Only) similar al cursor por defecto generado por el Recordset de ADO.. Este es especial para consultas y es el que consume menos recursos por ser una copia de registros desconectados del origen de datos.

Propiedades Propiedad Depth FieldCount IsClosed Item RecordsAffected Descripcin Devuelve el nivel de anidamiento del registro actual Devuelve el nmero de columnas o campos del registro actual Determina si el DataReader se encuentra cerrado Obtiene el valor del campo especificado en el ndice Devuelve el nmero de registros modificados, insertados o eliminado por una instruccin SQL.

Mtodos Propiedad Close Descripcin Cierra el objeto DataReaderWeb Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

GetDataTypeName GetFieldType GetName GetValue IsDBNull NextResult

Read

Devuelve el nombre del origen del tipo de dato Devuelve el tipo de dato del objeto Obtiene el nombre del campo especificado como ndice Obtiene el valor del campo especificado como ndice Devuelve un valor lgico indicando si el campo no tiene datos Avanza al siguiente conjunto de registros cuando la sentencia SQL que gener el DataReader es compuesta por varios Select. Lee un registro y avanza al siguiente registro, devolviendo True si es que no es el EOF y False si lo es:

Para ver un ejemplo de cmo crear un DataReader revisar el ejemplo del Objeto para crear una consulta de datos, el cual ejecutaba una consulta con el mtodo ExcecuteReader y la almacenaba en un objeto DataReader. Objeto DataSet Definicin El DataSet es el objeto principal de ADO.NET y representa un conjunto de datos en memoria, que pueden incluir tablas, relaciones, etc. Este objeto trabaja desconectado, enviando y recibiendo datos en formato XML. Es a travs del objeto DataSet que se implementa el trabajo con datos desconectados, debido a que este almacena los datos en una o ms tablas relacionadas, y sobre este se realizan las operaciones con los datos, tales como navegacin, filtro, bsqueda, etc. La ventana principal del DataSet es que es intercambiable en cualquier plataforma ya que el conjunto de registros no es binario sino texto en forma de XML, lo que permite integrar aplicaciones de diferentes plataformas con diferentes herramientas. Ahora vamos a analizar las caractersticas del DataSet, detallando sus propiedades, mtodos y eventos, tal como se muestra a continuacin.

Propiedades Propiedad DataSetName Default ViewManager EnforceConstraints ExtendedProperties HasErrors Tables Descripcin Asigna o devuelve el nombre del DataSet actual Obtiene una vista personalizada de registros para realizar operaciones de filtro, bsqueda y navegacin Determina si hubo una infraccin de una regla o restriccin de integridad de datos Obtiene la coleccin de informacin personalizada de usuario. Indica si existe un error en cualquiera de los registros de cualquier tabla del DataSet Es una coleccin de tablas o conjunto de registros

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Mtodos Mtodos AccepChanges Clear Clone Copy GetChanges HasChanges Merge RejectChanges Reset Eventos Evento MergeFailed Descripcin Ocurre al fallar la operacin de combinar el DataSet con otro. Descripcin Enva todos los cambios hechos hasta antes de su llamada Limpia el DataSet eliminando todas las tablas y sus registros Copia la estructura del DataSet en otro, incluyendo esquemas, relaciones y restricciones de las tablas Copia la estructura y los datos del DataSet en otro Obtiene una copia del DataSet con todos los cambios hechos Devuelve un valor lgico indicando si se ha insertado, eliminado o modificado registros en el DataSet Combina un DataSet con otro Deshace todos los cambios hechos hasta antes de su llamada Restaura el DataSet a su estado original

Objeto DataView Es una vista personalizada de los datos de una tabla, es el equivalente al objeto Recordset de ADO y permite ordenar, buscar y filtrar datos. Se pueden tener varias vistas de una misma tabla, flexibilizando el trabajo con datos.

Propiedades Propiedad AllowDelete AlowEdit AllowNew ApplyDefaultSort Count RowStateFilter Descripcin Indica si est permitido eliminar registros Indica si se pueden modificar registros Indica si se puede insertar nuevos registros Devuelve un valor lgico indicado si se est usando el orden por defecto de la vista Devuelve el nmero de registros de la vista Establece o devuelve el estado de los registros filtrados, que pueden ser iguales, adicionados, eliminados, modificados, etc. Ordena por uno o ms campos la vista.

Sort Mtodos Mtodo AddNew CopyTo Delete Find

Descripcin Aade una nueva fila o registro al DataView Copia los registros de la vista en un arreglo, solo usado en Web Elimina un registro especificado por el ndice Busca un registro por la clave primaria que coincida con elWeb Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

valor. Eventos Evento ListChanged Descripcin Ocurre al cambiar el conjunto de registros de la vista. ADO.NET y XML El eXtensible Markip Language (XML) es el lenguaje comn de intercambio de datos en Internet y es un estndar de la industria que se encuentra normado pro el 3WC (World Wide Web Consortium).

XML, es el ncleo sobre el cual est construido Microsoft.NET ya que en gran parte de las clases del FrameWork.NET se encuentra XML como medio para transmitir datos, por ejemplo en ADO.NET en ASPE,NET , sobre todo en los Servicios Wrb XML.

En cuanto a ADO.NET.XML se encuentra presente en el objeto DataSet que recibe y enva datos desde y hacia el origen de datos en forma de documento XML, pero que tambin tiene mtodos para leer y escribir el DataSet en un archivo XML, lo cual tratamos a continuacin.

Mtodo WriteXML Es un mtodo del DataSet que permite crear un archivo XML a partir de los datos de una Tabla del DataSet. Es muy til realizar esto cuando se quiere enviar la informacin a otra plataforma que solo puede procesar archivos de texto, tal como un AS/400 o una Mainframe. Para crear un archivo.XML con el mtodo WriteXML del DataSet escriba el siguiente cdigo en algn comando: Import System.IO Dim archivo As StreamWriter = New StreamWriter (NombreArchivo.xm1) ObjDataset.WriteXm1 (archivo) Archivo.Close ()

Mtodo ReadXML Es otro mtodo del DataSet que permite leer un archivo XML y aadirlo como una Tabla del DataSet. Es muy til realizar cuando se requiere recibir la informacin obtenida desde otra plataforma que solo puede crear archivos de texto, tal como un AS/400 o una Mainframe. Para leer un archivo XML con el mtodo ReadXML del DataSet escriba el siguiente cdigo en algn comando:

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Imports System.IO Dim archivo As StreamReader = New StreamReader (NombreArchivo.xm1) ObjDataset.ReadXm1(archivo) Archivo.close()

Ejercicios Este laboratorio tiene como objetivo mostrar el acceso a datos mediante ADO.NET, usando herramientas de datos, haciendo uso de los objetos de ADO.NET y trabajando con XML, para lo cual se ha dividido en 3 ejercicios que tienen una duracin total aproximada de 60 minutos.

Ejercicio 1: Trabajando con Objetos de ADO.NET Duracin 20 minutos CREATE PROCEDURE sp_Productos_Listar_Porproveedor@IdProveedor int AS Select*From Products Wherw SupplierId=@IdProveedor Order By ProductName Realizar el diseo del formulario llamado frmProducto, aadiendoc dos etiquetas, un ComboBox y un ListBox tal como se muestran en la figura de abajo: Figura 5.18 Diseo del formulario frmProducto

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Para usar OLEDB.NET hay que hacer una referencia al NameSpace adecuado, tal como sigue: Import System.Data.OleDd

Declaramos las siguientes variables: cn para la conexin, cm para el comando, rdS para el cursor de Proveedores, rdP para el cursor de Productos y pm para el parmetro del procedimiento almacenamiento anteriormente creado.

Dim cn As OleDbConnection=New OleDbConnection(Provider=SQLOLEDB,User Id=Data Source=Lduenas; Initial Catalog=Northwind) Dim cm As OleDbComand = New OleDbCommand ( ) Dim rds As OleDbDataReader = Nothing Dim rdP As OleDbDataReader = Nothing Dim pm Aas OleDbParameter = Nothing Creamos un procedimiento que permita mostrar los productos para refrescar la lista de productos. Sub ListarProductos( ) Rdp=cm.ExecuteReader 1stProducto ( ). Items.Clear( ) While rdP.Read 1stProducto( ).Items.Add(rdP (ProductName). ToString) End While rdP While rdP.Close ( ) End Sub Escribimos cdigo en el evento del formulario para abrir la conexin, ejecutar comandos y mostrar datos de productos y proveedores, adems configuramos el comando para ejecutar el procedimiento almacenado. Private Sub frmProducto_Load (...) Handles MyBase.Load cn.open ( ) cm.Connection = cn cm.CommandType = CommandType.Text cm.CommandText = Select SupplierId From Suppliers Order By SupplierId RdS = cm.ExecuteReaderWeb Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

While rdS.Read CboProveedor ( ). Items.Add (rdS (SupplierId).TosTring) End While rdS.Close ( ) cm.CommandText = Select ProductName From Products Order By ProductName ListaProductos ( ) cm.CommandType = CommandType.StoredProcedure cm.CommandText = sp_Productos_Listar_PorProveedor pm = cm.Parameters.Add(@IdProveedir",OleDType.Integer) pm.Direction = ParameterDirection.Imput End Sub Finalmente, progresamos el llenado de la lista de product os al elegir un proveedor del ComboBox, pasando el parmetro y ejecutando el procedimiento. Private Sub cboProveedor_SelectedIndexChanged(...) Handles... pm.Value = Cint(cboProveedor.Text) ListaProductos ( ) End Sub Ejercicio 2: Usando XML en ADO.NET Duracin: 20 minutos Elegir un nuevo proyecto Visual Basic y una plantilla de Aplicacin Widows, Vamos a crear una aplicacin que recupere datos de los empleados de un cierto local de

seleccionar en ubicacin la carpeta C:\VBNET\Labs y como nombre escribir Lab05_3. la empresa que se encuentra en la BD, luego vamos a simular recuperar la informacin de los empleados de otro local en un archivo XML y ambas se actualizarn en la Base de Datos. Cambie el nombre del formulario a frmEmpleado.vb, agregue un DataGrid y 4 botones, tal como se muestran en la figura de abajo: Figura 5.19: Diseo del formulario frmEmpleado

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Despus de realizado el diseo hay que crear los objetos Connetion, DataAdapter y DataSet, para lo cual usaremos la ventana del Server Explorer.

Expandir

la

tabla

Employees

del

Server

Explorer

y

seleccionar

los

campos:

EmployeId, LastName, FirstName y Title, arrastralos hacia el formulario y automtica se habrn creado los objetos: Sq1Connectio1 y Sq1DataAdapter. Ahora creamos el Dataset dando clic derecho al objeto Sq1DataApter y eligiendo del men contextual Generate Dataset...., luego de la ventana elegimos New e ingresamos como nombre: dstEmpleado y OK, Imnediatamente se crear el objeto DstEmpleado1. Enlazamos el Dataset al control DataGrid configurando la propiedad DataSource de este ltimo en DstEmpleado.Employees. Iniciamos la programacin indicando que vamos a trabajar con archivos, para lo cual es necesario hacer una referencia al NameSpace de flujos de entrada y salida de datos, tal como se muestra: Imports System.IO Escribimos cdigo para llenar los datos de los empleados Private Sub btnLeerBD_Click(...) Handles btnLeerBD.Click Sq1DataAdapter1.Fill (DstEmpleado1, Employees)

Web Developer Microsoft.NET

Creando Aplicaciones para Windows

Microsoft Visual Basic .NET

Los datos mostrados lo grabamos en un archivo llamado Empleados.xml. Private Sub btnEscribirXML_Click(...)Handles btnEscribirXML.Click Dim arch As StreamWhiter= New StreamWhiter (c:\Empleados.xml) DstEmpleado1.WhiteXm1(arch) Arch.Close End Sub

Recuperamos el archivo Empleados.xml dando doble clic y se mostrar en el Browser, ver el cdigo fuente y modificar los datos de los empleados, volver a grabar el archivo.

Escribimos cdigo para recuperar los datos del archivo XML y tenerlo junto con la tabla recuperada de la Base de Datos. Provate Sub btnLeerXML_Click(...) Handles btnLeerXML.Click Dim arch As StreamReader = New StreamReader (c:\Empleados.xml) DstEmpleado1.ReadXml(arch) arch.Close ( ) End Sub

Finalmente, actualizamos toda la data y la enviamos a la base de datos Private Sub btnActualizarBD_Clic(...) Handles Sq1DataAdapter1.Update (DsEmpleado1, Employees) End Sub CAPITULO 6

CREANDO COMPONENTES.NET Introduccin a la Programacin Orientada a Objetos (POO) Visual Basic.NET tiene todas las caractersticas de la Programacin Orientada a Objetos (POO), ya que el Marco.NET soporta los requerimientos para que todos los lenguajes que trabajen con el usen POO. Estas caractersticas son: 1. Encapsulacin Cuando creamos un componente.NET este se encuentra en