Visual Net 2008

2012 MANUAL VISUAL NET Lenguaje de Programación Computación III – Herramientas de Desarrollo de Software JMBS Institut

Views 178 Downloads 17 File size 3MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

2012

MANUAL VISUAL NET Lenguaje de Programación Computación III – Herramientas de Desarrollo de Software

JMBS Instituto Sagrado Corazón de Jesús

08/05/2012

1

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

TEMÁTICA DE DESARROLLO SESIÓN I: EL IDE DEL VISUAL BASIC .NET



Conceptos Generales ......................................................................................... 6



MICROSOFT NET FRAMEWORK ........................................................................... 6



Entorno NET FRAMEWORK ................................................................................ 7



Visual Studio NET .............................................................................................. 9



Elementos del Entorno de VISUAL STUDIO 2008 .................................................. 12

SESIÓN II: INSTRUCCIONES CONDICIONALES



Primera Aplicación ............................................................................................. 23



Variables y Operadores ...................................................................................... 34 



Uso de Operadores



Operadores de Asignación ........................................................ 38



Operadores de Comparación ..................................................... 38

Instrucciones Condicionales ................................................................................ 41

 

Instrucción SELECT CASE ..................................................................... 48 Laboratorio…………………………………………………..……………………………………50

SESIÓN III: TRABAJANDO CON CONTROLES



ComboBox ........................................................................................................ 56



ListBox.............................................................................................................. 61



CheckBox .......................................................................................................... 64



Radio Button .................................................................................................... 67



Tab Page .......................................................................................................... 72



Laboratorios………………………..………………………………………………………………………….74

SESION IV: PROCESOS REPETITIVOS



For/Next ........................................................................................................... 70



For Each .......................................................................................................... 71



While/End While ............................................................................................... 71



Do/Loop ........................................................................................................... 72



Estructuras ....................................................................................................... 73



Laboratorio………………………..……………………………………………………………………………74

SESIÓN V: PROCEDIMIENTOS Y ARREGLOS



PROCEDIMIENTOS Y FUNCIONES ....................................................................... 81



ARREGLOS ........................................................................................................ 81



ARREGLOS TIPO LISTA ......................................................................... 82

Semestre 2012 - I

1

2

HERRAMIENTAS DE DESARROLLO DE SOFTWARE





ARREGLOS TIPO TABLA ........................................................................ 86



ARREGLOS CON PARAMETROS.............................................................. 87



ARREGLOS DE CONTROLES................................................................. .87

Laboratorios………………………………………………..………………………………………………….88

SESION VI: EXCEPCIONES Y MENUES



Control de Excepciones … ................................................................................... 97



Menús en Visual Basic NET y 2008 ...................................................................... 101



Laboratorios……………………………..…………………………………………………………………….110

SESIÓN VII: BASE DE DATOS



Base de Datos Relacional .................................................................................... 112



LENGUAJE SQL ................................................................................................. 116



Laboratorios………………………………………..………………………………………………………….119

SESIÓN VIII: ADO NET



ADO NET ......................................................................................................... 135



Objeto de acceso a datos .................................................................................. 155



Acceso a Datos...................................................................................................160

Semestre 2012 - I

2

3

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

INTRODUCCIÓN

Visual Basic.net es la evolución de Visual Basic, el popular lenguaje de programación de Microsoft. A diferencia de sus antecesores, Visual Basic.net esta implementado sobre el FRAMEWORK .NET y las potencialidades que tiene el leguaje supera con creces las de versiones anteriores. Visual Basic .net esta basado en el paradigma de programación orientado a objetos, por lo que es necesario tener algunas nociones de este tipo de programación. La siguiente guía pretende ilustrar al estudiante sobre las características más

importantes del lenguaje, el

FRAMEWORK que lo soporta y los distintos tipos de aplicaciones que podemos lograr con él.

Semestre 2012 - I

3

4

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

SESIÓN I EL IDE DEL VISUAL BASIC .NET CONTENIDO

 Conceptos Generales  MICROSOFT NET FRAMEWORK  Entorno NET FRAMEWORK  Visual Studio NET  Elementos del Entorno de VISUAL STUDIO 2008 PRÁCTICA DE REFORZAMIENTO

Semestre 2012 - I

4

5

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

CONCEPTOS GENERALES MICROSOFT .NET Microsoft.Net es una nueva tecnología que responde a la necesidad de comunicación total entre negocios de sistemas heterogéneos y con gran capacidad de procesamiento. Microsoft

.Net

proporciona

todas

las

herramientas

y

tecnologías

para construir

Aplicaciones Web Distribuidas usando protocolos Web estándares tales como HTTP (Hipertexto Transfer Protocolo), XML (extensible Markup Languaje) y SOAP (Simple Object Access Protocol). Las aplicaciones creadas en la plataforma .NET podrán ser usadas por un gran número de clientes, tales como PC, PC de bolsillo (Palm PC), celulares digitales, PC de juegos (PC Games), PC de auto (Auto PC), PC Televisor (Ultimate TV), etc. La plataforma .NET de Microsoft es un componente de software que puede ser añadido al sistema operativo Windows. Provee un extenso conjunto de soluciones predefinidas para necesidades generales de la programación de aplicaciones, y administra la ejecución de los programas escritos específicamente con la plataforma. Esta solución es el producto principal en la oferta de Microsoft, y pretende ser utilizada por la mayoría de las aplicaciones creadas para la plataforma Windows.

MICROSOFT .NET FRAMEWORK Lo que se dice en el eBook Microsoft .NET Framework. ".NET Framework es un entorno para construir, instalar y ejecutar servicios Web y otras aplicaciones. Se compone de tres partes principales: el Common Language Runtime, las clases Framework y ASP.NET" Lo que dice el MSDN Library. "El .NET Framework es un entorno multilenguaje para la construcción, distribución y ejecución de Servicios Webs y aplicaciones." "El .NET Framework es una nueva plataforma diseñada para simplificar el desarrollo de aplicaciones en el entorno distribuido de Internet." "El .NET Framework consta de dos componentes principales: el Common Language Runtime y la librerÌa de clases .NET Framework." El .NET Framework es el corazón de .NET, cualquier cosa que queramos hacer en cualquier lenguaje .NET debe pasar por el filtro cualquiera de las partes integrantes del .NET Framework. Basándose en la definición de Microsoft sobre que es el .NET FRAMEWORK podemos decir que “.NET Framework

es un entorno para construir, instalar y ejecutar servicios Web y otras aplicaciones. Se compone de tres partes principales: El conjunto de lenguajes de programación, La Biblioteca de Clases Base o BCL y El Entorno Común de Ejecución para Lenguajes o CLR por sus siglas en inglés”.

Semestre 2012 - I

5

6

HERRAMIENTAS DE DESARROLLO DE SOFTWARE ENTORNO NET FRAMEWORK La siguiente figura muestra un diagrama con la distribución de elementos dentro del entorno de .NET Framework.

En la base del entorno de ejecución, se encuentra el CLR, que constituye el núcleo de .NET Framework, encargándose de la gestión del código en cuanto a su carga, ejecución, manipulación de memoria, seguridad, etc. En el nivel intermedio, se sitúa la jerarquía de clases básicas del entorno de ejecución, que constituyen un sólido API de servicios a disposición del programador, para multitud de tareas como, gestión del sistema de ficheros, manipulación multihebra, acceso a datos, etc. Finalmente, en el nivel superior, encontramos las clases que permiten el diseño del interfaz de usuario de nuestras aplicaciones. Si necesitamos desarrollar aplicaciones para Internet, utilizaremos ASP.NET, que nos provee de todo lo necesario para crear aplicaciones para la Red: WEB FORMS, WEB SERVICES, etc. Además la plataforma provee de un motor capaz de desarrollar aplicaciones para escritorio (similar a las que se puede obtener con Visual Basic). Estas aplicaciones de escritorio son los llamados WINDOWS FORMS, la nueva generación de formularios, con características avanzadas y muy superiores a las del motor de generación de formularios de obtenidos con versiones anteriores de Visual Basic.

Visual Studio .NET Visual Studio .net es un entorno de programación integrado (IDE) desarrollado por Microsoft para el desarrollo de aplicaciones .NET. Este entorno cuenta con todo lo necesario para la creación de aplicaciones, en esta guía se utilizará el entorno Visual Studio 2008 para realizar los ejercicios. Visual Studio no es el único IDE para desarrollar aplicaciones .net, existen otros entornos alternativos entre los cuales podemos SHARPDEVELOP.

LOS WINDOWS FORMS Windows Forms es el nombre que reciben las interfaces de usuarios creadas para ser utilizadas en aplicaciones de escritorio. Estas interfaces pueden ser diseñadas a través de los motores de construcción ofrecidos por Windows Forms está constituido por multitud de clases especializadas que ofrecen funcionalidades para el trabajo con

Semestre 2012 - I

6

7

HERRAMIENTAS DE DESARROLLO DE SOFTWARE ventanas, botones, rejillas, campos de texto y todo este tipo de controles habituales en las aplicaciones de escritorio. Visual Studio ofrece todo lo necesario para crear visualmente este tipo de programas, de un modo similar aunque más rico al que ofrecía el entorno de desarrollo integrado de Visual Basic. Al contrario de Visual Basic 6, VB.NET ofrece control sobre cada control que se incorpore al Windows Form. Los formularios (ventanas) son clases que heredan de la clase base Form, cada control que se incorpore en la clase form será miembro de esta. Otras consideraciones previas. 

Extensión de los ficheros de código.

En Visual Basic .NET a diferencia de lo que ocurría en las versiones anteriores de Visual Basic, sólo existe un tipo de fichero de código, el cual tiene la extensión .vb, en este tipo de fichero pueden coexistir distintos tipos de elementos, por ejemplo: un módulo de clase, un formulario, un módulo de código, un control, etc.; mientras que en las versiones anteriores de Visual Basic, cada uno de estos elementos tenían su propio tipo de fichero con su respectiva extensión. 

Tipos de ejecutables.

Con Visual Basic .NET puedes crear básicamente estos dos tipos de ejecutables: de consola, no gráfico, al estilo del viejo MS-DOS, y gráficos, como los que normalmente estamos acostumbrados a ver en Windows. Existen otros tipos de aplicaciones que se pueden crear con Visual Basic .NET: aplicaciones ASP.NET, las cuales serán tratadas en otra guía. Visual Basic .NET (VB.NET): Es un lenguaje de programación orientado a objetos que se puede considerar una evolución de Visual Basic implementada sobre el framework .NET. Su introducción resultó muy controvertida, ya que debido a cambios significativos en el lenguaje VB.NET no es compatible hacia atrás con Visual Basic, cosa que causó gran división en la comunidad de desarrolladores de Visual Basic. La gran mayoría de programadores de VB.NET utilizan el entorno de programación Microsoft Visual Studio .Net en alguna de sus versiones (Visual Studio .NET, Visual Studio .NET 2003 o Visual Studio .NET 2008), aunque existen otras alternativas, como SharpDevelop (que además es libre). Como pasa con todos los lenguajes de programación basados en .NET, los programas escritos en VB.NET requieren el Framework .NET para ejecutarse.

Semestre 2012 - I

7

8

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

VISUAL BASIC .NET 2008 Cuando se Iniciar el Visual Basic Net conocerá el Entorno de Desarrollo Integrado (IDE) del Visual Basic 2008 es decir todas las ventanas y componentes que permitan el desarrollo de aplicaciones. Visual Studio .NET es un entorno de desarrollo integrado que nos ayuda a diseñar, desarrollar, depurar e implantar con rapidez soluciones basadas en el .NET Framework. Podemos acceder a un conjunto común de herramientas, diseñadores y editores desde cualquiera de los lenguajes de programación de Visual Studio .NET. Podemos crear aplicaciones Windows Forms y Web Forms que integren datos y lógica de negocio.

Al ingresar por primera vez al Visual Basic Net observara la siguiente pantalla En esta pantalla se muestra principalmente la página de inicio con los proyectos reciente y as opciones para abrir o crear un nuevo proyecto. También se muestra las opciones para Abrir o Crear un nuevo proyecto. También se muestra el cuadro de herramientas y el explorador de soluciones pero vacíos porque no hay ningún proyecto activo.

Semestre 2012 - I

8

9

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Para visualizar todos los componentes de Visual Basic Net debe crear una aplicación. CREAR UNA APLICACIÓN Para crear una aplicación puede seguir cualquiera de los siguientes pasos: Elegir la opción Archivo Nuevo Proyecto:

Hacer clic en el botón Nuevo Proyecto que se encuentra en la barra estándar.

Semestre 2012 - I

9

10

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Visual Studio .NET ofrece varias plantillas de aplicaciones para soportar el desarrollo de diferentes tipos de aplicaciones y componentes. Antes de iniciar un nuevo proyecto, debemos escoger el tipo de plantilla que deseamos utilizar. Una plantilla de aplicación proporciona archivos de inicio y una estructura de proyecto, y contiene los objetos básicos del proyecto y la configuración del entorno que necesitamos para crear el tipo de aplicación que deseamos.

Plantilla Aplicación Windows Esta plantilla proporciona las herramientas, estructura y código de inicio para crear una aplicación estándar basada en Windows. Añade automáticamente las referencias básicas del proyecto y los archivos a utilizar como punto de partida para nuestra aplicación. Esta ventana contiene las plantillas instaladas de Visual Studio Net. En forma predeterminada se elige aplicación para Windows. En la caja de herramientas, escriba el nombre de su nueva aplicación y presione ENTER

o

haga clic en el botón Aceptar.

Semestre 2012 - I

10

11

HERRAMIENTAS DE DESARROLLO DE SOFTWARE ELEMENTOS DEL ENTORNO DE VISUAL STUDIO 2008 Menús y barras de herramientas Al crear una nueva aplicación se visualiza la siguiente ventana que consisten en el IDE del Visual Basic .Net. En el ejemplo se ha creado una aplicación llamada Windows Application1

Menú principal Nuevo proyecto Cuadro de herramientas

Diseñador de Windows Forms

Ventana Propiedades

Semestre 2012 - I

11

12

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Barra de Título Contiene el nombre del proyecto y su estado. Cuando estamos en estado de diseño, es decir dibujando los controles o escribiendo las instrucciones, la barra sólo muestra el nombre del proyecto.

Cuando ejecuta la aplicación se muestra la palabra ejecutando en la barra de titulo. Durante este estado la aplicación solo ejecutara las instrucciones indicadas y no se podrá modificar las ni alterar el diseño de la aplicación. Los siguientes botones que s encuentran en la barra estándar permiten iniciar, interrumpir, detener o depurar una aplicación.

Semestre 2012 - I

12

13

HERRAMIENTAS DE DESARROLLO DE SOFTWARE También se puede ejecutar una aplicación pulsando la tecla F5.

La Barra de Menú La barra de

menús contienen todas las opciones que permiten

utilizar el Visual Basic 2008 Express.

El Cuadro de Herramientas Como su nombre lo indica, este cuadro contiene todas las herramientas que se necesita para desarrollar las aplicaciones. Al pasar el puntero del Mouse por este cuadro se visualizan todas las herramientas. Si desea que el cuadro de herramientas esté permanente en su pantalla, debe hacer clic en el botón Ocultar Automáticamente.

El Formulario

El formulario es el objeto principal de cada aplicación porque aquí se construye la interfaz del usuario, es decir, la comunicación del usuario con la aplicación que se desarrolla. El desarrollo de una aplicación consiste en agregar los formularios necesarios y asignarles sus propiedades luego

Semestre 2012 - I

13

14

HERRAMIENTAS DE DESARROLLO DE SOFTWARE dibujar los controles que cada uno ellos necesitan y asignarles también sus propiedades y finalmente escribir las instrucciones requeridas por la aplicación. Cuando se crea una aplicación, en forma predeterminada se crea un formulario llamado Form1.Para agregar nuevos formularios a su aplicación puede elegir la Opción Proyecto Agregar Windows Forms.

Otra forma de agregar formularios a una aplicación es haciendo clic en el nombre del proyecto del explorador de soluciones y eligiendo la opción Agregar Windows Forms. En la ventana que se visualiza selecciones Windows Forma y luego clic en el botón Agregar, si desea, antes de hacer clic en el botón Agregar puede asignarle un nombre diferente al predeterminado del nuevo formulario. En el siguiente ejemplo se está agregando un nuevo formulario con el nombre frm ejemplo por Form2.vb

Para eliminar un formulario haga clic derecho en su nombre en el explorador de soluciones y del menú contextual que se visualiza elija la opción Eliminar. Del mensaje que se visualiza, haga clic en el botón Aceptar para confirmar la eliminación. Cuando se ejecuta el proyecto, se visualiza el primer formulario. Para indicar el formulario inicial seleccione el nombre de la aplicación luego clic derecho, propiedades. Luego seleccione el nombre del formulario inicial.

Semestre 2012 - I

14

15

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Barra de Menús

Menú principal Barra de herramientas estándar

Nuevo proyecto

Guardar

Deshacer

Form1.vb

La Ventana de Propiedades Esta ventana, como su nombre lo indica, contiene todas las propiedades o características que se les pueden asignar a los controles que se dibujan en el formulario. Como en casi todas las ventanas, en la barra de título se visualizan los botones que permiten: 

Indicar posición de la ventana de la pantalla



Indicar si la ventana se oculta en forma automática



Cerrar la ventana

Los botones

Permiten lo siguiente: 

Mostrar las propiedades o eventos ordenados por su categoría



Mostrar las propiedades o eventos ordenadas alfabéticamente por su n nombre



Ver sólo las propiedades del objeto seleccionado



Ver sólo los eventos del objeto seleccionado

El Explorador de Soluciones (CTRL + R) El explorador de servidores contiene todos los objetos que forman parte de nuestra aplicación, como formularios, controles de usuarios, módulos etc.

Semestre 2012 - I

15

16

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

El explorador de soluciones muestra los siguientes botones:

Estos botones permiten: 

Mostrar las propiedades del archivo seleccionado



Mostrar todos los archivos del proyecto



Actualizar el explorador de soluciones



Ingresar a la ventana de código del objeto seleccionado



Ver la ventana de diseño



Ver diagrama de clase

Ventana de Código

Semestre 2012 - I

16

17

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Explorador de soluciones

Ventana de Diseño Como en las versiones anteriores de Visual Basic, también se puede ingresar a la ventana de código de un objeto pulsando la tecla F7 y para regresar a la ventana de diseño Shift+f7

CONFIGURAR EL VISUAL BASIC NET Si desea configurar el Visual Basic Net como por ejemplo cambiar el tipo, tamaño, color de la letra de las instrucciones que escriba o el color del texto de cada comentario, etc. debe elegir la opción Herramientas Opciones. Se visualiza una ventana con 2 opciones. 1.-Crear una Carpeta de trabajo en la unidad d:\Mis Proyectos 2,-Clic en herramientas, Opciones, Proyectos y soluciones Escoger la ruta de la carpeta de trabajo en; D:\mis proyectos

Semestre 2012 - I

17

18

HERRAMIENTAS DE DESARROLLO DE SOFTWARE 1.

Ubicación de proyectos de Visual Studio

2.

Ubicación de plantillas de proyecto de usuario de Visual Studio

3.

Ubicación de plantillas de elementos de usuario de Visual Studio

Clic en Archivo Nuevo Proyecto: observe lo siguiente:

Observe lo siguiente:

Semestre 2012 - I

18

19

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Asigne las siguientes Propiedades: Propiedades Text

Mi Primer Formulario

Backcolor

InactiveCaptionText

BackgroundImage

Imagen1

