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