Cuadro de Herramientas Para observar el cuadro de herramientas pulsar las teclas ALT +CTRL +X 

Para ocultar el cuadro de herramientas hacer clic en el icono



Para ejecutar las aplicaciones

Ejecutar las aplicaciones 

Clic en Proyecto, Propiedades de WindowsApplication1



Se observa



Elija Objeto inicial: Form1



Clic en el icono Ejecutar

Semestre 2012 - I

19

20

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

PROCESO

Tecla Rápida

Código

F7

Diseñador

Shift + f7

Explorador de Soluciones

CTRL + R, CTRL +ALT +L

Ventana de Propiedades

F4

Cuadro de Herramientas

CTRL+ALT+X

Examinador de Objetos

F2

Ejecutar Application

F5

Semestre 2012 - I

20

21

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

SESIÓN II INSTRUCCIONES CONDICIONALES CONTENIDO

 Primera Aplicación  Variables y Operadores  Uso de Operadores



Operadores de Asignación



Operadores de Comparación

 Instrucciones Condicionales  Instrucción SELECT CASE PRÁCTICA DE REFORZAMIENTO

Semestre 2012 - I

21

22

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Nuestra primera aplicación. Crear una aplicación que muestre el siguiente formulario y luego de hacer clic en el botón aplicar se observe los siguientes mensajes como se muestran en la fig 2

Figura 1

Luego de hacer clic en aplicar

Figura 2

Procedimiento a)primero Realizamos el diseño del formulario b)Pulsar alt + ctrl + x para usar el control etiqueta

Este control permite escribir títulos Y usar el control botón de comando para generar el botón de comando

Semestre 2012 - I

22

23

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Objeto

Propiedad

Valor

Label1

Name

Label1

Font

Microsoft Sans Serif, 36pt, style=Bold

Nombre

Label1

Font

Microsoft Sans Serif, 36pt, style=Bold

Name

Button1

Text

APLICAR

Label2

Button1

Propiedades de los controles del Formulario Establecer las siguientes propiedades de los controles Realize el siguiente código



Pulse shift +F7 para pasar del formulario ala venatna de código

Public Class Form4 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = "BIENVENIDOS A VISUAL STUDIO " Label1.ForeColor = Color.Blue Label2.Text = "UCV SE MAS" Label2.ForeColor = Color.Brown End Sub End Class

Explicación En este ejemplo se aplica el evento clic al objeto Button1, el cual activa las propiedades de los 2 objetos: Label1 y Label 2 de la siguiente forma:

Label1.Text = "BIENVENIDOS A VISUAL STUDIO "

Objeto  

propiedad La propiedad Text permite asignar el texto al Objeto La propiedad ForeColor permite asignar el color al Objeto

Semestre 2012 - I

23

24

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Agregue el siguiente botón SALIR ya agregue el código que se indica.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub En este caso el formulario se identifica con Me y se le asigna el METODO close()

Segunda Aplicación Otra aplicación será un simple formulario con algunos elementos de escritorio comunes para ir familiarizando con el entorno. Abra el entorno de desarrollo visual studio y cree un nuevo proyecto (ctrl+n).

Semestre 2012 - I

24

25

HERRAMIENTAS DE DESARROLLO DE SOFTWARE En el cuadro de dialogo seleccione “Windows application”

En el cuadro de dialogo Name escriba “alumnos” y pinche el botón OK. El IDE inmediatamente creara el proyecto y nos mostrará una esto:

En la cual se mostrará como página principal una pestaña que contendrá el diseñador visual con un formulario el cual el sistema habrá llamado Form1. En la ventana de propiedades cambie el nombre a form_alumnos

Semestre 2012 - I

25

26

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Además cambie la propiedad text a “Registro de Alumnos” y el tamaño (size) a 800,600.Lo que acabamos de hacer es ajustar las propiedades del objeto form mediante el diseñador. Agregando controles a nuestro formulario. Desde la ventana de herramientas o toolbox podemos agregar distintos controles a nuestro formulario, esto lo podemos hacer pinchando el control que deseamos y arrastrándolo al formulario. Ingrese los siguientes controles a su formulario: 

9 Etiquietas (Label)



6 cuadros de texto (TextBox)



1 cuadro de lista desplegable (combo box)



1 Calendario (DateTimePicker) Cambie la propiedad de cada Label con los siguientes nombres:



RUN



Nombre



Ap. Paterno



Ap.Materno



Dirección



Teléfono



Email



Carrera



Fecha de Ingreso Cambie la propiedad name de los text_box de la siguiente forma:



Text_run

Semestre 2012 - I

26

27

HERRAMIENTAS DE DESARROLLO DE SOFTWARE 

Text_nombre



Text_ap_pat



Text_ap_mat



Text_direccion



Text_telefono



Text_email

Cambie la propiedad nombre del combo box a cmb_carrera y la del DateTimerPicker a DTP_fec_ingreso. Distribuya estos controles de la siguiente Manera:

Presione el botón

para ejecutar la aplicación y ver cómo quedará nuestro formulario, debería ver algo similar

a esto:

Semestre 2012 - I

27

28

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Hasta el momento no hemos utilizado absolutamente nada de código, bueno, dependiendo de la óptica del programador, esto es una ventaja ya que el IDE nos permite crear en forma rápida una aplicación. Hagamos algo más interesante, agreguemos dos botones al formulario para utilizarlo como disparador de un eventos, para ello iremos nuevamente al toolbox y busquemos el control Button, ubiquemos uno debajo del combobox de carrera y cambiemos su nombre a “btn_grabar” y la propiedad text a “Grabar”, el otro botón ubiquémoslo al costado derecho del botón Grabar y cambie su propiedad nombre a “btn_Salir” y su text a “Salir”. Como comentario aparte, ¿Se han fijado que para dar el nombre a los controles hemos utilizado una nomenclatura común?, por ejemplo Textbox1 lo llamamos Text_run, Combobox1 lo llamamos cmb_carrera, bueno, utilizar nomenclaturas comunes que identifiquen claramente el tipo de control y el campo o dato con el cual se esté trabajando es una buena idea ya que nos permitirá fácilmente identificar estos cuando estemos trabajando con código. Sigamos con nuestra aplicación, hasta ahora no hemos utilizado nada de código, así que ya es hora de utilizar nuestras neuronas . Haga doble clic en el botón btn_salir. ¿Qué ha pasado?, se ha activado la pestaña de código y auto-mágicamente el cursor se ha ubicado entre estas líneas:

Private

Sub

Button1_Click(ByVal

sender

As

System.Object,

ByVal

e

As

System.EventArgs) Handles btn_salir.Click End Sub Se trata de un procedimiento cuyo nombre, btn_salir_Click, compuesto del nombre del control y del evento, lo proporciona automáticamente el IDE. Recibe dos parámetros: sender y e, con información adicional proporcionada por el entorno. Pero lo verdaderamente importante está al final de la declaración: “Handles btn_salir_Click”. La palabra clave Handles, seguida del nombre de un control, un punto y el nombre de un evento

Semestre 2012 - I

28

29

HERRAMIENTAS DE DESARROLLO DE SOFTWARE de ese control, le indica al entorno de .NET Framework que debe ejecutar este procedimiento cuando se produzca el evento para ese control. No realizaremos en este momento una explicación más detallada puesto que trataremos este aspecto con más profundidad en temas posteriores del texto. Este procedimiento será ejecutado cada vez que pulsemos el control btn_salir, por lo que si en tal situación, queremos cerrar el formulario, sólo será necesario incluir la línea de código mostrada entre estas líneas. Me.Close() Presiona

para ejecutar el programa, presiona el botón cerrar y observa que sucede.

Agreguemos algo de estilo a nuestro formulario. Para ello pondremos una imagen en el top de formulario con el Titulo de la aplicación. Primero debemos “hacer espacio” para nuestra imagen, seleccione todos los controles y muévalos hacia abajo. Para ello mantenga presionado el botón derecho del mouse y seleccione los controles de formulario. Agregamos un Label a nuestro Formulario, y le agregamos las siguientes propiedades (en tiempo diseño): 

Dock = Top



Autosize = False



En la propiedad Image, importamos una nueva imagen, yo ocupé el logo de Ceduc , ustedes elijan el que gusten.

y aceptamos: Cambiemos las siguientes propiedades: 

ImageAlign = MiddleLeft



Text = [Titulo]

Semestre 2012 - I

29

30

HERRAMIENTAS DE DESARROLLO DE SOFTWARE 

TextAlign = MiddleRight



Font = Microsoft Sans Serif, 18pt, style=Bold



BackColor = Window



Modifiers = Public

Nuestro formulario debería quedar más o menos así:

Agregando nuevos formularios al proyecto. Vamos a construir un formulario que nos servirá de autentificación para nuestra aplicación. Para ello vamos a la pestaña “Solution explorer” y hagamos clic con el botón derecho sobre el icono de nuestro proyecto, aparecerá un menú emergente, desde la opción add seleccionemos Windows Form.

Semestre 2012 - I

30

31

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Ahora agregamos un nuevo formulario (Windows Form), frmLogin.vb. Y le agregamos los siguientes controles: En el formulario frmLogin.cs, cambiamos la propiedad del control btnAceptar:



DialogResult = Ok

Y en el control btnCancelar: 

DialogResult = Cancel

Y en el control txtPassword: 

UseSystemPasswordChar = Trae



PasswordChar = *

Y en el propio formulario cambiamos las siguientes propiedades: 

AcceptButton = btnAceptar



CancelButton = btnCancelar

Ahora debemos hacer que nuestro formulario de autentificación sea el principal en nuestro proyecto, para ello vamos nuevamente a la ventana del explorador de soluciones y seleccionamos nuestro proyecto haciendo doble clic en el. En este instante se abrirá el cuadro de propiedades de la aplicación. En el cuadro de opciones “startup form” selecionaremos el formulario frmLogin:

Semestre 2012 - I

31

32

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Vamos nuevamente al formulario frmLogin y hacemos clic en el botón aceptar para acceder al código del evento. Instanciaremos el formulario form_alumnos para llamarlo de la siguiente forma.

Dim falumnos = New form_alumnos() falumnos.show()

Semestre 2012 - I

32

33

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Variables y Operadores Uso de variables y operadores de VB.NET Variable Ubicación de memoria temporal, se usan para almacenar datos. Una variable tiene un nombre y un tipo de dato. Ejemplo:

Dim NombreVariable tipoDato Tipos de Datos Datos que pueden albergar una variable. Tipo de datos

Descripción

Integer Long Short Byte Double Single Decimal Boolean Char String DateTime Object Numero entero 32 bits Número entero 64 bits Número Entero 16 bits Binarios o caracteres ASCII en numérico Decimales 64 bits Decimales de coma flotante 32 bits Decimales con coma como enteros 128 bits True o False números de 16 bits Un carácter numero de 16 bits sin signo Alfanuméricos Fechas y horas como entero de 64 bits Datos de cualquier tipo Declaración de Variables Indicar su presencia a un programa. Sintaxis:

Dim NombreVariable [As Tipo] Ejermplos: Dim NumVar As Integer Dim StrVar As String

Semestre 2012 - I

33

34

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Tambien se pueden declarar por medio de caracteres de tipo identificador. Dim StrVar$

Tipo Dato

Carácter de identificación

Integer

%

Long

&

Single

!

Double

#

Decimal

@

String

$

Nomenclatura de variables



Debe empezar por una letra.



No puede contener puntos ni caracteres de identificación de tipo



No debe superar los 255 caracteres



Debe ser exclusivo dentro del mismo ámbito (procedimiento, formulario o modulo).

Inicialización de variables

De manera predeterminada una variable contienen un valor cuando se declara. Por ejemplo, una variable Integer contiene 0 y una variable Boolean almacena False. Ejemplos Dim NumVar As Integer

‘Declaración

NumVar=200

Dim NumVar As Integer =200

Semestre 2012 - I

‘Inicialización en 200

‘Declaración e Inicialización

34

35

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Crear una variable en momento de declaración: New Dim permite declarar o crear variables, sin embargo las variables se crean cuando se utilizan o se inicializan. La sentencia New permite crear una variable en el momento de su declaración. Ejemplos Dim NumVar As Integer

‘Declaración

NumVar = New Integer()

‘Creación b)

Dim NumVar As Integer = New Integer()

‘Declaración y creación

Dim NumVar As New Integer()

‘Declaración y creación

Disociar una variable de su tipo de dato: Nothing Nothing disocia una variable de su tipo de dato correspondiente. pOr ejemplo si se asinga Nothing a una variable de tipo Integer la variable pierde su valor y adopta el valor predeterminado de su tipo de datos. Ejemplo Dim Ctr Integer = 10

‘Adopta 10

Ctr = Nothing

‘Adopta 0

Declaraciones implícitas y explicitas Se puede declarar variables implícita explícitamente.

que permiten utilizar variables sin declararlas y

Ejemplo: [email protected] NumVar= 2*5

3

‘10

Se recomienda declarar explícitamente una variable. La instrucción Option Explicit garantiza que las variables se declaren antes de utilizarlas. Sintaxis Option Explicit On Off Por defecto es On

Semestre 2012 - I

35

36

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Ámbito de las variables El ámbito determina su accesibilidad. En función a ello, una variable puede ser variable local o de nivel de modulo. Variable local, declaradas en un procedimiento. Variable de modulo, declaradas a nivel de la aplicación o de módulos de una aplicación. A su vez se clasifican en privadas (solo en el modulo) y publicas (entre módulos). Ejemplos Private

Dim

NumVar

Integer

Private

NumVar As Integer Public Dim NumVar As Integer Public NumVar as Integer Conversión de Tipos Se dispone de dos tipos de conversiones:



Por ampliación no generan perdidas de datos y siempre producen resultas satisfactorios.

Por ejemplo, Short a Integer



Por Reducción, generan perdida de datos y en ocasiones insatisfactorios.

Por ejemplo, de Integer a Short A su vez pueden ser conversiones explicitas (On) e implícitas (Off). Option Strict [On Off] On comprueba los tipos de datos antes de la conversión. Off puede generar conversiones implícitas. El valor por defecto es On Nota: Cuando se define la instrucción Option Strict On, es necesario declarar las variables explícitamente. Constante Una variable cuyo valor no cambia durante la ejecución de un programa. Const MaxPuntos As Integer = 100 Const MaxPuntos = 100

Semestre 2012 - I

36

37

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Uso de Operadores Un operador es una unidad de código que realiza una operación en una variable(s) o elementos. Tenemos los siguientes:

    

Aritméticos Asignación Comparación Lógicos/ de bits Concatenación

Operadores Aritméticos Operador

Descripción

Sintaxis

Ejemplo

^

Calcula la potencia

Numero ^

2^3

Exponente *

Multiplicar dos números

Numero1 *

(-3)^4 3.5*3.25

Numero2 /

Dividir dos números

Numnero1 /

8/3.5

Numero2 \

Divide y devuelve un

Numero1 \

200\3

Mod

entero Devuelve el resto

Numero2 Numero1 Mod

5 Mod 2 ‘1

Numero2 12 Mod 4.3 ‘3.4

+

-

Sumar dos números o unir

Expresion1 +

dos cadenas

Expresion2

Diferencia entre dos

Numero1 –

Números

Numero2

Semestre 2012 - I

5.89+6.3 47.9 Mod 9.35 ‘1.15 “Hola”+”Mundo” 23.6-8.3 ’15.3

37

38

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Operadores de Asignación

Operador

Descripción

Sintaxis

Ejemplo

=

Asigna un valor o

Variable =

Num1 = 12

expresión a una variable o propiedad

Expresion

Asignación de suma

Variable +=

+=

Costo = Precio Num1 * Cant = 10

Expresion -=

Asignación de resta

Variable -=

Num1 +=20 Numero =5

Expresion *=

/=

Asignación de

Variable *=

Numero -=2 Numero = 6

Multiplicación

Expresion

Numero *=2

Asignación de división

Variable /=

Numero = 5.8

Expresion \=

&=

^=

Numero /=2 Num= 8.4

Asignación de división de

Variable \=

enteros

Expresion

Asignación de

Variable &=

Num \=2 Cadena =

concatenación

Expresion

“Hola”

Numero ^=

Cadena &=” Mundo” Numero1 = 2

Asignación de potencia

Exponente Numero1 ^=3

Semestre 2012 - I

38

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

39

Operadores de Comparación Permiten comparar dos expresiones, el resultado es un valor booleano. Operador

Descripción

Sintaxis

Ejemplo


=

78 >= 12

=

Igual que

Expresion2 Expresion1=

5=5

No igual que

Expresion2 Expresion1

63 89

Is

Comparar dos referencias a

Expresion2 Objeto1 Is

Dim Objeto1, Objeto2 As

PRAMAR .NET

Visual

Elementos del lenguaje. Variables y estructuras de datos



Introducción a los tipos de datos

Tipo Visual Basic Net

Tamaño de almacenamiento

Rango de Valores

Boolean

2 bytes

Verdadero o Falso

Date

8 bytes

0:00:00 del 1 de enero de 0001 a 11:59:59 PM del 31 de diciembre de 9999

Decimal

16 bytes

Hasta 29 dígitos significativos, con valores de hasta 7,9228 x 10 (con signo)

Double

8 bytes

-4,94065645841246544E-324 a +1,79769313486231570E+308 (con signo

Integer

4 bytes

-2.147.483.648 a +2.147.483.647 (con signo

Single

4 bytes

-3,4028235E+38 a 1,401298E-45 (con signo)

String

Variant

0 a 2.000 millones aproximadamente de caracteres Unicode

Semestre 2012 - I

39

40

HERRAMIENTAS DE DESARROLLO DE SOFTWARE INSTRUCCIÓN CONDICIONAL Estas instrucciones nos permiten tomar decisiones, permiten evaluar una expresión y ejecutar unas instrucciones en caso contrario ejecuta otras series de instrucciones Sintaxis: Primera Forma: If Then Ejemplo: If a = b Then MessageBox(.Son Números Iguales.) Si la expresión a evaluar de a = b devuelve o mejor dicho es verdadera, este nos mostrará un mensaje, con el texto de .Son Números Iguales.. Segunda Forma: If Then

End If Ejemplo: If b 0 Then Res = a / b Console.WriteLine("El Resultado de La División es: {0}", Res) End If Esta segunda forma, lo utilizamos cuando tengamos que hacer mas de una instrucción si la expresión a evaluar resulta verdadera, en este caso si es mayor que b, si es verdadero este hará la siguiente instrucción de a dividir entre b y el resultado guardarlo en una variable llamada Res, que después la mostraremos en pantalla. Tercera Forma: If Then < Instrucción (si la expresión evaluada devuelve Verdadero)> Else < Instrucción (si la expresión evaluada devuelve Falso)>

Semestre 2012 - I

40

41

HERRAMIENTAS DE DESARROLLO DE SOFTWARE End If Ejemplo: If b 0 Then Res = a / b Console.WriteLine("El Resultado de La División es: {0}", Res) Else Console.WriteLine("Error: División Entre Cero") End If Esta forma nos permite utilizar los dos tipos de resultados de la expresión evaluada, por ejemplo, si b es diferente a cero este dividirá a a, pero si es falso, nos mostrara un mensaje de Error. Cuarta Forma: If Then Else (todo en una misma línea) Esta forma no tan muy usada, solo en los casos cuando hay que hacer una sola instrucción en cada tipo de respuesta de la expresión evaluada, por ejemplo, si a es igual b nos mostrará un mensaje de Números Iguales, pero si es falso nos mostrara otro mensaje diciéndonos que No son Números iguales, y recuerden que es en una sola línea. Quinta Forma: If Then < Instrucción (si la expresión evaluada devuelve Verdadero)> ElseIf Then < Instrucción (si la expresión evaluada devuelve Verdadero)> Else < Instrucción (si la expresión evaluada devuelve Falso)> End If Ejemplo: If b = 0 Then Console.WriteLine("Error: División Entre Cero") ElseIf a b Then Res = a / b Console.WriteLine("El Resultado de La División es: {0}", Res) Else Console.WriteLine("El Resultado de La División es: 1") End If

Semestre 2012 - I

41

42

HERRAMIENTAS DE DESARROLLO DE SOFTWARE EJEMPLOS CON SENTENCIA CONDICIONAL (IF-THEN) Desarrollar una aplicación con 4 ejercicios que permita realizar lo siguiente: Ejercicio1.- Ingresar las Notas de Un alumno y obtener su promedio

Vista Diseño del Formulario Principal Objeto

Propiedad

Valor

Form1

(Name)

Form1

BackColor BackgroundImage BackgroundImageLayout Font Label1

(Name)

Label1

Text

Ejercicios de Visual Basic Net

Font ForeColor Button1

(Name) BackColor BackgroundImage BackgroundImageLayout Font

Semestre 2012 - I

42

43

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Vista Código del Formulario Principal Clic en el primer botón, escriba el siguiente código dentro del procedimiento que permite llamar a un formulario. Si queremos llamar a los formulario en modo Modal es decir, que solo se active el formulario priincipal,cuando cerramos el formulario secundario,debemos utilizar el metodo ShowDialog. Las siguientes instrucciones muestran el formulario form2 en modo Modal.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.ShowDialog() End Sub

Vista Diseño del segundo formulario:

Declaración de Variables

Se Requiere lo siguiente: El Ingreso del código solo numérico El ingreso de apellidos y nombres y el curso solo letras Las notas deben ser valor numérico Obtener el Promedio

Semestre 2012 - I

43

44

HERRAMIENTAS DE DESARROLLO DE SOFTWARE FORMULARIO Cuando se inicia el formulario el cursor debe ubicarse en el primer cuadro , en este aplicaremos al formulario el evento activated.

Private Sub Form2_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated TextBox1.Focus() End Sub En las Notas 

Las Notas deben cambiar de color si es aprobatorio color azul, en caso contrario color rojo.

Aplicar en Textbox1 Evento:Changed

Private Sub TextBox1_TextChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

If Val(TextBox1.Text) >= 11 Then TextBox1.ForeColor = Color.Blue Else TextBox1.ForeColor = Color.Red End If End Sub Aplicando Consistencia: 

Las Notas deben ser de valor Numérico

Aplicar en Textbox1 Evento:KeyPress

Private Sub TextBox1_KeyPress1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If (Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57) And Asc(e.KeyChar) 8 Then e.Handled = True End If

Semestre End Sub

2012 - I

44

45

HERRAMIENTAS DE DESARROLLO DE SOFTWARE CALCULOS Obtener el promedio escriba sub y la palabra promedio pulse enter luego digite el código Para llamar procedimiento promedio utilizar: Sub promedio() n1 = Val(TextBox1.Text) n2 = Val(TextBox2.Text) n3 = Val(TextBox3.Text) prom = (n1 + n2 + n3) / 3 TextBox4.Text = prom.ToString("##.00") If (prom >= 0 And prom < 10.5) Then PictureBox1.Image = WindowsApplication3.My.Resources.Resources.desaprobado MsgBox("Desaprobado") Else If (prom > 10.5 And prom 20 Then MsgBox("La nota debe estar entre 0 y 20", MsgBoxStyle.Exclamation, "verifique") TextBox1.Clear() TextBox1.Focus() Else TextBox2.Focus() INSTRUCCION SELECT CASE End ocasiones If También existen o programas donde se exige evaluar muchas condiciones a la vez, en estos casos o se usa una condición compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver

End Sub

usando la instrucción SELECT CASE. Esta instrucción es una instrucción de decisión múltiple donde el compilador prueba o busca el valor contenido en una variable ENTERA, CHARACTER, STRING contra una lista de constantes apropiadas, es decir enteras, carácter o astringes, cuando el computador encuentra el valor de igualdad entre variable y constante entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a un default, aunque este último es opcional. El formato en visual BASIC net de esta instrucción es el siguiente; capturar o asignar variable de condición Select Case variableopcion case const1 instruccion(es) case const2 instruccion(es) case const3 Instruccion(es) … Case Else instruccion(es) End Select

Public Class Form4 Dim EDAD As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click EDAD = Val(TextBox1.Text) Select Case EDAD Case 0 To 9 Label2.Text = "INFANCIA" Case 10 To 13 Label2.Text = "NIÑEZ" Case 15, 16, 17

Semestre 2012 - I

46

47

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Label2.Text = "ADOLESCENCIAZ" Case 18 To 59 Label2.Text = "ADULTEZ" Case Is >= 60 Label2.Text = "ANCIANO" Case Else Label2.Text = "NO EXISTE" End Select End Sub End Class

Semestre 2012 - I

47

48

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIOS LABORATORIO - 001

1.

Elaborar una aplicación que permita ingresar el nombre de un usuario y que luego permita saludarlo en un Label.

Public Class Form1 Private Sub BtnSaludo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSaludo.Click 'Define la variable nombre y le asigna el valor ingresado Dim Nombre As String = TxtNombre.Text 'Alinea el texto del saludo al centro de la etiqueta LblSaludo.TextAlign = ContentAlignment.MiddleCenter 'Muestra el saludo LblSaludo.Text = "Hola: " & Chr(10) & Chr(13) & Nombre & Chr(10) & Chr(13) & Chr(10) _ & Chr(13) & "Bienvenido a Visual Basic 2008" End Sub Private Sub BtnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCerrar.Click Close() End Sub End Class

Semestre 2012 - I

48

49

HERRAMIENTAS DE DESARROLLO DE SOFTWARE LABORATORIO - 002 Elaborar una aplicacion que permita obtener el promedio de tres notas, mostrandome los puntos obtenidos (suma de las notas) y el promedio del mismo.

Public Class Form1 Private Sub BtnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim Nota1, Nota2, Nota3, Puntos, Promedio As Single Nota1 = Single.Parse(TxtNota1.Text) Nota2 = Single.Parse(TxtNota2.Text) Nota3 = Single.Parse(TxtNota3.Text) Puntos = Nota1 + Nota2 + Nota3 Promedio = Puntos / 3 LblPuntos.Text = Puntos.ToString LblPromedio.Text = Promedio.ToString If Promedio >= 10.5 Then LblPromedio.ForeColor = Color.Blue Else LblPromedio.ForeColor = Color.Red End If End Sub Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) TxtNombre.Text = "" TxtNota1.Text = "" TxtNota2.Text = "" TxtNota3.Text = "" LblPuntos.Text = "" LblPromedio.Text = "" TxtNombre.Focus() End Sub End Class

Semestre 2012 - I

49

50

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIO - 003 Elaborar una aplicación que permita mostrar el promedio de dos notas, este promedio se mostrara en un cuadro de mensaje, de la siguiente manera:

Public Class Form4 Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim kb As Integer = 0 Dim seg As Integer = 0 Dim velocidad As Integer = 0 kb = 55 velocidad = kb / seg MsgBox(CStr(velocidad) & " kb por seg") End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim aNumber As Integer = CInt(TextBox1.Text) Dim bNumber As Integer = CInt(TextBox2.Text) MsgBox(calculopromedio(aNumber, bNumber)) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Text = "" TextBox1.Text = "" habilitabotones() End Sub Sub deshabilitabotones() TextBox1.Enabled = False TextBox2.Enabled = False End Sub Sub habilitabotones() TextBox1.Enabled = True

Semestre 2012 - I

50

51

HERRAMIENTAS DE DESARROLLO DE SOFTWARE TextBox2.Enabled = True End Sub Function calculopromedio(ByVal N1 As Integer, ByVal N2 As Integer) As Integer Return (N1 + N2) / 2 End Function End Class

LABORATORIO - 004 2.

Elaborar una aplicacion que permita ingresar el nombre de un cliente asi como el monto consumido, luego al hacer click debera mostrar el importe del mismo acompañado del igv, mostrandose en los labels respectivos.

Public Class Form1 Private Sub BtnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim Monto, Importe, Igv As Double Monto = Double.Parse(TxtMonto.Text) Importe = Monto / 1.19 Igv = Monto - Importe LblImporte.Text = Importe.ToString("###,##0.00") LblIgv.Text = Igv.ToString("###,##0.00") End Sub Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) TxtCliente.Text = "" TxtMonto.Text = "" LblImporte.Text = "" LblIgv.Text = "" TxtCliente.Focus() End Sub Private Sub BtnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Close() End Sub End Class

Semestre 2012 - I

51

52

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

SESIÓN III TRABAJANDO CON CONTROLES CONTENIDO



ComboBox



ListBox



CheckBox



RadioButton



TabPage PRÁCTICA DE REFORZAMIENTO

Semestre 2012 - I

52

53

HERRAMIENTAS DE DESARROLLO DE SOFTWARE ComboBox (Control, formularios Windows Forms) El control ComboBox de los formularios Windows Forms se utiliza para mostrar datos en un cuadro combinado desplegable. De forma predeterminada, el control ComboBox aparece en dos partes: la parte superior es un cuadro de texto que permite al usuario escribir un elemento de la lista. La segunda parte es un cuadro de lista que muestra una lista de elementos, de los cuales el usuario puede seleccionar.

Public Class Form7 Private

Sub

ComboBox1_SelectedIndexChanged(ByVal

sender

As

System.Object,

ByVal

e

As

System.EventArgs) Handles ComboBox1.SelectedIndexChanged Select Case ComboBox1.SelectedIndex Case 0 TextBox1.Text = 1000 Case 1 TextBox1.Text = 2000 Case 2 TextBox1.Text = 3000 End Select End Sub Private Sub Form7_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ComboBox1.Items.Add("DIGITADOR") ComboBox1.Items.Add("PROGRAMADOR") ComboBox1.Items.Add("ANALISTA") End Sub End Class El control ComboBox de Visual Basic 6.0 se ha reemplazado por el control ComboBox de Windows Forms en Visual Basic 2008. Los nombres de algunas propiedades, métodos, eventos y constantes son diferentes y, en

Semestre 2012 - I

53

54

HERRAMIENTAS DE DESARROLLO DE SOFTWARE algunos casos, existen diferencias de comportamiento. Diferencias conceptuales Change (Evento) En Visual Basic 6.0, el evento Change del control ComboBox se desencadena cuando se modifica el texto del control. El evento Change no se desencadena cuando se selecciona un elemento en la sección de la lista del control. Si se modifica el texto de un elemento de la lista mediante programación, no se desencadena el evento Change. En Visual Basic 2008, el evento Change ya no existe; el evento TextChanged se desencadena cada vez que el texto se modifica por alguna razón; por ejemplo:



Cuando se modifica la sección de entrada de texto



Cuando se selecciona un elemento de la lista



Cuando se modifica un elemento de la lista mediante programación



Cuando se llama al método AddItem

ItemData (Propiedad) En Visual Basic 6.0 la propiedad ItemData de un control ComboBox se puede establecer en tiempo de diseño en la ventana Propiedades para asociar un valor Integer con un elemento ComboBox. En Visual Basic 2008, la propiedad ItemData ya no existe. La biblioteca Microsoft. VisualBasic. Compatibility contiene una función SetItemData que se puede utilizar para asociar un valor Integer con un elemento; la función GetItemData se puede utilizar para recuperar el elemento. Locked (Propiedad) En Visual Basic 6.0, la propiedad Locked de un control ComboBox determina si se puede editar la sección del cuadro de texto del control. En Visual Basic 2008, la propiedad Locked impide que un control se mueva en tiempo de diseño. No existe un equivalente directo para la propiedad Locked de Visual Basic 6.0; sin embargo, puede conseguir el mismo efecto si establece la propiedad DropDownStyle del control ComboBox en DropDownList. Nota En Visual Basic 6.0, si se establece la propiedad Locked en True, también se impedirá que se modifique la selección. Para duplicar este comportamiento, puede cancelar la selección en el evento MouseDown. NewIndex (Propiedad) En Visual Basic 6.0, la propiedad NewIndex se usaba para recuperar el índice del último elemento agregado a un control ComboBox. En Visual Basic 2008, la propiedad NewIndex ya no existe. Puede utilizar el valor devuelto desde el método Item.Add para recuperar el índice de un elemento cuando éste se agrega.

Semestre 2012 - I

54

55

HERRAMIENTAS DE DESARROLLO DE SOFTWARE TopIndex (Propiedad) En Visual Basic 6.0, la propiedad TopIndex se utilizaba para devolver o establecer un valor que especificara el elemento del control ComboBox o ListBox que debía mostrarse en la posición superior. Esta propiedad solía utilizarse para desplazarse por la lista sin seleccionar ningún elemento. En Visual Basic 2008, la propiedad ComboBox ya no es compatible con la propiedad TopIndex. En la mayoría de los casos esto no debería representar un problema, porque al definir la propiedad TopIndex, no se producirá ningún efecto visible a menos que se hubiera establecido la propiedad Style en 1 - SimpleCombo. En este caso, puede emular su comportamiento utilizando un control ListBox y un control TextBox; el control ListBox continúa admitiendo la propiedad TopIndex. Scroll (Evento) El evento Scroll de Visual Basic 6.se utiliza junto con la propiedad TopIndex para llevar a cabo acciones cuando se desplaza por la lista. Visual Basic 2008 no admite el evento Scroll; sin embargo, en la mayoría de los casos, el evento SelectedIndexChanged constituye un sustituto válido. Otras diferencias Existen numerosas diferencias conceptuales que se aplican a todos los controles, como diferencias en los enlaces de datos, control de fuentes, operaciones de arrastrar y colocar, compatibilidad con Ayuda, y otras. Para obtener más información, vea Conceptos de formularios Windows Forms para usuarios de Visual Basic 6.0. Cambios de código para el control ComboBox En los ejemplos siguientes se muestran las diferencias que existen entre las técnicas de codificación de Visual Basic 6.0 y Visual Basic 2008. El código se modifica para hacer que un control ComboBox sea de sólo lectura El código siguiente muestra cómo impedir que un usuario agregue nuevos elementos a un control ComboBox. Copiar código ' Visual Basic 6.0 Combo1.Locked = True Visual Basic Copiar código ' Visual Basic 2008 ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList El código se modifica para seleccionar el último elemento agregado en un control ComboBox El código siguiente muestra cómo se establece la selección en un elemento que se ha agregado mediante

Semestre 2012 - I

55

56

HERRAMIENTAS DE DESARROLLO DE SOFTWARE programación a un control ComboBox. Copiar código ' Visual Basic 6.0 Combo1.AddItem "This is a new item" Combo1.ListIndex = Combo1.NewIndex Visual Basic Copiar código ' Visual Basic 2008 Dim i As Integer i = ComboBox1.Items.Add("This is a new item") ComboBox1.SelectedIndex = i El código de Private Sub se modifica para asociar datos de elementos El código siguiente muestra cómo se asocia un número de empleado a cada empleado mostrado en un control ComboBox y cómo se recupera después ese número en tiempo de ejecución. Copiar código ' Visual Basic 6.0 Private Sub Form_Load Combo1.AddItem "Nancy Davolio" Combo1.ItemData(Combo1.NewIndex) = 12345 Combo1.AddItem "Judy Phelps" Combo1.ItemData(Combo1.NewIndex) = 67890 End Sub Private Sub Combo1_Click() Label1.Caption = "Empoyee #" & _ CStr(Combo1.ItemData(Combo1.ListIndex)) End Sub Visual Basic Copiar código ' Visual Basic 2008 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load ComboBox1.Items.Add("Nancy Davolio") Microsoft.VisualBasic.Compatibility.VB6. _ SetItemData(ComboBox1, ComboBox1.Items.Count() - 1, 12345) ComboBox1.Items.Add("Judy Phelps") Microsoft.VisualBasic.Compatibility.VB6. _ SetItemData(ComboBox1, ComboBox1.Items.Count() - 1, 67890) End Sub

Semestre 2012 - I

56

57

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Visual Basic Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Label1.Text = "Employee #" & CStr( _ Microsoft.VisualBasic.Compatibility.VB6. _ GetItemData(ComboBox1, ComboBox1.SelectedIndex)) End Sub

Control ListBox El control ListBox permite añadir elementos en forma de lista y también poder seleccionar elementos de la misma para trabajar los datos. Este control permite seleccionar un elemento solo o varios de ellos, utilizando la propiedad Multiselect. La imagen de la izquierda muestra un ListBox en el que se selecciona un solo elemento y a la derecha se seleccionan varios: Algunas de sus propiedades. ListBox.Items.Add: Sirve para agregar información al control ListBox.SelectedIndex: Indica los elementos que han sido seleccionado en el control, (ojo) esta propiedad es una de las más funcionales que tiene este control, ya que, no da una perspectiva completa de la información que tenemos almacenada en el mismo. ListBox.Items.RemoveAt:

Remueve

o

elimina

la

información

seleccionada

en

el

mismo.

ListBox.Sorted: Esta propiedad es de tipo Boolean (Verdadero o Falso), nos sirve para ordenar alfabéticamente (A hasta Z) la información contenida en el control.

Public Class Form8 Private Sub Form8_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ListBox1.Items.Add("DIGITADOR") ListBox1.Items.Add("PROGRANADOR") ListBox1.Items.Add("ANALISTA")

Semestre 2012 - I

57

58

HERRAMIENTAS DE DESARROLLO DE SOFTWARE End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged Select Case ListBox1.SelectedIndex Case 0 TextBox1.Text = 1200 Case 1 TextBox1.Text = 2500 Case 2 TextBox1.Text = 4500 End Select End Sub End Class

Ejercicio 2

Semestre 2012 - I

58

59

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Public Class Form1 'Aqui valido que no quede entradas en blanco Private Sub btnAgregar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnAgregar.Click If Me.txtNombre.Text = "" Then MessageBox.Show("El Nombre está en blanco", "Datos en blanco") Me.txtNombre.Focus() Exit Sub Else If Me.txtDireccion.Text = "" Then MessageBox.Show("La Direccion está en blanco", "Datos en blanco") Me.txtDireccion.Focus() Exit Sub Else If Me.txtTelefono.Text = "" Then MessageBox.Show("El Telefono está en blanco", "Datos en blanco") Me.txtTelefono.Focus() Exit Sub Else 'Agrego a la lista Me.lstLista.Items.Add(Me.txtNombre.Text.Trim _ & " " & "---" & " " & Me.txtDireccion.Text.Trim _ & " " & "---" & " " & Me.txtTelefono.Text.Trim) 'Limpio las entradas Me.txtNombre.Clear() Me.txtDireccion.Clear() Me.txtTelefono.Clear() 'Enfoco Me.txtNombre.Focus() End If End If End If End Sub Private Sub btnEliminar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnEliminar.Click 'Aqui eliminamos los datos del ListBox If Me.lstLista.SelectedIndex -1 Then Me.lstLista.Items.RemoveAt(Me.lstLista.SelectedIndex) MessageBox.Show("El Dato ha sido borrado", "Dato borrado") Exit Sub

Semestre 2012 - I

59

60

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Else MessageBox.Show("Debe seleccionar para poder borrar", "Seleccione el dato") End If End Sub Private Sub btnSalir_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSalir.Click 'Aqui mandamos a salir Application.Exit() End Sub Private Sub Llenar_Lista() 'Aqui creamos un metodo para llenar la lista With Me.lstLista.Items .Add("Carlos Perez --- La Vega --- 8095286969") .Add("Roman Fernandez --- Santiago --- 8094715896") .Add("Juan Fco. --- Santiago --- 8094718494") .Add("Alberto Fernandez --- La Vega --- 8093256969") .Add("Adalberto Perez --- San Cristobal --- 8098526969") End With End Sub Private Sub btnLlenar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnLlenar.Click 'Aqui llamamos el metodo Call Llenar_Lista() 'Mandamos a ordenar Me.lstLista.Sorted = True End Sub End Class

Semestre 2012 - I

60

61

HERRAMIENTAS DE DESARROLLO DE SOFTWARE CONTROL CHECKBOX

PROPIEDADES BackColor

Obtiene o establece el color de fondo del control.

Checked

Obtiene o establece un valor que indica si el estado de la casilla de verificación es el de activada.

Enabled

Obtiene o establece un valor que indica si el control puede responder a la interacción del usuario.

Font

Obtiene o establece la fuente del texto que muestra el control.

ForeColor

Obtiene o establece el color de primer plano del control.

Text

Obtiene o establece el texto asociado al control.

-

Se utiliza un control CheckBox para dar al usuario una opción del tipo verdadero/falso o sí/no.

-

El control de la casilla de verificación puede mostrar una imagen o texto o ambos.

-

Se utiliza la propiedad Checked para obtener o establecer el valor de un control de casilla de verificación de dos estados.

MÉTODOS

Focus

Establece el foco de entrada en el control.

Hide

Oculta el control al usuario.

Refresh

Obliga al control a invalidar su área cliente y, acto seguido, obliga a que vuelva a dibujarse el control y sus controles secundarios.

Show

Muestra el control al usuario.

Semestre 2012 - I

61

62

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Public Class Form5 Dim sueldo, bon, descuento, neto As Single Private Sub Opcion1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Form2.Show() End Sub Private Sub Opcion2ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Form4.Show() End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then sueldo = 1500 TextBox1.Text = sueldo Else sueldo = 0 TextBox1.Text = sueldo End If End Sub

Semestre 2012 - I

62

63

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged If CheckBox2.Checked = True Then bon = 500 TextBox2.Text = bon Else bon = 0 TextBox2.Text = bon End If End Sub Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged If CheckBox3.Checked = True Then descuento = 345 TextBox3.Text = descuento Else descuento = 0 TextBox3.Text = descuento End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click neto = sueldo + bon - descuento TextBox4.Text = neto.ToString("##.00") End Sub

Semestre 2012 - I

63

64

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Private Sub Form5_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load sueldo = 0 bon = 0 descuento = 0 neto = 0 End Sub End Class

Control Radiobutton

-

Ofrece opciones que el usuario puede activar o desactivar, pero solamente una opción si existe un grupo de RadioButton.

-

El control RadioButton puede mostrar texto, Imagen o ambos.

-

Cuando el usuario selecciona un botón de opción en un grupo, los demás se desactivan automáticamente.

-

Se utiliza la propiedad Checked para obtener o establecer el estado de un RadioButton. Ofrece opciones que el usuario puede activar o desactivar, pero solamente una opción si existe un grupo de RadioButton.

-

El control RadioButton puede mostrar texto, Imagen o ambos.

-

Cuando el usuario selecciona un botón de opción en un grupo, los demás se desactivan automáticamente.

-

Se utiliza la propiedad Checked para obtener o establecer el estado de un RadioButton.

Semestre 2012 - I

64

65

HERRAMIENTAS DE DESARROLLO DE SOFTWARE PROPIEDADES BackColor

Obtiene o establece el color de fondo del control.

CheckAlign

Obtiene o establece la ubicación de la parte de casilla de verificación del control de botón de opción.

Checked

Obtiene o establece un valor que indica si el control está activado.

Enabled

Obtiene o establece un valor que indica si el control puede responder a la interacción del usuario.

Font

Obtiene o establece la fuente del texto que muestra el control.

ForeColor

Obtiene o establece el color de primer plano del control.

Name

Obtiene o establece el nombre del control.

Text

Obtiene o establece el texto asociado al control.

Visible

Obtiene o establece un valor que indica si se muestra el control.

MÉTODOS

Focus

Establece el foco de entrada en el control.

Hide

Oculta el control al usuario.

Refresh

Obliga al control a invalidar su área cliente y, acto seguido, obliga a que vuelva a dibujarse el control y sus controles secundarios.

Select

Sobrecargado. Activa un control.

Show

Muestra el control al usuario.

Update

Hace que el control vuelva a dibujar las regiones no válidas en su área de cliente.

Semestre 2012 - I

65

66

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Public Class Form6 Dim SUELDO As Single Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged If RadioButton1.Enabled = True Then SUELDO = 960 TextBox1.Text = SUELDO End If End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged If RadioButton2.Enabled = True Then SUELDO = 2500 TextBox1.Text = SUELDO End If End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged If RadioButton3.Enabled = True Then SUELDO = 3500

Semestre 2012 - I

66

67

HERRAMIENTAS DE DESARROLLO DE SOFTWARE TextBox1.Text = SUELDO End If End Sub End Class

TAB PAGE Este control permite visualizar las fichas de un control.

Public Class Form9 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call visibilidad() TabPage1.BackColor = Color.BlanchedAlmond Label6.Text = "DATOS REGISTRADOS" Label7.Text = TextBox1.Text Label8.Text = TextBox2.Text Label9.Text = TextBox3.Text Label10.Text = TextBox4.Text Label11.Text = ComboBox1.Text End Sub

Semestre 2012 - I

67

68

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub Private Sub Form9_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Label6.Visible = False Label7.Visible = False Label8.Visible = False Label9.Visible = False Label10.Visible = False Label11.Visible = False ComboBox1.Items.Add("DIGITADOR") ComboBox1.Items.Add("PROGRAMADOR") ComboBox1.Items.Add("ANALISTA") TabPage1.Text = "DATOS PERSONALISIMOS" TabPage2.Text = "ESTUDIOS" TabPage3.Text = "RESUMEN" TabPage1.BackColor = Color.BlanchedAlmond TabPage2.BackColor = Color.White TabPage3.BackColor = Color.Chartreuse End Sub Sub visibilidad() Label6.Visible = True Label7.Visible = True Label8.Visible = True Label9.Visible = True

Semestre 2012 - I

68

69

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Label10.Visible = True Label11.Visible = True End Sub

Semestre 2012 - I

69

70

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIOS LABORATORIO - 001 

Se desea elaborar una aplicación que me permita mostrar el Neto a Pagar en el sueldo de un empleado para ello debemos tomar en cuenta lo siguiente: Si hacemos click en el Check de Bon Mov, se debera tomar en cuenta: El basico va a Depender del Cargo: Cargo

Basico

Analista

2800

Programador

2000

Operador

1600

Digitador

1250

Secretaria

1000



Bon Mov es el 2% del Basico



Si es Bon Ref es el 1% del Basico



El Sueldo Bruto es la Suma del Basico mas las Bonificaciones esta se mostrara en el Label14.



El Adelanto es el 3% del Basico, la AFP es el 13% del Basico, Otros es el 7% del Basico, por lo tanto el total de Descuentos es : Adelanto + AFP + Otros esto se mostrara en el Label15.



El Neto es Bruto – TotalDescuentos.

El diseño de la ventana tendra el siguiente aspecto:

Semestre 2012 - I

70

71

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIO - 002



Elaborar una aplicación que permita ingresar el Nombre, Edad y Estado Civil asi como su Turno, cuando presionemos Agregar este se visualizara en las Listas respectivas. Luego si deseamos eliminar a uno de los elementos de la lista, debemos seleccionarla y luego hacer clic en el botón Quitar. Del mismo modo cuando se haga clic en Limpiar todos los controles se borraran.

Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAgregar.Click Dim Nombre, Casado, Turno As String Dim Edad As Byte If TxtNombre.Text.Trim = "" Then MessageBox.Show("Ingrese el Nombre", "Por Favor") TxtNombre.Focus() Exit Sub End If If RbMañana.Checked = False And RbTarde.Checked = False And RbNoche.Checked = False Then MessageBox.Show("Seleccione el Turno", "Por Favor") Exit Sub End If 'Cambia el nombre a mayúsculas Nombre = TxtNombre.Text.ToUpper() Edad = UpEdad3.Value If CkCasado.Checked = True Then Casado = "Si" Else

Semestre 2012 - I

71

72

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Casado = "No" End If If RbMañana.Checked = True Then Turno = "Mañana" ElseIf RbTarde.Checked = True Then Turno = "Tarde" Else Turno = "Noche" End If LbNombre.Items.Add(Nombre) LbEdad.Items.Add(Edad.ToString) LbTurno.Items.Add(Turno) LbCasado.Items.Add(Casado) TxtNombre.Clear() UpEdad3.Value = 18 CkCasado.Checked = False RbMañana.Checked = False RbTarde.Checked = False RbNoche.Checked = False TxtNombre.Focus() End Sub Private Sub LbNombre_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LbNombre.SelectedIndexChanged Seleccionar(LbNombre.SelectedIndex) End Sub Private

Sub

LbEdad_SelectedIndexChanged(ByVal

sender

As

System.Object,

ByVal

e

As

As

System.Object,

ByVal

e

As

System.EventArgs) Handles LbEdad.SelectedIndexChanged Seleccionar(LbEdad.SelectedIndex) End Sub Private

Sub

LbTurno_SelectedIndexChanged(ByVal

sender

System.EventArgs) Handles LbTurno.SelectedIndexChanged Seleccionar(LbTurno.SelectedIndex) End Sub Private Sub LbCasado_SelectedIndexChanged(ByVal sender As System.Object, ByVal

e As

System.EventArgs) Handles LbCasado.SelectedIndexChanged Seleccionar(LbCasado.SelectedIndex) End Sub Private Sub BtnQuitar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnQuitar.Click If LbNombre.SelectedIndex < 0 Then MessageBox.Show("Seleccione

un

elemento",

"Para

Quitar",

MessageBoxButtons.OK,

MessageBoxIcon.Information)

Semestre 2012 - I

72

73

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Else Quitar(LbNombre.SelectedIndex) End If End Sub Private Sub BtnLimpiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLimpiar.Click LbNombre.Items.Clear() LbTurno.Items.Clear() LbEdad.Items.Clear() LbCasado.Items.Clear() End Sub Sub Seleccionar(ByVal Elemento As Integer) LbNombre.SelectedIndex = Elemento LbTurno.SelectedIndex = Elemento LbEdad.SelectedIndex = Elemento LbCasado.SelectedIndex = Elemento End Sub Sub Quitar(ByVal Elemento As Integer) LbNombre.Items.RemoveAt(Elemento) LbTurno.Items.RemoveAt(Elemento) LbEdad.Items.RemoveAt(Elemento) LbCasado.Items.RemoveAt(Elemento) End Sub End Class

Semestre 2012 - I

73

74

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIO - 003 Elaborar una aplicación que permita ingresar :



Nombre de una Persona



Seleccionar el Sexo de una persona



Seleccionar el Estado Civil



Ingresar la Edad.

Cuando se ingresa la Edad y se presiona ENTER, se mostrara la informacion ingresada y seleccionada en las listas respectivamente, y al mismo tiempo se debera mostrar Los Nros que solicitan en la parte inferior.

List: Masculino Femenino List: Soltero Casado Viudo Divorciado Conviviente

Semestre 2012 - I

74

75

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIO - 004 Elaborar una aplicación que permita ingresar : 

Nombre de una Persona



Seleccionar el Turno



Seleccionar el Ciclo



Seleccionar la Especialidad



Seleccionar los datos Adicionales.

Se debera tomar en cuenta las siguientes alternativas :

Turno Mañana Tarde Noche

Ciclo I , II y III IV, V ,VI I , II y III IV, V ,VI I , II y III IV, V ,VI

Turismo 280 300 250 270 284 320

ESPECIALIDADES Contabilidad Computacion 290 290 310 320 260 270 280 280 295 295 340 340

Secretariado 285 315 265 270 290 325

Los precios se mostrara en la Caja de Texto Mensualidad, asi mismo cuando seleccionamos un dato Adicional esta se acumulara en la caja de texto Pago Adicional. El Descuento sera de la siguiente manera : Turno

Descuento

Mañana

2% de la Suma (Mensualidad + Adicional)

Tarde

3% de la Suma (Mensualidad + Adicional)

Noche

4% de la Suma (Mensualidad + Adicional)

List : Mañana Tarde Noche List : I II III IV V VI

Semestre 2012 - I

75

76

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

SESIÓN IV PROCESOS REPETITIVOS CONTENIDO



For/Next



For Each



While/End While



Do/Loop



Estructuras PRÁCTICA DE REFORZAMIENTO

Semestre 2012 - I

76

77

HERRAMIENTAS DE DESARROLLO DE SOFTWARE PROCESOS REPETITIVOS Los procesos repetitivos o llamados bucles, se utilizan para repetir el o los códigos, un número determinado de veces, para esto usaremos el For, que nos permitir· repetir un número determinado de veces el código. For / Next Con este tipo de bucle podemos repetir un código un número determinado de veces. Sintaxis: For = To [Step ] 'contenido del bucle, lo que se va a repetir Next Primera Forma: Una de las formas más utilizadas. For i = 1 To 10 'contar· de 1 hasta 10 'la variable i tomar· los valores 1, 2, 3, etc. Next Segunda Forma: Esta forma se utiliza para decirle como va a incrementar, ya sea como el ejemplo de 2 en 2. For i = 1 To 100 Step 2 'contar· desde 1 hasta 100 (realmente 99) de 2 en 2 'la variable i tomar· los valores 1, 3, 5, etc. Next Tercera Forma: Cuando queremos que un bucle sea en decreciente solo bastar· darle un valor negativo, al n˙mero, como en el ejemplo, queremos que en vez que avance del 1 al 10 queremos que este vaya del 10 al 1. For i = 10 To 1 Step -1 'contar· desde 10 hasta 1 'la variable i tomar· los valores 10, 9, 8, etc. Next

Semestre 2012 - I

77

78

HERRAMIENTAS DE DESARROLLO DE SOFTWARE For Each Este bucle repetir· o iterar· por cada uno de los elementos contenidos en una colección. Sintaxis: For Each In 'Lo que se hará mientras se repita el bucle Next Ejemplo: Dim s As String For

Each

s

In

"Hola

Mundo"

Console.WriteLine(s) Next Console.ReadLine() Este bucle recorre cada uno de los caracteres de una cadena, en este caso recorrer· cada carácter de la cadena s (Hola Mundo). Comenzando por la H y de ahí la o y así hasta la última o de la palabra Mundo. Las estructuras repetitivas o llamados también bucles, se utilizan para repetir el o los códigos, hasta que la expresión evaluada de un valor de Falso. While / End While Se repite· mientras se cumpla la expresión lógica que se indicar· después de While Sintaxis: While ëLo que haya que hacer mientras se cumpla la expresión End While Ejemplo: While i < 10 Console.WriteLine(i) i=i+1 End While

Semestre 2012 - I

78

79

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Este código escribirá el valor de i hasta que el valor de i tome el valor

de

10 Do / Loop Este tipo de bucle es muy parecido al anterior. Si se utiliza solo con esas dos instrucciones, este tipo de bucle no acabar· nunca y repetir· todo lo que haya entre Do y Loop. Pero este tipo de bucle se puede usar con dos instrucciones que nos permitirán evaluar expresiones lógicas: While y Until Pero no debemos confundir este While con el While/End While que acabamos de ver anteriormente. La ventaja de usar While o Útil con los bucles Do/Loop es que estas dos instrucciones podemos usarlas tanto junto a Do como junto a Loop, la diferencia está en que si los usamos con Do, la evaluación se hará antes de empezar el bucle, mientras que si se usan con Loop, la evaluación se hará después de que el bucle se repita al menos una vez. Sintaxis: Primera Forma: Este bucle evalúa al principio, mejor dicho realizara el código o las instrucciones un numero que digamos que sea n veces. Do

While

Instrucción Loop Segunda Forma: Este bucle evalúa al final, mejor dicho realizara el código o las instrucciones n veces. Do Instrucción Loop While Tercera Forma: Este bucle evalúa al principio, a diferencia que el primero realizara el código siempre y cuando la expresión sea falsa, mejor dicho realizara el código o las instrucciones n veces. Do

Until

Instrucción Loop Cuarta Forma: Este bucle evalúa al final, a diferencia que el segundo realizara el código siempre y cuando la expresión sea falsa, mejor dicho realizara el código o las instrucciones n 1 veces Do Instrucción

Semestre 2012 - I

79

80

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Loop Until

Ejemplo con PROCESOS REPETITIVOS

Public Class Form10 Dim I As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click I=0 While (I = 11 Then

Semestre 2012 - I

89

90

HERRAMIENTAS DE DESARROLLO DE SOFTWARE cadena = "ESTAS APROBADO" Else cadena = "ESTAS DESAPROBADO" End If Call MENSAJE(cadena) End Sub Sub MENSAJE(ByVal TEXTO As String) MsgBox(TEXTO) End Sub End Class

Semestre 2012 - I

90

91

HERRAMIENTAS DE DESARROLLO DE SOFTWARE ARREGLOS Uno de los problemas más comunes en los diversos sistemas de información es el tratamiento o procesamiento de una gran volumen de datos o de información. Las variables usadas hasta ahora reciben propiamente el nombre de variables escalares porque solo permiten almacenar o procesar un dato a la vez. Por ejemplo si se quiere almacenar nombre y edad de 15 personas con el método tradicional se ocuparan 30 variables y solo es nombre y edad de 15 personas, agreguen más datos y más personas y ya es tiempo de empezar a analizar otro tipo de variables. Es decir, en problemas que exigen manejar mucha información o datos a la vez, variables escalares no son suficientes ya que su principal problema es que solo permiten almacenar y procesar un dato a la vez. Se ocupan entonces variables que sean capaces de almacenar y manipular conjuntos de datos a la vez. Variables de tipo arreglo si permiten almacenar y procesar conjuntos de datos del mismo tipo a la vez. Cada dato dentro del arreglo se le conoce como elemento del arreglo y se simboliza y procesa (captura, operación, despliegue) usando el nombre del arreglo respectivo y un subíndice indicando la posición relativa del elemento con respecto a los demás elementos del arreglo, solo recordar que en VISUAL BASIC 2008 la primera posición, elemento o renglón es el 0 (cero), ej. NOMBRES Juan –>nombres(0) Pedro → nombres(1)

Rosa –> nombres(2) Jose –> nombres(3) Sin embargo sus problemas son similares a los de variables normales es decir hay que declararlos, capturarlos, hacer operaciones con ellos, desplegarlos, compararlos, etc. En programación tradicional siempre se manejan dos tipos de arreglos los arreglos tipo listas, vectores o unidimensionales y los arreglos tipo tablas, cuadros, concentrados, matrices o bidimensionales en ambos casos son variables que permiten almacenar un conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de columnas que cada uno de estos tipos contiene, como en los siguientes ejemplos: a) LISTAS DE EDADES

18 34 22 15

Semestre 2012 - I

91

92

HERRAMIENTAS DE DESARROLLO DE SOFTWARE B) TABLAS DE SUCURSALES SUC A 10 20 30

40

SUC B 50 60 70

80

SUC D 90 100 110 120

Como se observa la diferencia principal entre un arreglo tipo lista y un arreglo tipo tabla son las cantidades de columnas que contienen.

ARREGLO TIPO LISTA Un arreglo tipo lista se define como una variable que permite almacenar un conjunto de datos del mismo tipo organizados en una sola columna y uno o más renglones. También reciben el nombre de vectores en algebra o arreglos unidimensionales en programación. Los procesos normales con una lista o con sus elementos incluyen declarar toda la lista, capturar sus elementos, desplegarlos, realizar operaciones con ellos, desplegarlos, etc. Para declarar una lista se usa el siguiente formato; SHARED DIM NOMLISTA (CANT ELEMENTOS -1) AS TIPODATO Shared(compartido), se usa cuando la lista se tenga que compartir entre varias subrutinas, observar que cada botón de comando en un programa empieza con sub-end sub, si un programa tiene varias subrutinas que compartan la misma lista, dicha lista deberá ser SHARED. La cantidad de elementos-1, significa que si se quiere una lista de 5 ciudades por ejemplo su declaración será shared dim ciudad (4) as string, la razón de esto es que visual basic empieza una lista por el elemento o renglón cero (0), por tanto cuando se pide crear una lista de 4 ciudades, visual basic net le agrega el renglón o elemento 0, que en total darían 5 ciudades. Es también importante recordar que un arreglo en visual basic net es realmente un objeto derivado de la clase SYSTEM.ARRAY. Recordar también que como objeto arreglo, también puede usar una serie de métodos pertenecientes a dicha clase system.array, los metodos principales de dicha clase y por tanto de los arreglos derivados de la misma son: Public Methods BinarySearch Overloaded. Searches a one-dimensional sorted Array for a value, using a binary search algorithm. Clear Sets a range of elements in the Array to zero, to false, or to a null reference (Nothing in Visual Basic), depending on the element type. Clone Creates a shallow copy of the Array. Copy Overloaded. Copies a section of one Array to another Array and performs type casting and boxing as required. CopyTo Copies all the elements of the current one-dimensional Array to the specified one-dimensional Array starting at the specified destination Array index. CreateInstance Overloaded. Initializes a new instance of the Array class. Equals (inherited from Object) Overloaded. Determines whether two Object instances are equal. GetEnumerator Returns an IEnumerator for the Array.

Semestre 2012 - I

92

93

HERRAMIENTAS DE DESARROLLO DE SOFTWARE GetHashCode (inherited from Object) Serves as a hash function for a particular type, suitable for use in hashing algorithms and data structures like a hash table. GetLength Gets the number of elements in the specified dimension of the Array GetLowerBound Gets the lower bound of the specified dimension in the Array. GetType (inherited from Object) Gets the Type of the current instance. GetUpperBound Gets the upper bound of the specified dimension in the Array. GetValue Overloaded. Gets the value of the specified element in the current Array. IndexOf Overloaded. Returns the index of the first occurrence of a value in a one-dimensional Array or in a portion of the Array. Initialize Initializes every element of the value-type Array by calling the default constructor of the value type. LastIndexOf Overloaded. Returns the index of the last occurrence of a value in a one-dimensional Array or in a portion of the Array. Reverse Overloaded. Reverses the order of the elements in a one-dimensional Array or in a portion of the Array. SetValue Overloaded. Sets the specified element in the current Array to the specified value. Sort Overloaded. Sorts the elements in one-dimensional Array objects. ToString (inherited from Object) Returns a String that represents the current Object. FUENTE: Ayuda Microsoft Net notas: En visual Basic 2008 recordar que la primera posicion o renglon en una lista es la posicion o renglon 0 (cero). El dato capturado, proviene de momento de un componente escalar textbox y/o se usan tantos de estos controles como elementos tenga el arreglo o mas facil aun se debera controlar la captura de elementos usando algun algoritmo sencillo de validacion como lo muestra el programa ejemplo.

Public Class Form1 Shared EDADARR(4) As Integer ' DECLARANDO RENG COMO GLOBAL

Semestre 2012 - I

93

94

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Dim RENG As Integer Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated EDAD.Focus() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load EDAD.Focus() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ' LIMPIANDO LISTAS LISTA1.Items.Clear() LISTA2.Items.Clear() ' CARGANDO LISTA ORIGINAL CON EDAD CAPTURADA For RENG = 0 To 4 LISTA1.Items.Add(EDADARR(RENG)) Next ' A MESES Y Y DESPLEGANDO For RENG = 0 To 4 EDADARR(RENG) = EDADARR(RENG) * 12 LISTA2.Items.Add(EDADARR(RENG)) Next End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' EN ESTE MODULO SOLO SE TRABAJA CON EL ARREGLO ' EN MEMORIA EDAD.Focus()

Semestre 2012 - I

94

95

HERRAMIENTAS DE DESARROLLO DE SOFTWARE LISTA1.Items.Add(EDAD.Text) Label2.Text = RENG

If RENG = 5 Then EDAD.Visible = False RENG = 0 End If End Sub End Class

Notas: Observar que en el programa el arreglo edad y la variable renglón se declararon de tipo GLOBAL porque los dos métodos el de captura y el de operación-despliegue, las están compartiendo. Además observar que se declararon antes de los eventos “clickButton”, para crearlos como objetos globales. Para el caso de operaciones y comparaciones con todos los elementos de la lista a la vez se deberá usar un ciclo for con una variable entera llamada renglón, misma que también se usa como índice de la lista. Recordar que todos los datos internos de la lista estarán almacenados en la memoria ram del computador, para despliegues se usa un componente visual que permite manipular un conjunto de datos a la vez, el ListBox con sus métodos apropiados pero se tiene que usar un ciclo for para ir añadiendo o agregando elemento por elemento como se observa en el problema ejemplo que se ha venido desarrollando, en este caso se quiere desplegar las cinco edades convertidas a meses. La ultima instrucción y muy importante es poner en cero las variables de control de ciclos o índice de arreglos, esto es porque el servidor mantiene el programa ejecutándose continuamente en memoria y si se vuelve a pedir la ejecución del programa, en cuento se intente capturar un nuevo dato va a marcar el error arreglo fuera delimite o arrayofbound, están avisados. Para inicializar una lista se debe usar el siguiente formato: shared dim nomlista() as tipodato={lista de valores separados por comas} ej;

Semestre 2012 - I

95

96

HERRAMIENTAS DE DESARROLLO DE SOFTWARE shared dim edad() as integer = {15,16,17,18} shared dim sueldo() as double = {40.85, 65.30, 33.33} shared dim ciudad() as string = {“tecate”, “tijuana”, “mexicali”, “rosarito”, “ensenada”} TAREAS PROGRAMACION VISUAL BASIC 2008 1.- Capturar y desplegar 5 precios de productos cualesquiera usando dos panel uno para capturar y uno para desplegar 2.- Capturar 4 sueldos en un panel desplegarlos aumentados en un 25% en otro panel 3.- Capturar los datos de 5 productos comprados en una tienda, incluyendo nombre, precio y cantidad en sus 3 listas respectivas, después calcular una cuarta lista con el gasto total por cada producto desplegarlo todo en un segundo panel e incluir también el gran total 4.- Capturar en una lista solamente 6 números múltiplos de 5, se debe de estar capture y capture números hasta que se completen los 6 múltiplos de 5 ARREGLOS TIPO TABLA Un arreglo tipo tabla se define como un conjunto de datos del mismo tipo organizados en dos o más columnas y uno o más renglones. Para procesar (recordar solo operaciones y comparaciones) internamente todos los elementos de la tabla se ocupan dos ciclos for uno externo para controlar renglón y uno interno para controlar columna. Los elementos de la tabla se deberán simbolizar con el nombre de la tabla y 2 subíndices, el primer subíndice referencia al renglón y el siguiente subíndice referencia la columna los dos dentro del mismo corchete. La declaración de una tabla será de acuerdo al siguiente formato: SHARED DIM NOMTABLA (RENG-1,COL-1) AS TIPODATO Ej: SHARED DIM SUELDO (3,4) AS DOUBLE ← RECORDAR QUE VA A GENERAR UNA MATRIZ QUE TENDRA CUATRO RENGLONES Y CINCO COLUMNAS EMPIEZA EN SUELDO (0,0) Para capturar sus elementos, usaremos un textbox y un botón de captura, solo tener cuidado o mucho control sobre los índices rEN y col como lo muestra el ejemplo. Para efectuar otros procesos tales como operaciones, despliegues con todos los elementos de la tabla se deberán usar 2 ciclos un for externo para controlar renglón y un for interno para controlar columna.

Semestre 2012 - I

96

97

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Public Class Form2 ' DECLARANDO LISTA GLOBAL ' RECORDAR QUE SON 3 RENG Y 4 COLUMNAS Shared CALIFICACION(2, 3) As Integer ' DECLARANDO RENG Y COL COMO GLOBAL Dim R, C As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' EN ESTE MODULO SOLO SE TRABAJA CON EL ARREGLO ' EN MEMORIA CALIFICACION(R, C) = CALIF.Text C=C+1 CALIF.Text = "" If C = 4 Then R=R+1 C=0 End If If R = 3 Then CALIF.Visible = False End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim TEMP As String ' PROCESANDO Y REGALANDO 5 PUNTOS A TODOS For R = 0 To 2 For C = 0 To 3 CALIFICACION(R, C) = CALIFICACION(R, C) + 5 Next C Next R

Semestre 2012 - I

97

98

HERRAMIENTAS DE DESARROLLO DE SOFTWARE ' desplegando For R = 0 To 2 TEMP = CALIFICACION(R, 0) & " " & CALIFICACION(R, 1) & " " & CALIFICACION(R, 2) & "

" &

CALIFICACION(R, 3) LISTA1.Items.Add(TEMP) ' limpiando temporal antes de otro renglon TEMP = " " Next End Sub End Class Notas: Observar el formato de declaración y como se controlan los índices de captura r, c Para procesar los elementos se usan dos ciclos for y el formato tabla (reng,col). En este problema se usa el objeto LISTBOX para presentar el resultado más adelante se usara un objeto más apropiado. Corrida: Para inicializar tablas, se usa el siguiente formato: Dim nomarreglo() As tipodato = {lista valores} Dim ciudades() as String = {“tijuana', “tecate”, “ensenada”} Recordar que no se pueden inicializar arreglos de tamano fijo, para inicializar tablas aquí está el ejemplo: Dim alfa(,) As Integer = {{1, 2}, {3, 4} {5,6} } TAREAS PROGRAMACION VISUAL BASIC 2008 1.- CONSTRUIR UN CUADRO QUE CONTENGA LOS COSTOS FIJOS DE CUATRO PRODUCTOS CUALESQUIERA, QUE SE PRODUCEN EN TRES PLANTAS DIFERENTES DE UNA EMPRESA MAQUILADORA (2 prog uno capturado y otro inicializado). 2.- CONSTRUIR UN CUADRO QUE CONTENGA LOS INGRESOS MENSUALES POR VENTAS DURANTE LOS TRES PRIMEROS MESES DEL ANO DE CUATRO SUCURSALES DE UNA CADENA DE AUTO REFACCIONES, AGREGAR AL FINAL UNA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR MESES Y UNA SEGUNDA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR SUCURSAL(2 progs uno capturado y otro inicializado). 3.-CONSTRUIR UN CUADRO QUE CONTENGA LAS COMISIONES GANADAS POR TRES VENDEDORES, DE LOS 5 TIPOS DE LINEA BLANCA DE CONOCIDA MUEBLERIA, ADEMAS LISTAS DE COMISIONES TOTALES Y PROMEDIOS GANADAS POR LOS VENDEDORES, ASI COMO LISTAS DE COMISIONES TOTALES Y PROMEDIOS POR TIPO DE LINEA BLANCA ANALIZAR ESTE CODIGO Y ESCRIBA LOS RESULTADOS QUE SE OBTIENEN ‘PARA TOTALES Y PROMEDIOS POR RENGLON FOR R = 0 TO 3 FOR C = 0 TO 2

Semestre 2012 - I

98

99

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

TOTRENG(R) = TOTRENG(R) + TABLA(R,C) NEXT C PROMRENG(R) = TOTRENG(R)/3 NEXT R 'PARA TOTALES Y PROMEDIOS POR COLUMNA FOR C = 0 TO 2 FOR R = 0 TO 3 TOTCOL(C)=TOTCOL(C) + TABLA(R,C) NEXT R PROMCOL(C) = TOTCOL(C) / 4 NEXT C

ARREGLOS CON LISTBOX ListBox uno de los nuevos Controls, es un componente DINAMICO(es decir no tiene tamaño definido) que permite procesar visualmente un conjunto de elementos de tipo string. La propiedad Rows que se usa al crearlo, es solo para indicarle cuantos renglones desplegara en pantalla, es decir si se usa rows=5, en listbox se podrá capturar todos los elementos o datos que se quiera pero solo desplegara los últimos cinco elementos. Sin embargo existen ciertas propiedades del listbox que permiten conocer cuántos elementos están cargados en el listbox. Otra importante aspecto a recordar cuando se procese o programe, es que el primer índice de la lista, es el índice numero 0(cero). Este componente, contiene muchas propiedades y métodos que facilitan el trabajo con datos la más importante es su propiedad ITEMS, que a su vez tiene: PROPIEDAD ACCION O SIGNIFICADO Items.Add(dato): Inserta un elemento al final del listbox. Items.Clear(): Elimina todos los elementos de la lista. Items.Count(): Regresa la cantidad de elementos en lista. Items.Sorted = true; Ordena los elementos de la lista usada solo al tiempo de diseño.

Semestre 2012 - I

99

100

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Items.Contains(dato): Regresa true o false, si el dato se encuentra o no

se

encuentra en la lista. Items.IndexOf(dato): Regresa el índice del objeto dentro del listbox. Items.Insert(indice,dato): Inser ta el dato en la posicion indicada. Items.Remove(dato): Elimina el dato de el listbox. Items.RemoveAt(indice): Elimina el dato que está en la posición indicada. Items[indice]: get or set el dato en la posición indicada (ver primera nota abajo). Notas: GET y SET son propiedades asociadas a todos los objetos o controles y sus propiedades en microsoft net, por ejemplo para un textbox, si en un programa se dice alfa = text5.text; se está usando get, si se dice text5.text=500; se está usando set. Otro ejemplo alfa=listbox2.Items(2); se está usando (get) listbox2.Items(4)=“mama”; se está usando (set). OBSERVAR QUE NO SE USA PROPIEDAD TEXT. Esto de get-set se puede usar para cualquier propiedad, por ejemplo alfa = listbox8.background; se está usando get, pero si se codifica listbox8.background=amarillol; se está usando set, como se observa es importante entender y aplicar este GET-SET en todos los programas. Capturas: Solo se ocupara un TextBox, el evento click del button y el metodo Add del ListBox. Proceso: Se ocupara un ciclo for y el metodo count de ListBox. Despliegues: No se ocupa porque todos los cambios son visibles. Pero si se quiere pasar de un ListBox a otro ListBox, entonces ciclo for, count, etc. Ejemplo prog

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click LISTA.Items.Add(DATO.Text) DATO.Text = "" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim r, cant, meses As Integer cant = LISTA.Items.Count

Semestre 2012 - I

100

101

HERRAMIENTAS DE DESARROLLO DE SOFTWARE For r = 0 To cant - 1 meses = LISTA.Items(r) meses = meses * 12 LISTA.Items(r) = meses Next r End Sub Recordar que el primer indice en un ListBox es el cero por eso el ciclo va desde el cero hasta la cantidad de elementos menos uno. Corrida:

TAREAS PROGRAMACION VISUAL BASIC 2008 1.- CAPTURAR EN UNA LISTA LOS SUELDOS DE 6 EMPLEADOS Y DESPLEGARLOS EN UNA SEGUNDA LISTA AUMENTADOS EN UN 30%. 2.- CAPTURAR EN UNA LISTA LOS PESOS EN KILOGRAMOS DE 6 PERSONAS DESPLEGARLOS EN UNA SEGUNDA LISTA CONVERTIDOS A LIBRAS Y ADEMAS SOLO LOS MAYORES DE 100 LIBRAS. 3.- CAPTURAR EN SUS 4 LISTAS RESPECTIVAS MATRICULA, NOMBRE Y DOS CALIFICACIONES DE 5 ALUMNOS, DESPUES CALCULAR UNA LISTA DE PROMEDIOS DE CALIFICACIONES.

Semestre 2012 - I

101

102

HERRAMIENTAS DE DESARROLLO DE SOFTWARE 4.-

CAPTURAR

EN

SUS

LISTAS

RESPECTIVAS

NUMEMPLEADO,

NOMEMPLEADO, DIAS TRABAJADOS Y SUELDO DIARIO DE 5 EMPLEADOS, DESPLEGAR EN OTRA PANTALLA O PANEL LA NOMINA PERO SOLO DE AQUELLOS EMPLEADOS QUE GANAN MAS DE $300.00 A LA SEMANA ARREGLOS COMO PARAMETROS Para pasar un arreglo completo como parámetro a un procedimiento o a una función solo se manda el nombre del arreglo sin corchetes e índices, en el procedimiento o función que recibe solo se declara un arreglo del mismo tipo y se puede usar el mismo o diferente nombre del arreglo sin corchetes e índices. Sin embargo es conveniente aclarar, que a diferencia de variables escalares normales visual basic 2008 no genera una nueva variable en memoria ni tampoco copia los datos al arreglo que recibe, en su lugar visual basic sigue usando los datos que están en el arreglo original, es por esta razón que cambios que se le hagan a los datos del arreglo que recibe realmente se está haciendo al arreglo original como lo muestra el siguiente ejemplo:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' creando y cargando una lista local con 5 elementos Dim lista1() As Integer = {1, 2, 3, 4, 5} ' pasandola a un procedimiento ' observar que se pasa sin parentesis Call PROC1(lista1) ' desplegando lista original y observar el resultado Dim r As Integer For r = 0 To 4

Semestre 2012 - I

102

103

HERRAMIENTAS DE DESARROLLO DE SOFTWARE LISTA.Items.Add(lista1(r)) Next r End Sub

Parámetro

Sub PROC1(ByVal vector) ' recibiendola con otro nombre y ' sumando a vector + 100 Dim r As Integer For r = 0 To 4 vector(r) = vector(r) + 100 Next r End Sub

ARRAYS DE CONTROLES Visual Basic cuenta con el concepto de array de controles, en el que varios controles comparten el mismo conjunto de procedimientos de suceso, incluso aunque cada uno de los elementos individuales en el array pueda tener asignados diferentes valores para sus propiedades. Sólo podrá crear un array de control en tiempo de diseño y, como mínimo, al menos un control debe pertenecer al array. Podrá crear un array de controles utilizando cualquiera de los siguientes métodos: 1.

Crear un control y, posteriormente, asihnar un valor numérico (no negativo) a su propiedad Index; de esta forma habrá creado un array de control con un único elemento.

2.

Crear dos controles de la misma clase y asignarles el mismo valor a su propiedad Name. Visual Basic muestra un cuadro de diálogo avisándole que ya existe un control con el mismo nombre y le preguntara si desea crear un array de controles.

3.

Seleccionar un control del formulario, pulsar Crtl + C para copiarlo en el portapapeles y, posteriormente, pulsar Ctrl + V para pegar una nueva instancia del control con la misma propiedad Name que el objeto inicial. Visual Basic muestra el mensaje de aviso mencionando en el punto anterior.

Los array de controles son una de las características más interesantes del entorno Visual Basic y añade una gran flexibilidad a sus programas:



Los controles que pertenecen al mismo array comparten el mismo conjunto de procedimientos de suceso; de esta forma podrá reducir drásticamente la cantidad de código que tendrá que escribir en respuesta a una acción del usuario.



Podrá añadir dinámicamente nuevos elementos al array de controles en tiempo de ejecución; en otras palabras, podrá crear nuevos controles que no existan en tiempo de diseño.



Los elementos de los array de controles consumen pocos recursos en comparación con los controles

Semestre 2012 - I

103

104

HERRAMIENTAS DE DESARROLLO DE SOFTWARE normales y producen archivos ejecutables de menor tamaño. Además, los formularios de Visual Basic pueden almacenar hasta 256 nombres de controles distintos, pero un array de controles cuenta como uno solo de estos nombres. En otras palabras , los arrays de controles le permiten superar con facilidad esa limitación EJEMPLO: Crear el siguiente array de controles para el ingreso de la siguiente información

Public Class Form1 Inherits System.Windows.Forms.Form

Dim T(7) As TextBox Dim Lb(7) As Label Dim Titu() As String = {"Nombre:", "Domicilio:", "Localidad:", "Partido:", "Teléfono:", "País:", "Código Postal:"}

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim I As Integer, Y As Integer For i = 0 To 6 T(i) = New TextBox() Lb(I) = New Label() Lb(I).Text = Titu(I) Next

Semestre 2012 - I

104

105

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

For i = 0 To 6 Me.Controls.Add(T(i)) Me.Controls.Add(Lb(I)) Lb(I).Top = Y + 3 T(I).Top = Y Y = Y + 30 T(I).Text = Rnd() * 200 T(I).Left = 80 Next End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click T(0).text = "hola" End Sub End Class

Semestre 2012 - I

105

106

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIOS Elaborar una aplicacion que me permita llamar a dos cuadros de dialogo (Fuente y Color) los cuales al ser activado van alterar el contenido de la caja de texto donde se ingreso la informacion.

Public Class Form1 Private Sub BtnFuente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFuente.Click 'Para establecer tambien el color de la letra FontD.ShowColor = True 'Activa el cuadro de diálogo FontD.ShowDialog() 'Asigna al texto escrito el Tipo,Tamaño y estilo de letra seleccionado TxtTexto.Font = FontD.Font 'Asigna al texto escrito el color de letra seleccionado TxtTexto.ForeColor = FontD.Color End Sub Private Sub BtnColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnColor.Click 'Activa el Cuadro de Diálogo ColorD.ShowDialog() 'Asigna el color seleccionado al fondo del texto TxtTexto.BackColor = ColorD.Color End Sub Private Sub TxtTexto_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtTexto.TextChanged BtnFuente.Enabled = TxtTexto.Text.Trim String.Empty BtnColor.Enabled = TxtTexto.Text.Trim String.Empty End Sub End Class

Semestre 2012 - I

106

107

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

SESIÓN VI CONTROL DE EXCEPCIONES Y MENUES

CONTENIDO  Control de Excepciones  Minués Principal y Contextual PRÁCTICA DE REFORZAMIENTO

Semestre 2012 - I

107

108

HERRAMIENTAS DE DESARROLLO DE SOFTWARE CONTROL DE EXCEPCIONES Una excepción es un error inesperado que puede ocurrir durante la ejecución de un programa, lo que genera que la ejecución se detenga o funciones en forma incorrecta. El control de excepciones en toda aplicación es muy importante, porque permite brindar información adecuada al usuario de la aplicación sobre el problema detectado, sin necesidad que s e interrumpa su ejecución y permitiendo que se corrija el problema. En Visual Basic .NET existe la clase Excepción que permite controlar las excepciones dentro de un aplicación. Para empezar a controlar las excepciones debe definir una variable con esta clase .Por ejemplo: Dim Ex As Exception La variable que se define con la clase Exception tendrá toda la información de la excepción o error que se produce. Por ejemplo:

Cuando ocurre una excepción dentro de un programa y no se controla la ejecución del programa, se deetiene y se visualiza una ventana similar a la siguiente, dependeiendo del tipo de excepción: Si hace clic en Ver detalle, se visualiza el detalle de la excepción:

Try Catch Esta instrucción permite controlar las excepciones o errores inesperados que pueden ocurrir en Visual Basic .NET. Su sintaxis es la siguiente: Try Bloque de Instrucciones Nº 01 Catch Variable As Exception Bloque de Instrucciones Nº 02 Finally Bloque de Instrucciones Nº 03 End Try

Semestre 2012 - I

108

109

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Bloque de Instrucciones Nº 01 Es el bloque de instrucciones que deseamos controlar, es decir, el bloque de instrucciones de nuestra aplicación donde puede ocurrir la excepción o error. Por ejemplo, en este bloque de instrucciones puede ir el método Open, porque puede ocurrir un error al abrir la conexión a SQL Server, porque no existe el servidor, el nombre del usuario o su contraseña son incorrectos, hemos asignado un valor incorrecto en la cadena de conexión, etc. Bloque de Instrucciones Nº 02 Es el bloque de instrucciones que se debe ejecutar cuando ocurra una excepción durante la ejecución de la aplicación. En este bloque de instrucciones debemos reconocer la excepción o el error producido para enviar un mensaje adecuado al usuario y evitar que nuestra aplicación deje de funcionar. En la parte inicial de este bloque de instrucciones y después de la palabra Catch, se debe definir una variable de tipo Excepción, la cual almacenara en sus propiedades la información de la excepción producida. La variable también se puede definir al inicio de programa. Bloque de Instrucciones Nº 03 Este bloque de instrucciones es opcional y si se escriben, se ejecutan siempre es decir. Si se produce o no la excepción. Si en una parte del bloque Try Catch desea salir de él, puede utilizar Exit Try. Exit Try es una palabra clave que permita salir del bloque Try Catch y ejecuta la instrucción o instrucciones que se encuentran después de End Try. La palabra clave Exit Try no se puede utilizar el bloque de instrucciones Nº 03, es decir, después de la palabra Finally.

Semestre 2012 - I

109

110

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Public Class Form1 Dim Ex As Exception Dim Dato As String Dim Nota1, Nota2, Promedio As Double Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try 'Ingrea la Primera Nota Dato = InputBox("Ingresa la nota Nº 01", "Por Favor", 0) 'PREGUNTA SI ESTA NULA O VACIA If String.IsNullOrEmpty(Dato) = False Then Nota1 = Double.Parse(Dato) Else 'Si esta vacia o nula le asigna el 0 Nota1 = 0 End If 'ingresa la primera Nota Dato = InputBox("Ingresa la nota Nº 02", "Por Favor", 0) 'pregunta si esta nula o vacia If String.IsNullOrEmpty(Dato) = False Then Nota2 = Double.Parse(Dato) Else 'Si esta vacia o nula le asigna el 0 Nota2 = 0 End If 'Calcual el promedio Promedio = (Nota1 + Nota2) / 2 'MUESTRA SU PROMEDIO MsgBox("Su promedio es:" & Promedio.ToString("#0.00") & "Puntos", MsgBoxStyle.Information, "resultado") Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source) End Try End Sub End Class Utilizando Finally ................................................................................................... ................................................................................................. 'ingresa la primera Nota Dato = InputBox("Ingresa la nota Nº 02", "Por Favor", 0) 'pregunta si esta nula o vacia If String.IsNullOrEmpty(Dato) = False Then

Semestre 2012 - I

110

111

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Nota2 = Double.Parse(Dato) Else 'Si esta vacia o nula le asigna el 0 Nota2 = 0 End If 'Calcual el promedio Promedio = (Nota1 + Nota2) / 2 Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source) Finally 'MUESTRA SU PROMEDIO MsgBox("Su promedio es:" & Promedio.ToString("#0.00") & "Puntos", MsgBoxStyle.Information, "resultado") End Try Utilizando el bloque Finally se muestra el promedio final

Semestre 2012 - I

111

112

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Menús en Visual Basic .net y 200 Hay dos tipos de menús que se pueden poner en aplicaciones hechos en Visual Basic .NET: el menú principal (MenuStrip) y el contextual (ContextMenuStript).

MenuStrip El menú principal es el que aparece en las aplicaciones abajo de la barra de la ventana (o sea, la tirita que dice "Archivo, Edición, etc."). Para crear uno, se tiene que arrastrar el objeto MenuStrip a la ventana. El ambiente de diseño cambia un poco: el "control" aparece en la parte inferior, fuera de la ventana y en la parte superior de la ventana (o forma) que estás creando, aparece una cajita que dice "Escriba aquí". La pantalla se ve algo así:

Al darle clic sobre ese mensaje, te permite escribir un texto (el letrero del primer menú) y aparecen "huecos" para escribir más opciones. Las siguientes imágenes muestran el efecto que tiene ir tecleando opciones del menú.

Semestre 2012 - I

112

113

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Al ejecutar este formulario observe el menu de opciones

Para mostrar un mensaje por cada opción escriba el siguiente codigo: Public Class Form7 Private Sub ClientesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClientesToolStripMenuItem.Click MessageBox.Show("Esta es la opcion Mantenimiento de Clientes", "Menues") End Sub Private Sub ProductosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProductosToolStripMenuItem.Click

Semestre 2012 - I

113

114

HERRAMIENTAS DE DESARROLLO DE SOFTWARE MessageBox.Show("Esta es la opcion Mantenimiento de Productos", "Menues") End Sub End Class

Menú contextual Arrastre el icono del Menú Contextual

y

se puede escribir los nombres de las opciones.

Si le das click afuera de la ventana del menú contextual que aparece, desaparece

Para activar estas opciones se debe insertar un objeto y programar un evento para el menú contextual.

Semestre 2012 - I

114

115

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Public Class Form8 Private Sub Label1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseDown If e.Button = Windows.Forms.MouseButtons.Right Then ContextMenuStrip1.Show(Label1, New Point(e.X, e.Y)) End If End Sub Ejecute la aplicación y cuando se haga click sobre la etiqueta observe que aparece el menu contextual

Semestre 2012 - I

115

116

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIOS LABORATORIO - 001 Elaborar una aplicacion que permita registrar los datos de los Empleados de una Empresa, estas seran mostradas en un ListView llamado LvPersonal, esta lista estara controlada por un Combo llamado CboModo el cual mostrara los estados del ListView (Iconos Grandes,Detalle,Lista,Iconos Pequeños,Tìtulos), tambien podran ser mostraos algunos graficos agregados en un ImageList1.

Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Asigna el formato inicial al control ListView LvPersonal.View = View.Details LvPersonal.GridLines = True LvPersonal.FullRowSelect = True LvPersonal.Columns.Add("Codigo", 50, HorizontalAlignment.Center) LvPersonal.Columns.Add("Nombre", 200, HorizontalAlignment.Left) LvPersonal.Columns.Add("Sueldo", 100, HorizontalAlignment.Right) 'Llena el Personal Dim Personal As ListViewItem Personal = New ListViewItem("001", 0) Personal.SubItems.Add("Julio Dávila") Personal.SubItems.Add("2,500.00") LvPersonal.Items.Add(Personal) Personal = New ListViewItem("002", 0)

Semestre 2012 - I

116

117

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Personal.SubItems.Add("Oscar Ruiz") Personal.SubItems.Add("850.00") LvPersonal.Items.Add(Personal) Personal = New ListViewItem("003", 0) Personal.SubItems.Add("Miguel Saavedra") Personal.SubItems.Add("1,350.00") LvPersonal.Items.Add(Personal) CboModo.SelectedIndex = 1 'Evita que se modifique el código TxtCodigo.ReadOnly = True 'Llama al procedimiento NoIngresar NoIngresar() End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CboModo.SelectedIndexChanged LvPersonal.View = CboVistas.SelectedIndex End Sub Private Sub LvPersonal_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LvPersonal.Click TxtCodigo.Text = LvPersonal.SelectedItems(0).SubItems(0).Text TxtNombre.Text = LvPersonal.SelectedItems(0).SubItems(1).Text TxtSueldo.Text = LvPersonal.SelectedItems(0).SubItems(2).Text End Sub Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnNuevo.Click TxtCodigo.Text = Format(LvPersonal.Items.Count + 1, "000") 'Permite escribir el Nombre y Sueldo TxtNombre.ReadOnly = False TxtSueldo.ReadOnly = False TxtNombre.Text = "" TxtSueldo.Text = "" TxtNombre.Focus() 'Desactiva el botón Nuevo BtnNuevo.Enabled = False 'Activa los botones Grabar e Ignorar BtnGrabar.Enabled = True BtnIgnorar.Enabled = True End Sub Private Sub BtnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

Semestre 2012 - I

117

118

HERRAMIENTAS DE DESARROLLO DE SOFTWARE BtnGrabar.Click Dim Codigo, Nombre, Sueldo As String Dim Personal As ListViewItem 'Asigna los datos ingresados a Variables Codigo = TxtCodigo.Text Nombre = TxtNombre.Text Sueldo = TxtSueldo.Text 'Agrega al control ListView los datos ingresados Personal = New ListViewItem(Codigo, 0) Personal.SubItems.Add(Nombre) Personal.SubItems.Add(Sueldo) LvPersonal.Items.Add(Personal) 'Llama al procedimiento NoIngresar NoIngresar() End Sub Private Sub BtnIgnorar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIgnorar.Click TxtCodigo.Text = "" TxtNombre.Text = "" TxtSueldo.Text = "" NoIngresar() End Sub Sub NoIngresar() TxtNombre.ReadOnly = True TxtSueldo.ReadOnly = True 'Activa el botón Nuevo BtnNuevo.Enabled = True 'Desactiva los botones Grabar e Ignorar BtnGrabar.Enabled = False BtnIgnorar.Enabled = False End Sub End Class

Semestre 2012 - I

118

119

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIO - 002 Elaborar una aplicacion que permita mostrar la Zona, Departamentos, Provincias en un TreeView(TvElementos) y que al seleccionar uno de ellos se mostrara sus datos en los labels respectivos.

Public Class Form1 Private Sub BtnVer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnVer.Click TvElementos.Nodes.Clear() Dim Padre As TreeNode Dim Hijo As TreeNode '**** ZONA NORTE **** Padre = New TreeNode("Norte") TvElementos.Nodes.Add(Padre) 'Elementos del Norte Hijo = Padre.Nodes.Add("Lima") Hijo.Nodes.Add("Lima") Hijo.Nodes.Add("Huaral") Hijo.Nodes.Add("Huacho") Hijo = Padre.Nodes.Add("Chiclayo") Hijo.Nodes.Add("Motupe") Hijo.Nodes.Add("Monsefu") '**** ZONA SUR **** Padre = New TreeNode("Sur") TvElementos.Nodes.Add(Padre) 'Elementos de la Zona Sur Hijo = Padre.Nodes.Add("Chincha") Hijo.Nodes.Add("GrosoPrado") Hijo.Nodes.Add("ChinchaBaja")

Semestre 2012 - I

119

120

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Hijo.Nodes.Add("ChinchaAlta") Hijo = Padre.Nodes.Add("Pisco") Hijo.Nodes.Add("El Tonel") Hijo.Nodes.Add("El Puerto") Hijo = Padre.Nodes.Add("Ica") Hijo.Nodes.Add("Paracas") Hijo.Nodes.Add("Ica") Hijo.Nodes.Add("Nazca") '**** ZONA CENTRO**** Padre = New TreeNode("Centro") TvElementos.Nodes.Add(Padre) 'Elementos Centro Hijo = Padre.Nodes.Add("Huancayo") Hijo = Padre.Nodes.Add("Cuzco") End Sub Private Sub TvElementos_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows .Forms. TreeViewEventArgs) Handles TvElementos.AfterSelect LblZona.Text = TvElementos.SelectedNode.Text LblDepartamento.Text = TvElementos.SelectedNode.FullPath LblProvincia.Text = TvElementos.SelectedNode.Level End Sub End Class

Semestre 2012 - I

120

121

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIO - 003 Elaborar una aplicacion que permita registrar los datos de los Empleados de una Empresa, estas seran mostradas en un ListView llamado LvPersonal, esta lista estara controlada por un Combo llamado CboModo el cual mostrara los estados del ListView (Iconos Grandes,Detalle,Lista,Iconos Pequeños,Tìtulos), tambien podran ser mostraos algunos graficos agregados en un ImageList1.

Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Asigna el formato inicial al control ListView LvPersonal.View = View.Details LvPersonal.GridLines = True LvPersonal.FullRowSelect = True LvPersonal.Columns.Add("Codigo", 50, HorizontalAlignment.Center) LvPersonal.Columns.Add("Nombre", 200, HorizontalAlignment.Left) LvPersonal.Columns.Add("Sueldo", 100, HorizontalAlignment.Right) 'Llena el Personal Dim Personal As ListViewItem Personal = New ListViewItem("001", 0) Personal.SubItems.Add("Julio Dávila") Personal.SubItems.Add("2,500.00") LvPersonal.Items.Add(Personal) Personal = New ListViewItem("002", 0) Personal.SubItems.Add("Oscar Ruiz")

Semestre 2012 - I

121

122

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Personal.SubItems.Add("850.00") LvPersonal.Items.Add(Personal) Personal = New ListViewItem("003", 0) Personal.SubItems.Add("Miguel Saavedra") Personal.SubItems.Add("1,350.00") LvPersonal.Items.Add(Personal) CboModo.SelectedIndex = 1 'Evita que se modifique el código TxtCodigo.ReadOnly = True 'Llama al procedimiento NoIngresar NoIngresar() End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CboModo.SelectedIndexChanged LvPersonal.View = CboVistas.SelectedIndex End Sub Private Sub LvPersonal_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LvPersonal.Click TxtCodigo.Text = LvPersonal.SelectedItems(0).SubItems(0).Text TxtNombre.Text = LvPersonal.SelectedItems(0).SubItems(1).Text TxtSueldo.Text = LvPersonal.SelectedItems(0).SubItems(2).Text End Sub Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnNuevo.Click TxtCodigo.Text = Format(LvPersonal.Items.Count + 1, "000") 'Permite escribir el Nombre y Sueldo TxtNombre.ReadOnly = False TxtSueldo.ReadOnly = False TxtNombre.Text = "" TxtSueldo.Text = "" TxtNombre.Focus() 'Desactiva el botón Nuevo BtnNuevo.Enabled = False 'Activa los botones Grabar e Ignorar BtnGrabar.Enabled = True BtnIgnorar.Enabled = True End Sub Private Sub BtnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGrabar.Click

Semestre 2012 - I

122

123

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Dim Codigo, Nombre, Sueldo As String Dim Personal As ListViewItem 'Asigna los datos ingresados a Variables Codigo = TxtCodigo.Text Nombre = TxtNombre.Text Sueldo = TxtSueldo.Text 'Agrega al control ListView los datos ingresados Personal = New ListViewItem(Codigo, 0) Personal.SubItems.Add(Nombre) Personal.SubItems.Add(Sueldo) LvPersonal.Items.Add(Personal) 'Llama al procedimiento NoIngresar NoIngresar() End Sub Private Sub BtnIgnorar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIgnorar.Click TxtCodigo.Text = "" TxtNombre.Text = "" TxtSueldo.Text = "" NoIngresar() End Sub Sub NoIngresar() TxtNombre.ReadOnly = True TxtSueldo.ReadOnly = True 'Activa el botón Nuevo BtnNuevo.Enabled = True 'Desactiva los botones Grabar e Ignorar BtnGrabar.Enabled = False BtnIgnorar.Enabled = False End Sub End Class

Semestre 2012 - I

123

124

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIO - 003 Elaborar una aplicacion que permita mostrar la Zona, Departamentos, Provincias en un TreeView(TvElementos) y que al seleccionar uno de ellos se mostrara sus datos en los labels respectivos.

Public Class Form1 Private Sub BtnVer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnVer.Click TvElementos.Nodes.Clear() Dim Padre As TreeNode Dim Hijo As TreeNode '**** ZONA NORTE **** Padre = New TreeNode("Norte") TvElementos.Nodes.Add(Padre) 'Elementos del Norte Hijo = Padre.Nodes.Add("Lima") Hijo.Nodes.Add("Lima") Hijo.Nodes.Add("Huaral") Hijo.Nodes.Add("Huacho") Hijo = Padre.Nodes.Add("Chiclayo") Hijo.Nodes.Add("Motupe") Hijo.Nodes.Add("Monsefu") '**** ZONA SUR **** Padre = New TreeNode("Sur") TvElementos.Nodes.Add(Padre) 'Elementos de la Zona Sur Hijo = Padre.Nodes.Add("Chincha") Hijo.Nodes.Add("GrosoPrado") Hijo.Nodes.Add("ChinchaBaja")

Semestre 2012 - I

124

125

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Hijo.Nodes.Add("ChinchaAlta") Hijo = Padre.Nodes.Add("Pisco") Hijo.Nodes.Add("El Tonel") Hijo.Nodes.Add("El Puerto") Hijo = Padre.Nodes.Add("Ica") Hijo.Nodes.Add("Paracas") Hijo.Nodes.Add("Ica") Hijo.Nodes.Add("Nazca") '**** ZONA CENTRO**** Padre = New TreeNode("Centro") TvElementos.Nodes.Add(Padre) 'Elementos Centro Hijo = Padre.Nodes.Add("Huancayo") Hijo = Padre.Nodes.Add("Cuzco") End Sub Private Sub TvElementos_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows .Forms. TreeViewEventArgs) Handles TvElementos.AfterSelect LblZona.Text = TvElementos.SelectedNode.Text LblDepartamento.Text = TvElementos.SelectedNode.FullPath LblProvincia.Text = TvElementos.SelectedNode.Level End Sub End Class

Semestre 2012 - I

125

126

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIO - 004 Elaborar una aplicación que permita obtener el factorial y si es un numero primo de un numero atravez de la creacion de una clase, donde la clase debera validar el ingreso de los numeros y debera calcular el factorial y si el numero es primo.

CLASE INFORME Public Class Informe Dim m_Numero As Long 'Constructor de la clase Public Sub New(ByVal Numero As Integer) m_Numero = Numero End Sub 'Propiedad de la clase Public Property Numero() As Integer Get Return m_Numero End Get Set(ByVal value As Integer) m_Numero = value End Set End Property 'Métodos de la clase Public Function Factorial() As Integer Dim X, F As Integer If Numero > 11 Then MessageBox.Show("Ingrese Valores entre 0 y 11", "Por Favor") Exit Function End If F=1 For X = 1 To m_Numero F=F*X Next

Semestre 2012 - I

126

127

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Return F End Function Public Function Primo() As String Dim X As Integer Dim Sw As Boolean = False If m_Numero < 3 Then Sw = False For X = 2 To m_Numero - 1 If m_Numero Mod X = 0 Then Sw = True End If Next If Sw = True Then Return "No" Else Return "Si" End If End Function End Class EN EL FORMULARIO Public Class Form1 Private Sub BtnVer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnVer.Click If TxtNumero.Text = String.Empty Then MessageBox.Show("Ingrese Número", "Por Favor") TxtNumero.Focus() Exit Sub End If Dim Numero As Integer 'Almacena el numero ingresado Numero = Integer.Parse(TxtNumero.Text) 'Crea una instancia de la clase Informe Dim Num As New Informe(Numero) 'Muestra los resultados LblFactorial.Text = Num.Factorial.ToString LblPrimo.Text = Num.Primo End Sub End Class

Semestre 2012 - I

127

128

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIO - 005 Elaborar una aplicación que usando una clase nos permita obtener en el primer formulario el Total vendido a un cliente, y en el formulario dos el total vendido al cliente con descuentos asi como el total a pagar.

Creando la Clase General:(Total Compra) Public Class TotalCompra Dim m_PrecioCompra As Double Dim m_Cantidad As Integer 'Constructor de la clase Public Sub New(ByVal Pc As Double, ByVal Cant As Integer) m_PrecioCompra = Pc m_Cantidad = Cant End Sub 'Propiedades de la clase Public Property PCompra() As Double Get Return m_PrecioCompra End Get Set(ByVal value As Double) m_PrecioCompra = value End Set End Property Public Property Cantidad() As Integer Get Return m_Cantidad End Get Set(ByVal value As Integer)

Semestre 2012 - I

128

129

HERRAMIENTAS DE DESARROLLO DE SOFTWARE m_Cantidad = value End Set End Property 'Metodo de la clase Public Function Total() As Double Dim Utilidad, PrecioVenta As Double Select Case m_Cantidad Case 1 To 10 Utilidad = 50 Case 11 To 20 Utilidad = 35.8 Case 20 To 40 Utilidad = 10 Case Is > 40 Utilidad = 5.5 End Select PrecioVenta = m_PrecioCompra * (1 + Utilidad / 100) Return PrecioVenta * m_Cantidad End Function End Class Public Class TotalPago Inherits TotalCompra Dim m_Descuento As Double 'Constructor de la clase Sub New(ByVal Pc As Double, ByVal Cant As Integer, ByVal Des As Double) MyBase.New(Pc, Cant) m_Descuento = Des End Sub Public Property Descuento() As Double Get Return m_Descuento End Get Set(ByVal value As Double) m_Descuento = value End Set End Property Public Function Pagos() As Double Dim DSoles, Pago As Double DSoles = MyBase.Total * m_Descuento / 100 Pago = MyBase.Total - DSoles

Semestre 2012 - I

129

130

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Return Pago End Function End Class En el Formulario1 Public Class Form1 Private Sub BtnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalcular.Click Dim Precio As Double Dim Cantidad As Integer Precio = Double.Parse(TxtPrecio.Text) Cantidad = Integer.Parse(TxtCantidad.Text) Dim R As New TotalCompra(Precio, Cantidad) LblTotal.Text = R.Total.ToString("#,##0.00") End Sub End Class En el Formulario2 Public Class Form2 Private Sub BtnCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalcular.Click Dim Precio, Utilidad As Double Dim Cantidad As Integer Precio = Double.Parse(TxtPrecio.Text) Cantidad = Integer.Parse(TxtCantidad.Text) Utilidad = Integer.Parse(TxtUtilidad.Text) Dim R As New TotalPago(Precio, Cantidad, Utilidad) LblTotal.Text = R.Total.ToString("#,##0.00") LblPago.Text = R.Pagos.ToString("#,##0.00") End Sub End Class

Semestre 2012 - I

130

131

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

LABORATORIO - 006 Elaborar una aplicación que use una clase para validar las notas al ingresar y que permita obtener el promedio la Condicion (Aprobado o Desaprobado) la cualidad (Excelente o Bueno) de un determinado alumno.

Semestre 2012 - I

131

132

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

SESIÓN VII BASE DE DATOS

CONTENIDO



Base de Datos Relacional



LENGUAJE SQL

PRACTICA DE REFORZAMIENTO

Semestre 2012 - I

132

133

HERRAMIENTAS DE DESARROLLO DE SOFTWARE BASE DE DATOS RELACIONAL Concepto Una base de datos relacional es

percibida por el usuario como una colección de relaciones o tablas

bidimensionales. Ejemplo La siguiente tabla relacional contiene datos de los empleados.

NUM -EM P

APELL

NOM

NUM -DPTO

100

SM ITH

JOHN

10

320

ADAM S

JANE

15

210

BROWN

JIM

10

405

GOM EZ

JOSE

12

378

JOHNSON

LUCY

25

tabla (relación) fila (tupla) columna (atributo) ORIGEN DE LA TEORÍA RELACIONAL El origen de la teoría relacional viene de la teoría de conjuntos. Una tabla debe ser vista como un conjunto y para satisfacer un

requerimiento

de

información se aplican operadores de conjunto como unión, intersección,

producto cartesiano, join, proyección, select, etc. Ejemplo Para seleccionar a todos los empleados que trabajan en el Departamento 10, use la siguiente instrucción SQL.

SQL

SELECT num_emp, apellido, nombre, num-dpto

2

FROM empleado

3

WHERE num_dpto = 10;

Semestre 2012 - I

133

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

134

NUM-EMP ------100 210

APELLIDO NOMBRE NUM-DPTO ------ ----- -------SMITH JOHN 10 BROWN JIM 10

SQL (Structured Query Language) se usa para manipular bases de datos relacionales. Discusión 

El ANSI (American National Standards Institute) ha establecido a SQL como el lenguaje estándar para operar sobre bases de datos relacionales.



Una base de datos relacional puede soportar un completo conjunto de operaciones relacionales. Las operaciones relacionales manipulan conjuntos de valores de datos. Las tablas pueden ser operadas para crear otras tablas. Las operaciones relacionales pueden ser anidadas.

CLAVE PRIMARIA Una Clave Primaria (PK) es una columna o conjunto de columnas que únicamente identifica cada fila en una tabla. Cada tabla debe tener una clave primaria y una clave primaria debe ser única. Ejemplo

La clave primaria para la tabla EMPLEADOS consiste en la columna NUM_EMP. Cada fila en la tabla es únicamente identificada por su valor NUM_EMP.

Clave Primaria

NUM-EMP

APELL

NOM

100

SMITH

JOHN

10

310

ADAMS

JANE

15

210

BROWN

JIM

10

405

GOMEZ

JOSE

378

JOHNSON LUCY

Semestre 2012 - I

NUM-DPTO

Tabla EMPLEADOS

05

134

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

135

Discusión 

No se permiten los duplicados en una Clave Primaria. La clave primaria debe ser única.



Las claves primarias generalmente no pueden ser cambiadas.



El UID de una entidad se mapeará a una Clave Primaria en su correspondiente tabla.

CLAVES PRIMARIAS COMPUESTAS Una Clave Primaria que se conforma de múltiples columnas se llama Clave Primaria Compuesta. Ejemplo La clave primaria compuesta para la tabla CUENTA consiste en la combinación de las columnas NUM_BANCO y NUM_CUENTA. Cada fila es únicamente identificada por sus valores de NUM_BANCO y NUM_CUENTA.

Clave Primaria

NUM-BANCO 104 104 105 103 105

NUM-CUENTA 75760 77956 89570 55890 76954

SALDO 12,000.50 100.10 55,775.00 15,001.85 5.00

FECHA-APER 21-OCT-89

Tabla CUENTA

15-ENE-85 10-MAR-71 25-SEP-91

Discusión 

Las columnas de una clave primaria compuesta debe ser única en la combinación. Las columnas individuales pueden tener duplicados, pero en la combinación, no se permiten duplicados.

CLAVES PRIMARIAS NO NULAS Ninguna parte de una clave primaria puede ser NULL (nula). Ejemplo NUM_EMP es la clave primaria de la tabla EMPLEADOS. Por lo tanto NUM_EMP debe ser definido como NOT NULL.

Semestre 2012 - I

135

136

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Clave Primaria

NUM-EMP

APELL

NOM

100

SMITH

JOHN

10

310

ADAMS

JANE

15

210

BROWN

JIM

10

405

GOMEZ

JOSE

378

JOHNSON LUCY

Tabla

NUM-DPTO

EMPLEADOS

05

Ejemplo ¿Cómo viola la tabla CUENTA las reglas de las Claves Primarias?

Clave Primaria

NUM-BANCO 104 104 103 105

NUM-CUENTA 75760 77956 89570 55890

SALDO 12,000.50 100.10 55,775.00 15,001.85 5.00

FECHA-APER 21-OCT-89

Tabla CUENTA

15-ENE-85 10-MAR-71 25-SEP-91

Dos de las filas contienen valores NULL en parte de la clave primaria compuesta. Tanto NUM_BANCO como NUM_CUENTA deben ser definidos como NOT NULLS. CLAVES CANDIDATAS Y CLAVES ALTERNAS Una tabla puede tener más de una columna o combinación de columnas que pueden servir como la clave primaria de la tabla. Cada una de ellas se llama Clave Candidata. Ejemplo ¿Cuáles son las claves candidatas para la tabla EMPLEADOS?

Semestre 2012 - I

136

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

137

NUM-EMP

APELL

NOM

SMITH ADAMS BROWN GOMEZ JOHNSON

JOHN JANE JIM JOSE LUCY

NUM-DPTO

ID-PLASUELD

10 15 10

9710 8730 1157 3394 4477

Tabla 100 310 210 405 378

05

EMPLEADOS

NUM_EMP e ID_PLASUELD son claves candidatas. Seleccione una clave candidata para ser la Clave Primaria para la tabla. Las otras candidatas se convierten en Claves Alternas. Ejemplo

Clave Primaria

NUM-EMP 100 310 210 405 378

Clave Alterna

APELL

NOM

SMITH ADAMS BROWN GOMEZ JOHNSON

JOHN JANE JIM JOSE LUCY

NUM-DPTO

ID-PLASUELD

10 15 10

9710 8730 1157 3394 4477

05

Tabla EMPLEADOS

Discusión 

Todas las Claves Candidatas deben ser únicas y NOT NULL.



Los UIDs secundarios se mapean a claves alternas.

CLAVES FORÁNEAS Una Clave Foránea (FK) es una columna o combinación de columnas en una tabla que es clave primaria en la misma u otra tabla. Ejemplo NUM_DEPT es una FK en la Tabla EMPLEADOS y se refiere a los valores en la columna NUM_DEPT en la Tabla DEPARTAMENTO.

Semestre 2012 - I

137

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

138

Clav e Primaria

NUM-EMP

APELL

Clav e Foránea

NOM

NUM-DPTO

ID-PLASUELD

Tabla EMPLEADOS

100

SMITH

JOHN

10

9710

310

ADAMS

JANE

15

8730

210

BROWN

JIM

10

1157

405

GOMEZ

JOSE

378

JOHNSON LUCY

3394 05

4477

Clav e Primaria

NUM-DPTO

NOM-DPTO

10

FINANZAS

15

OPERACIONES

12

MANUFACTURAS

25

VENTAS

Tabla DEPARTAMENTO

Discusión 

Las claves foráneas son la implementación de las relaciones de un modelo de datos conceptual.



Las claves foráneas se basan en los valores de los datos y son puramente lógicas.

Semestre 2012 - I

138

139

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Una clave foránea siempre debe parearse con el valor de una clave primaria (o de lo contrario ser NULL). Ejemplo La FK NUM_DEPT en la tabla EMPLEADOS se refiere a los valores de la PK NUM_DEPT en la tabla DEPARTAMENTO.

Clav e Primaria

Clav e Foránea

Clav e Primaria

NUM-EMP

APELL

NUM-DPTO

NUM-DPTO

100 310 210 405

SMITH ADAMS BROWN GOMEZ

10 15 10

10 15 20 25

NOM- DPTO FINANZAS OPERACIONES MANUFACTURAS VENTAS

Tabla

Tabla

EMPLEADOS

DEPARTAMENTO

Si una Clave Foránea es parte de una Clave Primaria, esa FK no puede ser NULL. Ejemplo En la tabla CUENTA, la FK NUM_BANCO debe ser NOT NULL porque es parte de la PK.

Clav e Primaria

NUM-BANCO 104 150 103 105

Clav e Foránea

NOM-BANCO FIRST UNITED CAPITOL FEDERAL WORLD SAVINGS

Tabla BANCO

Semestre 2012 - I

NUM-BANCO 104 104 150 103 105

Clav e Primaria

NUM-CUENTA 75760 77956 89570 33347 76954

SALDO 12,000.50 100.10 55,775.00 15,001.85 5.00

Tabla CUENTA

139

140

HERRAMIENTAS DE DESARROLLO DE SOFTWARE LENGUAJE SQL SQL (Structured Query Language) es el lenguaje que se utiliza para comunicarse con la base de datos Procedimiento de comunicación con la base de datos.

Orden SQL

Base de Datos Resultado

Lenguaje SQL SELECT Sintaxis: SELECT expresión FROM tabla [WHERE condición] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] [LIMIT [offset,] row_count | row_count OFFSET offset] Ejemplo: SELECT * from noticias WHERE fecha=CURDATE() LIMIT 10 ORDER BY fecha DESC Obtiene las noticias del día con un tope máximo de 10, ordenadas de la más reciente a la más antigua Operadores Lógicos Operador AND

OR NOT

Uso Es el "y" lógico. Evalua dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas. Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. Negación lógica. Devuelve el valor contrario de la expresión.

Semestre 2012 - I

140

141

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Operadores de Comparación Operador

Uso




Mayor que

Distinto de

=

Mayor ó Igual que

= BETWEEN LIKE In

Igual que Utilizado para especificar un intervalo de valores. Utilizado en la comparación de un modelo Utilizado para especificar registros de una base de datos

COMANDOS DML (DATA MANIPULATION LANGUAGE) Permite crear y definir nuevas base de datos, campos e índices.

COMANDO

DESCRIPCION

CREATE

Utilizados para crear nuevas tablas, campos e índices DROP. empleado para eliminar tablas o índices

DROP

Empleado para eliminar tablas e índices

ALTER

Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos

Semestre 2012 - I

141

142

HERRAMIENTAS DE DESARROLLO DE SOFTWARE COMANDOS DLL(DATA LINK LANGUAGE)

COMANDO

DESCRIPCION

SELECT

Usado para consultar registros en la sede datos

INSERT

Usados para cargar lotes de datos

UPDATE

Usado para modificar los valores de campos y registros

DELETE

Utilizados para eliminar los registros de una tabla de una base de datos.

Permite generar consultas para ordenar, filtrar y extraer datos de la base de datos. Cláusulas Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular. CLAUSULA FROM WHERE

DESCRIPCION Utilizada para especificar la tabla de la cual se van a seleccionar los registros. Utilizadas para especificar las condiciones que deben reunir los registros que se van a seleccionar.

GROUP BY HAVING ORDER BY

Utilizadas para separar los registros seleccionados en grupos específicos. Utilizada para expresar la condición que debe satisfacer cada grupo Utilizada para ordenar los registros seleccionados de acuerdo con un orden especifico.

Semestre 2012 - I

142

143

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

AGRUPACION DE DATOS Funciones de Agregado Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros. Función

Descripción

AVG

Utilizada para calcular el promedio de los valores de un campo determinado

COUNT

Utilizada para devolver el número de registros de la selección

SUM

Utilizada para devolver la suma de todos los valores de un campo determinado

MAX

Utilizada para devolver el valor más alto de un campo especificado

MIN

Utilizada para devolver el valor más bajo de un campo especificado

GROUP

BY

Combina los registros con valores idénticos, en la lista de campos especificados, en un único registro. Para cada registro se crea un valor sumario si se incluye una función SQL agregada, como por ejemplo Sum o Count, en la instrucción

SELECT.

Su

sintaxis

es:

SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo GROUP BY es opcional. Los valores de resumen se omiten si no existe una función SQL agregada en la instrucción SELECT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalúan en ninguna de las funciones

SQL

agregadas.

Se utiliza la cláusula WHERE para excluir aquellas filas que no desea agrupar, y la cláusula HAVING para filtrar los registros

una

vez

agrupados.

A menos que contenga un dato Memo u Objeto OLE , un campo de la lista de campos GROUP BY puede referirse a cualquier campo de las tablas que aparecen en la cláusula FROM, incluso si el campo no está incluido en la instrucción SELECT, siempre y cuando la instrucción SELECT incluya al menos una función SQL agregada. Todos los campos de la lista de campos de SELECT deben o bien incluirse en la cláusula GROUP BY o como argumentos SELECT

de Id_Familia,

una Sum(Stock)

función FROM

SQL

Productos

GROUP

agregada. BY

Id_Familia;

Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la cláusula GROUP

BY

que

satisfaga

las

condiciones

de

la

cláusula

HAVING.

HAVING es similar a WHERE, determina qué registros se seleccionan. Una vez que los registros se han agrupado utilizando

GROUP

BY,

SELECT

Id_Familia

HAVING Sum(Stock)

determina FROM

cuáles

de

Productos

ellos

se

van

GROUP

BY

a

mostrar. Id_Familia

HAVING Sum(Stock) > 100 AND NombreProducto Like BOS*; AVG Calcula la media aritmética de un conjunto de valores contenidos en un campo especificado de una consulta. Su

Semestre 2012 - I

143

144

HERRAMIENTAS DE DESARROLLO DE SOFTWARE sintaxis

es

la

siguiente

Avg(expr) En donde expr representa el campo que contiene los datos numéricos para los que se desea calcular la media o una expresión que realiza un cálculo utilizando los datos de dicho campo. La media calculada por Avg es la media aritmética (la suma de los valores dividido por el número de valores). La función Avg no incluye ningún campo Null

en

SELECT

Avg(Gastos)

AS

el

Promedio

FROM

cálculo.

Pedidos

WHERE

Gastos

>

100;

Count Calcula

el

número

de

registros

devueltos

por

una

consulta.

Su

sintaxis

es

la

siguiente

Count(expr) En donde expr contiene el nombre del campo que desea contar. Los operandos de expresión pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). Puede contar cualquier tipo de datos incluso texto. Aunque expr puede realizar un cálculo sobre un campo, Count simplemente cuenta el número de registros sin tener

en

cuenta

qué valores se almacenan en los registros. La función Count no cuenta los registros que tienen campos null a menos que expr sea el carácter comodín asterisco (*). Si utiliza un asterisco, Count calcula el número total de registros, incluyendo aquellos que contienen campos null. Count(*) es considerablemente más rápida que Count(Campo).

No

SELECT

se

debe

poner

Count(*)

el

asterisco

AS

entre

Total

dobles

comillas

FROM

('*'). Pedidos;

Si expr identifica a múltiples campos, la función Count cuenta un registro sólo si al menos uno de los campos no es Null. Si todos los campos especificados son Null, no se cuenta el registro. Hay que separar los nombres de los campos

con

SELECT

Count(FechaEnvío

ampersand &

Transporte)

AS

(&).

Total

FROM

Pedidos;

Max,

Min

Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo especifico de una consulta. Su

sintaxis

es:

Min(expr)

Max(expr) En donde expr es el campo sobre el que se desea realizar el cálculo. Expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las

funciones

agregadas

de

SQL).

SELECT

Min(Gastos)

AS

ElMin

FROM

Pedidos

WHERE

Pais

=

'España';

SELECT

Max(Gastos)

AS

ElMax

FROM

Pedidos

WHERE

Pais

=

'España';

StDev,

StDevP

Devuelve estimaciones de la desviación estándar para la población (el total de los registros de la tabla) o una muestra

de

la

población

representada

(muestra

aleatoria)

.

Su

sintaxis

es:

StDev(expr) StDevP(expr)

Semestre 2012 - I

144

145

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

En donde expr representa el nombre del campo que contiene los datos que desean evaluarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no

otras

de

las

funciones

agregadas

de

SQL)

StDevP evalúa una población, y StDev evalúa una muestra de la población. Si la consulta contiene menos de dos registros (o ningún registro para StDevP), estas funciones devuelven un valor Null (el cual indica que la desviación

estándar

SELECT

StDev(Gastos)

SELECT

StDevP(Gastos)

AS

no Desviacion

AS

puede

FROM

Desviacion

Pedidos

FROM

calcularse).

WHERE

Pedidos

Pais

WHERE

=

'España';

Pais=

'España';

Sum Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta. Su sintaxis es: Sum(expr) En donde expr respresenta el nombre del campo que contiene los datos que desean sumarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no SELECT

otras

de

las

Sum(PrecioUnidad

*

funciones Cantidad)

agregadas AS

Total

de

FROM

SQL).

DetallePedido;

Var,

VarP

Devuelve una estimación de la varianza de una población (sobre el total de los registros) o una muestra de la población

(muestra

aleatoria

de

registros)

sobre

los

valores

de

un

campo.

Su

sintaxis

es:

Var(expr) VarP(expr) VarP evalúa una población, y Var evalúa una muestra de la población. Expr el nombre del campo que contiene los datos que desean evaluarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL) Si la consulta contiene menos de dos registros, Var y VarP devuelven Null (esto indica que la varianza no puede calcularse). Puede utilizar Var y VarP en una expresión de consulta o en una Instrucción SQL. SELECT

Var(Gastos)

AS

Varianza

FROM

Pedidos

WHERE

Pais

=

'España';

SELECT VarP(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'España'.

Semestre 2012 - I

145

146

HERRAMIENTAS DE DESARROLLO DE SOFTWARE COMANDOS DML COMANDO CREATE TABLE El comando CREATE TABLE se usa para especificar una nueva relación por medio de un nombre y especificando cada uno de sus atributos. A cada atributo se le da un nombre, un tipo de datos (para especificar su dominio) y algunas

constraints

sobre

el

atributo.

La sintaxis del comando es: CREATE TABLE nombre_de_tabla (definicion_de_columna

[,definicion_de_columna

]

...)

donde la definición de columna es de la forma : nombre_de_columna tipo_de_dato [ NOT NULL ] Claves Primarias También se puede definir una clave primaria sobre una columna, usando la palabra clave KEY o PRIMARY KEY. Solo puede existir una clave primaria en cada tabla, y la columna sobre la que se define una clave primaria no puede tener valores NULL, Si esto no se especifica

de forma

explícita, SQL lo hará de forma automática. Por ejemplo, si queremos crear un índice en la columna nombre de la tabla alumno crearemos la tabla de la siguiente manera. Ejemplo: create table alumno(idalumno char(4) primary key not null, nomalum varchar(20) not null, diralum varchar(40) not null, disalum varchar(40) not null); COMANDO DROP TABLE El comando DROP TABLE se usa para eliminar una relación y su definición de atributos como también borra del catálogo la tupla relacionada a esta. La sintaxis de la Instrucción es : DROP TABLE nombre_de_tabla; Ejemplo : drop table alumno;

Semestre 2012 - I

146

147

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

COMANDO ALTER TABLE

ALTER TABLE: Permite modificar la estructura de una tabla existente. Por ejemplo, se pueden añadir o eliminar columnas, crear y destruir índices, cambiar el tipo de una columna existente o renombrar columnas o la propia tabla. También es posible modificar el comentario y el tipo de la tabla ALTER TABLE nombre_de_tabla ADD

nombre_de_columna

tipo_de_dato;

Ejemplo: alter table alumno add telefono varchar(10); Query OK, 2 rows affected (0.20 sec) Records: 2 Duplicates: 0 Warnings: 0 Ejemplo create table editorial(codeditorial INT AUTO_INCREMENT PRIMARY KEY, nomeditorial char(25) NOT NULL, direditorial varchar(25) NOT NULL, telef varchar(9) NOT NULL)

COMANDOS DLL INSERT Sintaxis: INSERT [INTO] nombre_tabla [(nombre_columna,...)] VALUES ((expresión | DEFAULT),...), (...),... INSERT [INTO] nombre_tabla SET nombre_columna=(expresión | DEFAULT), ... Ejemplo: INSERT INTO noticias (id, titulo, texto, categoria, fecha) VALUES (37, “Nueva promoción en Nervión”, “145 viviendas de lujo en urbanización ajardinada situadas en un entorno privilegiado”, “promociones”, CURDATE())

Semestre 2012 - I

147

148

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Inserta una noticia con los valores indicados SELECT Sintaxis: SELECT expresión FROM tabla [WHERE condición] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] [LIMIT [offset,] row_count | row_count OFFSET offset] Ejemplo: SELECT * from noticias WHERE fecha=CURDATE() LIMIT 10 ORDER BY fecha DESC Obtiene las noticias del día con un tope máximo de 10, ordenadas de la más reciente a la más antigua UPDATE Sintaxis: UPDATE nombre_tabla SET nombre_columna1=expr1 [, nombre_columna2=expr2 ...] [WHERE condición] [ORDER BY ...] [LIMIT row_count] Ejemplo: UPDATE noticias SET categoria = “ofertas” WHERE id=37 Modifica la categoría de la noticia con id=37 de la tabla DELETE Sintaxis: DELETE FROM nombre_tabla [WHERE condición] [ORDER BY ...] [LIMIT row_count] Ejemplo: DELETE FROM noticias WHERE fecha < CURDATE()-10 Borra las noticias con más de 10 días de antigüedad

Semestre 2012 - I

148

149

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

SESIÓN VII ADO .NET CONTENIDO



ADO NET



Objeto de acceso a datos



Acceso a Datos PRÁCTICA DE REFORZAMIENTO

Semestre 2012 - I

149

150

HERRAMIENTAS DE DESARROLLO DE SOFTWARE ADO NET ACTIVE DATA OBJECT Es un nuevo modelo de administración y manejo de datos de MICROSOFT es ADO NET, este modelo descansa en una serie de objetos especializados que facilitan el procesamiento de una base de datos.

Fuente: microsoft.net El problema es comunicar un programa o aplicación aspx con una base de datos y mas que comunicar se pretende que el programa o aplicación realice una serie de procesos u operaciones con la base de datos o mejor aun con el conjunto de tablas que contiene una base de datos. La primera nota a recordar es que una base de datos puede estar físicamente en el servidor y en algún folder o directorio del disco duro de dicha maquina servidora, por ejemplo, c:\DATOS\mibase.mbd, como se observa la base que se construyo en MICROSOFT access (mibase.mbd) se almaceno en el disco c en el folder DATOS. Sin embargo también es necesario conocer que así como existen servidores de páginas ( web server ), servidores de correo ( mail server ), servidores de ftp ( ftp server ), etc, también existen servidores de bases de datos ( database server ), los más comunes son el sqlserver de microsoft, oracle, mysql, etc, estos servidores también pueden crear, administrar y procesar una base de datos, por supuesto que el procedimiento que se dio para crearla en access en el tema anterior no se puede usar para crear y cargar una base de datos en un servidor de bases de datos.(esperar libros de bases de datos en programación fácil en un próximo futuro). El modo de comunicarse entre nuestro programa o aplicación y la base de datos (ya sea física o un dbserver), implica que ambos manejen un lenguaje de programación común, es decir no se puede mandar una instrucción en csharp, o en basic o pascal a la base de datos y además esperar que esta ultima la entienda ( para entender esto, una razon muy sencilla es que la base de datos tendría que conocer o comprender todos los lenguajes de programación), para resolver este problema de comunicación es que se usa un lenguaje común de bases de datos que tanto los lenguajes de programación existentes como las bases de datos entienden, este lenguaje

Semestre 2012 - I

150

151

HERRAMIENTAS DE DESARROLLO DE SOFTWARE común de bases de datos es el SQL (structured query languaje) o lenguaje estructurado de consultas. La pregunta es ahora como mandamos las instrucciones sql a la base de datos, la respuesta son los OBJETOS ADO NET que estamos analizando en orden y propósito de uso, los estaremos explicando. OBJETO CONNECTION:- OBJETO QUE SE UTILIZA PARA ESTABLECER UNA CONECCION O ENLACE A LA BASE DE DATOS. Este objeto primero se tendrá que crear en el programa y luego se tendrá que cargar con dos parámetros (ver ejemplo más abajo), el primer parámetro es el proveedor o la fuente que proporcionara los datos, los proveedores o fuentes de datos que existen son: SQLSERVER NET DATA PROVIDER.- QUE SE ESPECIALIZA EN COMUNICARSE Y PROCESAR BASES DE DATOS CONSTRUIDAS CON MICROSOF SQL SERVER V7.0 OLEDB.NET DATA PROVIDER.- QUE SE ESPECIALIZA EN COMUNICARSE Y PROCESAR BASES DE DATOS QUE A LA FECHA DEL PRESENTE MANUAL UTILIZEN ALGUNOS DE LOS SIGUIENTES DRIVERS, SQ

EDB (VERSIONES ANTERIORES DE SQL SERVER DE MICROSOFT), MSDAORA

(ORACLE), MICROSOFT.JET ( ACCESS Y ALGUNOS OTROS DBMS DE MICROSOFT) NOTA: Este es el que se usa en los ejemplos siguientes, observar que aunque VISUAL BASIC 2008 trae por default los controles SQL, en este capitulo se usaran los objetos OLEDB, lo malo es que se tendrán que crear, cargar y codificar a mano y no olvidar incluir en la parte de arriba del programa la instrucción using System.Data.OleDb; ODBC NET .- BASES DE DATOS QUE USAN ODBC COMO MEDIO DE COMUNICACION CON OTRAS BASES DE DATOS Y APLICACIONES COMO NOTA A CONSIDERAR ODBC NET NO ESTA INCLUIDA POR DEFAULT EN MICROSOFT NET, SE TIENE QUE BAJAR DE MICROSOFT, AUNQUE SI SE INSTALO CORRECTAMENTE EL COMPULDARO VISUAL BASIC 2008 YA ESTARA INCLUIDA El segundo parámetro es la propia base de datos con la cual se comunicara el programa o aplicación. Ejemplo del objeto CONNECTION DIM connection AS OLEDBCONNECTION connection

=

NEW

OLEDBCONNECTION(“Provider=Microsoft.Jet.OLEDB.4.0;Data

Source=c:\progfacil\lauro\mibase.mdb”) Es una sola string y los dos parámetros mencionados van separados por el punto y coma. ATENCION es DATA SOURCE= no usar DATASOURCE= están advertidos. ejemplos de los otros proveedores o fuentes mencionados: //Provider=MSDAORA; Data Source=ORACLE8i7; User ID=OLEDB; Password=OLEDB

Semestre 2012 - I

151

152

HERRAMIENTAS DE DESARROLLO DE SOFTWARE //Provider=Microsoft.Jet.OLEDB.4.0;

Data

Source=c:\bin\LocalAccess40.mdb; //Provider=SQLOLEDB;Data Source=MySQLServer;Integrated Security=SSPI;

OBJETO DE ACCESO A DATOS SQLCONNECTION Este objeto es el encargado de la conexión a una base datos

SQL Server .Este objeto está diseñado y

optimizado para conectarse a base de datos SQL Server en las versiones indicadas.

SQLDATAADAPTER Este objeto es el encargado de llevar la conexión establecida en el Objeto Connection, el comando con los requerimientos deseado y depositar los resultados obtenido en otro objeto llamado DataSet(Conjunto de Datos) para poder utilizarlos y/o manipularlos en una aplicación. Los requerimientos pueden ser el contenido de una tabla de una base de datos o parte de ella,así como la actualización, adición o eliminación de la información.

SQLCOMMAND Este objeto se utiliza para almacenar el comando con el requerimiento para la conexión establecida. El comando consiste en una instrucción SQL que depende del requerimiento deseado y puede ser Select, Update, Insert ó Delete.

DATASET Este objeto se encarga de recibir el conjunto de datos que devuelve la conexión a través de objeto DataAdapter,según el comando establecido por el objeto Command. Procedimiento,1)Agregar el objeto SQLCONNECTION en la barra de herramientas ,clic derecho ,elegir elementos ,selección SQLCONNECTION,aceptar

Semestre 2012 - I

152

153

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Ubicar el objeto SQLCONNECTION en el formulario, clic derecho propiedades, clic en la propiedad:

Connectionstring(elija conexión nueva) 2) ubicar el objeto SQLCOMMAND en el formulario,clic derecho en propiedades, clic en:

Propiedad

Valor

Connecction String

SqlConecction1

Command Text

Semestre 2012 - I

153

154

HERRAMIENTAS DE DESARROLLO DE SOFTWARE Select * from products ,clic en aceptar

3) Ubicar el objeto SQLDATAADAPTER en el formulario, clic derecho en propiedades

. Clic en la ficha Cancelar, asigne las siguientes propiedades

Propiedad Connecction String SelectCommand

Valor SqlConecction1 SqlCommand1

4) Ubicar el objeto DATASET en el formulario de la siguiente forma:

Semestre 2012 - I

154

155

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

Clic

en

Conjunto

de

datos sin tipo, clic en Aceptar

Semestre 2012 - I

155

156

HERRAMIENTAS DE DESARROLLO DE SOFTWARE 5) Ubicar el control TabControl

TabControl1 TabPage1 TabPage2

Text Text

Lista de Productos Lista de Categorías

6) Agregar el control DataGrid en la ficha de control1

Semestre 2012 - I

156

157

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

En el DataGrid se presentan los datos provenientes del conjunto de datos (DataSet) asignando en la propiedad DataSoirce lo siguiente:

Propiedad

Valor

Datasource

Dataset1

En el evento load del Formulario llenar el siguiente Código Dataset1.clear() SQLADAPTER1.fill(Dataset1) 7)Ahora resuelva usted las siguientes fichas deben mostrar lo siguiente: Ficha1 Ficha2 Ficha3 Ficha4 Ficha5 Ficha6 Ficha7 Ficha8 Ficha9 Ficha10

Lista Lista Lista Lista Lista Lista Lista Lista Lista Lista

de de de de de de de de de de

Productos Categorías los Nombres de categoría y Nombres de Producto Nombres de Producto y Cantidad Solicitada Nombre de Producto e Importe Nombre de Producto y Cuantos por Producto Nombre de Producto y Suma de Importes por Producto Nombre de Categoría y Cuantos por Categoria Nombre de Clientes(Customers) Nombre de Cliente y el Importe por cada cliente

Para las siguientes fichas agregar los objetos Ejemplo(sqladapter2,sqlcommand2,dataset2,datagrid2…)

Semestre 2012 - I

157

158

HERRAMIENTAS DE DESARROLLO DE SOFTWARE

VISUAL NET (Acceso a Datos)

Imports System.Data Imports System.Data.SqlClient Public Class Form28 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Dim cn As New SqlConnection("Data Source=(local);Initial Catalog=Northwind;uid=sa;pwd=") Dim sql As String, nivel As Integer sql = "select * from usuario where iduser='" & TextBox1.Text & "' and " & " pwd='" & TextBox2.Text & "'" TextBox3.Text = sql Dim cmd As New SqlCommand(sql, cn) Dim dato As SqlDataReader, acceso As Boolean cn.Open() dato = cmd.ExecuteReader dato.Read() Dim usuario, contraseña As String usuario = dato(0) contraseña = dato(2)

Semestre 2012 - I

158

159

HERRAMIENTAS DE DESARROLLO DE SOFTWARE nivel = Val(dato(3)) MessageBox.Show("El usuario es :" & usuario, "Prueba") MessageBox.Show("La Contraseña es1 :" & contraseña, "Prueba") MessageBox.Show("El Nivel es " & nivel, "Prueba") MsgBox("hay conexion") Form29.Show() If nivel = 1 Then Form29.Button1.Enabled = True Form29.Button3.Enabled = True Form29.Button4.Enabled = True Form29.Button5.Enabled = True Else If nivel = 2 Then Form29.Button1.Enabled = False Form29.Button3.Enabled = True Form29.Button4.Enabled = True Form29.Button5.Enabled = True Else Form29.Button1.Enabled = False Form29.Button3.Enabled = False Form29.Button4.Enabled = False Form29.Button5.Enabled = True End If End If cn.Close() Catch ex As SqlException MsgBox("no hay conexion") End Try End Sub End Class

Semestre 2012 - I

159