Está en la página 1de 124

LABORATORIO DE

PROGRAMACIN

Adiel Omar Flores Ramos


Cada autor es responsable del contenido de su propio texto.
De esta edicin:
Universidad Continental S.A.C 2014
Jr. Junin 355, Miraflores, Lima-18
Telfono: 213 2760

Derechos reservados
Primera Edicin: Octubre 2014
Tiraje: 500 ejemplares

Autor: Adiel Omar Flores Ramos

Impreso en el Per en los talleres de Rebelars S.A.C.


Los Bosques 555 - El Tambo - Huancayo

Fondo Editorial de la Universidad Continental

Todos los derechos reservados.

Esta publicacin no puede ser reproducida, en todo ni en parte, ni registrada en o


trasmitida por un sistema de recuperacin de informacin, en ninguna forma ni por
ningn medio sea mecnico, fotoqumico, electrnico, magntico, electroptico, por
fotocopia, o cualquier otro sin el permiso previo por escrito de la Universidad.
NDICE
INTRODUCCIN

DIAGRAMA DE PRESENTACIN DE LA ASIGNATURA

UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES


Diagrama de presentacin de la Unidad
Tema N 1: Introduccin a la Programacin
1 Conceptos Bsicos
2 Introduccin al Visual Basic 2012
3 Instrucciones y sintaxis de Microsoft Visual Basic 2012

Tema N 2: Base de Datos con Microsoft SQL Server


1 Introduccin al Transact SQL
2 Creacin de bases de datos
3 Tablas y relaciones

Lectura Seleccionada N 1:
Bases de datos relacionales y SQL: Informacin por favor

ACTIVIDAD N1:

Tema N 3: Lenguaje SQL


 1 Creacin de Consultas Simples
2 Condiciones y Filtros
3 Consultas de Combinacin - JOIN
4 Funciones de Agregado
5 Consultas de Accin

Tema N 4: Procedimientos Almacenados


1 Introduccin a la programacin con Transact SQL
2 Trabajando con procedimientos almacenados
3 Parmetros y variables

Lectura Seleccionada N 2:
De las ideas a la aplicacin: Casos Reales

Actividad N2

CONTROL DE LECTURA N 1:

AUTOEVALUACION N 1:

Bibliografa de la Unidad I
DIAGRAMA DE PRESENTACIN DE LA ASIGNATURA

Unidad II: PROGRAMACIN CON VISUAL BASIC 2012

Tema N 1: Formularios y controles con Visual Basic 2012


1 Proyectos y soluciones
2 Formularios y controles
3 Programacin de eventos

Tema N 2: Estructura Selectiva


1 Estructura Selectiva Simple: If...Then
2 Estructura selectiva doble: If...Then...Else
3 Estructura Selectiva mltiple: Select Case

Lectura Seleccionada N 1:
Lenguajes de programacin

ACTIVIDAD N1:
Tema N 3: Estructuras Repetitivas
1 Estructura Do...Loop
2 Estructura For...Next
3 Estructura For Each...Next
4 Salida de una Estructura repetitiva

Tema N 4: Formularios de interfaz mltiple (MDI)


1 Aplicaciones de estilo MDI
2 Mens
3 Barra de Herramientas. ToolBar
4 Barra de estado. StatusBar

Lectura Seleccionada N 2:
Arquitecturas de Interfaz de usuario

Actividad N2

TAREA ACADMICA n 1:

AUTOEVALUACION N 2:

Bibliografa de la Unidad II

DIAGRAMA DE PRESENTACIN DE LA ASIGNATURA

Unidad III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

Tema N 1: Programacin Orientada a Objetos


1 Introduccin a la POO
2 Creacin de objetos
3 Variables e Instancias

Tema N 2: Herencia, polimorfismo y espacios de nombres


1 Implementacin de la Herencia
2 Estructuras polimrficas
3 Espacios de nombres

Lectura Seleccionada N 1:
POR QUE ORIENTADO A OBJETOS?

ACTIVIDAD N1:
Tema N 3: Procedimientos
1 Procedimientos SUB
2 Procedimientos Function

Tema N 4: Formularios dependientes y controles avanzados


1 Formularios dependientes y fijos
2 Validacin de controles
3 Utilizacin de controles avanzados
4 Creacin de controladores de eventos

Lectura Seleccionada N 2:
Desarrollo de componentes

Actividad N2

CONTROL DE LECTURA N 2:

AUTOEVALUACION N 3:

Bibliografa de la Unidad III

DIAGRAMA DE PRESENTACIN DE LA ASIGNATURA

Unidad IV: ACCESO A DATOS

Tema N 1: Introduccin al Acceso a Datos


1 ADO .NET
2 Objetos comunes de ADO.NET
3 El explorador de servidores
3 Trabajar con bases de datos en el Explorador de servidores

Tema N 2: Trabajar con Datos


1 El objeto Connection
2 El objeto DataAdapter
3 El objeto DataSet
4 El control DataGrid

Lectura Seleccionada N 1:
Representacin de las entidades en el diseo de formularios

ACTIVIDAD N1:
Tema N 3: Creacin de proyectos de acceso a datos
1 Procedimientos SUB
2 Procedimientos Function

Tema N 4: Formularios dependientes y controles avanzados


1 Generar y poblar DataSets
2 Modificar un DataSet
3 Actualizar un DataSet a una fuente de datos
4 Enlazar y formatear datos en controles

Lectura Seleccionada N 2:
La Interfaz como mediadora

Actividad N2

TAREA ACADMICA N 2:

AUTOEVALUACION N 4:

Bibliografa de la Unidad IV

GLOSARIO

ANEXO: Clave de respuestas a autoevaluaciones


INTRODUCCIN

E
s difcil, por no decir imposible, ignorar la presencia de - Obtener los conocimientos fundamentales e importantes so-
los sistemas de informacin en nuestras organizacio- bre la creacin de proyectos y soluciones para una organiza-
nes, el procesamiento de datos en nuestras empresas, cin
reclama cada vez ms atencin, por ello, la labor del ingeniero - Programar aplicaciones cliente/servidor utilizando Visual
informtico, estar orientada a la creacin de soluciones que Basic 2012 y Microsoft SQL Server 2012.
agilice el flujo de tratamiento de datos de la empresa, utilizando
- Crear aplicaciones Cliente/Servidor, definiendo criterios de
para ello, herramientas de ltima generacin, que permitan la
interfaz y seguridad de los datos
programacin de aplicaciones de escritorio y basadas en web.
El presente material, ofrece la informacin necesaria para el
Mediante la asignatura de Laboratorio de Programacin, el
logro de los aprendizajes previstos. Adems de los temas presen-
alumno adquirir los conocimientos y las tcnicas necesarias
tados, de requerirlo, le ayudaremos a profundizar en temas es-
para que pueda formase y conocer las herramientas de ltima
pecficos, absolviendo sus preguntas, proveyndole de la infor-
generacin, que permitan el desarrollo de aplicaciones rpida,
macin bibliogrfica y otros recursos que juzgue conveniente.
versatil y funcional.

Por las caractersticas de la modalidad virtual, se har uso in-


La asignatura de Laboratorio de Programacin est dividida en
tensivo de la plataforma MOODLE, absolviendo dudas e in-
las siguientes unidades didcticas:
quietudes y brindndole el apoyo necesario para que culmine
1. Unidad didctica I : Introduccin a la programacin y
de manera exitosa, el desarrollo de las actividades debern ser
bases de datos relacionales
remitidas al campus virtual, el mismo que cuenta con recursos
de comunicacin para una mejor asesora y apoyo en el curso. 2. Unidad didctica II : Programacin con Visual Basic
2012
Usted, como futuro profesional podr integrarse en un sector
de gran crecimiento, gracias al avance de las nuevas tecnologas, 3. Unidad didctica III : POO y proyectos avanzados
y que tiene una fuerte demanda de usuarios y profesionales. 4. Unidad didctica IV : Acceso a datos
Con la realizacin de la asignatura, el alumno podr: Le deseamos muchos xitos en sus estudios y renovamos el com-
promiso de estar a vuestra disposicin .
8


LABORATORIO DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
9

Lecturas Glosario Bibliografa


seleccionadas

PRESENTACIN DE LA ASIGNATURA
LABORATORIO DE PROGRAMACIN
Recordatorio Anotaciones
Diagrama Objetivos Inicio

COMPETENCIA DE LA ASIGNATURA

Construye proyectos
Desarrollo Actividadesinformticos con un lenguaje de programacin visual promo-
Autoevaluacin
deviendo
contenidos
la automatizacin de los procesos, promoviendo el uso de herramientas tec-
nolgicas, mostrando perseverancia en las actividades acadmicas.

Lecturas Glosario Bibliografa


seleccionadas

UNIDADES DIDCTICAS

UNIDAD N 1 UNIDAD N 2 UNIDAD N 3 UNIDAD N 4

Recordatorio Anotaciones
Introduccin a
la programacin Programacin con PDO y Proyectos
Acceso a datos
y bases de datos visual basic 2012 avanzados
relacionales

TIEMPO MNIMO DE ESTUDIO:


UNIDAD N 1 UNIDAD N 2 UNIDAD N 3 UNIDAD N 4

1 y 2 semana 3 y 4 semana 5 y 6 semana 7 y 8 semana


32 horas 32 horas 32 horas 32 horas
10
LABORATORIO DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
11

Diagrama Objetivos Inicio Lecturas Glosario Bibliografa


seleccionadas

UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE


DATOS RELACIONALES
Desarrollo Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

Lecturas
seleccionadas DIAGRAMA DE PRESENTACIN DE LA UNIDAD
Glosario Bibliografa

Diagrama Objetivos Inicio

CONTENIDO
Recordatorio
Desarrollo
Anotaciones
Actividades Autoevaluacin
EJEMPLOS ACTIVIDADES
de contenidos

Lecturas
seleccionadas
Glosario BIBLIOGRAFA
Bibliografa AUTOEVALUACIN

Recordatorio CONOCIMIENTOS
Anotaciones PROCEDIMIENTOS ACTITUDES

Tema 1: Introduccin a 1.
Crea programas utilizando Valora el desarrollo tecnol-
la Programacin Microsoft Visual Basic 2012. gico, informtico y el uso de
1. Conceptos bsicos.
2. Implementa Base de Datos la computadora como herra-
2. Introduccin al Visual Studio
relacionales en Microsoft Sql mienta primordial, as como el
2012.
Server utilizando T-SQL. software de oficina dentro del
3. Instrucciones y sintaxis con
desarrollo de su carrera.
Visual Basic 2012
Actividad N 1
Tema 2: Base de Datos con Implementa una base de datos
MS SQL Server de acuerdo a las directivas de
1. Introduccin al Transact normalizacin utilizando T-SQL.
SQL
2. Creacin de Bases de datos
3. Tablas y relaciones 3. Recupera datos seleccionados
de una base de datos relacio-
nal utilizando consultas SQL.
Lectura seleccionada N 1:
Bases de datos relacionales y 4. Crea procedimientos almace-
SQL: Informacin por favor! nados utilizando Sql Server
Nelson Howell p123-134.
Actividad N 2
Tema 3: Lenguaje SQL. Programa procedimientos alma-
1. Creacin de consultas Sim- cenados para recuperar datos
ples. de una Base de datos mediante
2. Condiciones y filtros. consultas SQL.
3. Consultas de combinacin
JOIN
4. Funciones de Agregado. Control de Lectura N1
5. Consultas de accin Prctica de desarrollo de los te-
mas 1, 2, 3 y 4.
Tema 4: Procedimientos
Almacenados.
1. Introduccin a la programa-
cin con Transact SQL
2. Trabajando con procedi-
mientos almacenados.
3. Parmetros y variables.

Lectura Seleccionada N 2:
De las ideas a la aplicacin: Ca-
sos Reales. Effy Oz Administra-
cin de los sistemas de informa-
cin. p 242-244.

Autoevaluacin de la Unidad 1
ollo
nidos 12
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
TEMA N 1: Introduccin a la Programacin

1 Conceptos Bsicos
torio Anotaciones
Para poder iniciar en el mundo de la programacin y empezar a aprender el len-
guaje Visual Basic, es necesario entender qu es un lenguaje de programacin y
cmo funciona, incluida la terminologa de programacin.

1.1. La programacin
Las computadoras por s slas no piensan, es decir, un equipo no es inteligente. Un
computador es, un conjunto de diminutos conmutadores electrnicos que estn
encendidos o apagados (sistema binario 1 o 0). Al establecer diferentes combina-
ciones de estos conmutadores, puede hacer que la computadora haga algo, por
ejemplo, mostrar algo en pantalla o emitir un sonido. En su forma ms bsica, la
programacin consiste en darle instrucciones a un computador e ir dicindole qu
es lo que debe hacer.

Comprender qu combinacin de conmutadores har que la computadora realice


lo que uno quiere supone una tarea gigantesca. Los lenguajes de programacin
permitirn de una manera sencilla, realizar estas instrucciones.

1.2. Qu es un lenguaje de programacin?


Un lenguaje de programacin es un traductor entre el usuario y la computadora.
En lugar de aprender el lenguaje del computador (conocido como "lenguaje de
mquina" basados en unos y ceros), puede usar un lenguaje de programacin para
dar instrucciones al equipo de un modo ms sencillo.

Otro programa especializado conocido como compilador toma las instrucciones


escritas en el lenguaje de programacin y las convierte en lenguaje de mquina.
Para el programador de aplicaciones, este proceso es transparente, Microsoft Visual
Basic 2012, hace este proceso de manera automtica.

1.3. El lenguaje Visual Basic


Los elementos de programacin en Visual Basic 2012, incluyen instrucciones, de-
claraciones, mtodos, operadores y palabras clave. A medida que vayamos avanzan-
do, ir aprendiendo de estos elementos y cmo utilizarlos.

Los lenguajes de programacin, tienen reglas en su escritura, a stas se le denomina


sintaxis del lenguaje. Las herramientas de Visual Basic, como IntelliSense, le servi-
rn de gua para utilizar la sintaxis correcta al escribir programas.

El lenguaje escrito y hablado tambin cuenta con una estructura: por ejemplo, un
libro consta de captulos, con prrafos que contienen oraciones. Los programas
escritos en Visual Basic disponen tambin de una estructura: los mdulos son como
los captulos; los procedimientos, como los prrafos; y las lneas de cdigo, como
las oraciones.

2 Introduccin al Visual Basic 2012


Visual Basic es un lenguaje para proporcionar una combinacin ptima entre sen-
cillez, claridad y rendimiento y es el lenguaje en el que se han escrito los servi-cios
de la plataforma .NET.

2.1. Creando aplicaciones de consola


Microsoft Visual Studio 2012 es una suite de herramientas de programacin,
al iniciarse, por defecto te mostrar la "pgina de inicio" desde la cual pueden
crearse nuevos proyectos o bien abrir alguno de los ms recientemente abier-
tos. Veamos cmo crear una nueva aplicacin:
1. Ejecuta Microsoft Visual Studio 2012 desde el men inicio.
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
13

Lecturas Glosario Bibliografa


seleccionadas
2. Pulsa en Nuevo proyecto selecciona la opcin: Archivo>Nuevo>Proyecto,
te mostrar los diferentes tipos de proyectos que se pueden crear.
3. En el panel izquierdo selecciona Plantillas>Visual Basic>Windows
4. Adems aqu se muestra una lista de Tipos de proyecto. Encontramos unaRecordatorio
se- Anotaciones

rie de carpetas, clasificando los proyectos por lenguaje o tipo. Lgicamente,


las opciones disponibles dependern de la edicin que est utilizndose.
5. De los que muestra en el panel de la derecha, selecciona Console Application.
6. Tendrs que especificar el directorio en el que se guardar el proyecto, as
como el nombre del mismo, creando un directorio con el nombre del pro-
yecto indicado; deja el nombre que muestra por defecto, en la versin ingle-
sa de Visual Studio se llamar ConsoleApplication1.
7. Pulsa en OK (Aceptar) y se crear el proyecto.

Figura N 1: Pantalla de creacin de nuevo proyecto

Por defecto te mostrar la siguiente ventana:

Figura N 2: ventana de cdigo inicial del mdulo

Es decir, crear un archivo llamado Module1.vb, con el cdigo necesario para em-
pezar a escribir. Adems del procedimiento Sub Main, el cual se usar como pun-
to de partida de nuestro ejecutable, tambin ha creado una "definicin" llamada
Module Module1 con su respectivo End Module, el cual Indica dnde termina la
definicin del mdulo.

Lo que estamos creando es una aplicacin tipo consola, es decir, no se crear nin-
guna ventana grfica, sino que el ejecutable que vamos a crear funciona desde una
ventana de MS-DOS (o consola).

En este ejemplo, vamos a mostrar un mensaje que diga algo asi como: Hola mundo,
desde Visual Basic 2012, por tanto para mostrar un texto en la "consola", usaremos
una funcin, mtodo o instruccin, que si bien no es nativa de Visual Basic 2012, la
usaremos como si lo fuese. Todo esto es posible gracias a los assemblies o a las clases
incluidas en el Net Framework. Realmente todo lo que se usa en .Net son funciones,
la funcin es Consote.Write y se usa de la siguiente forma:
Console.Write("Hola mundo, desde Visual Basic 2012")
ollo
nidos 14
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
Escrbelo entre el Sub Main() y el End Sub. Comprueba que cuando escribas Con-
sole y el punto, se mostrarn las funciones que Console pone a nuestra disposicin,
as como una pequea ayuda, en modo de ToolTip.
torio Anotaciones

Ahora tenemos que indicarle al "Entorno Integrado" (IDE) que compile el proyec-
to y lo ejecute, para ello pulse la tecla F5, notar que se muestra el mensaje en un
breve instante de tiempo en la consola.

Pero lo mejor seria hacer que el programa se detenga hasta que pulsemos la tecla
Enter. Para ello, aade la siguiente lnea a continuacin de la anterior:
Console.Read()

Figura N 3: Cdigo inicial del programa de ejemplo

Pulsa F5, adems de que la ventana no se cierra hasta que pulses Enter.
Realmente se puede escribir cualquier cosa y se ir mostrando en la ventana de
consola, pero hasta que pulses Enter no dejar de mostrarse.

2.2. Entrada y salida de datos


La gran mayora de programas, para ser tiles a los usuarios, solicitan datos (en-
trada o lectura) y devuelven resultados (salida o escritura), por ejemplo, al realizar
una suma, se solicitan dos nmeros y se entrega el resultado.

Vamos a crear un programa que, ingresado dos nmeros devuelva la suma, para
ello es necesario aadir otro mdulo e indicar a visual Basic que ste ser el que se
ejecute, para ello siga los siguientes pasos, asumiendo que se qued en la pantalla
del ejemplo anterior:
1. Haga clic derecho en el nombre del proyecto ConsoleAplication1 en el panel
Explorador de soluciones.
2. Seleccione la opcin ADD
3. Seleccione console

Observe la figura:


Figura N 4: procedimiento para insertar un nuevo mdulo
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
15

Lecturas Glosario Bibliografa


seleccionadas
El nuevo mdulo se nombrar por defecto module2, deber aadir sub main y pul-
sar enter para iniciar la programacin, se aade automticamente end sub
Copie el siguiente cdigo
Recordatorio Anotaciones

Figura N 5: cdigo de ejemplo

Si pulsa la tecla F5, el mdulo que se ejecutar ser el module1, a continuacin indi-
caremos que se debe ejecutar el module2:
1. Haga clic en el men Project y elija la opcin ConsoleApplication1 Properties
2. En el cuadro de propiedades, seleccione module2 en la opcin Startup object

Ahora puede pulsar la tecla F5, ingrese dos nmeros enteros cualesquiera y observe
el resultado:

Figura N 6: ventana de resultado del programa

Explicacin del cdigo


Dim numero1, numero2 As Se declaran dos variables de tipo entero, las varia-
Integer bles son identificadores que guardan temporal-
mente un valor, numero1 y numero2 guardan los
nmeros ingresados por el usuario

Dim resultado Se declara la variable resultado, que guardar el


resultado de sumar los dos nmeros
Console.WriteLine("Ingrese
primer nmero") Muestra un mensaje al usuario

Recibe el nmero del usuario y lo almacena en


numero1 = Console.ReadLine
numero1

Console.WriteLine("Ingrese
Muestra el segundo mensaje al usuario
segundo nmero")

Recibe el segundo nmero del usuario y lo alma-


numero2 = Console.ReadLine
cena en numero2

resultado = numero1 + numero2


Se realiza la operacin de sumar

Console.WriteLine("La suma
Muestra el resultado en consola
es: " & resultado)

Espera el enter de finalizacin para que se cierre


Console.Read()
la ventana
ollo
nidos 16
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
3 Instrucciones y sintaxis de Microsoft Visual Basic 2012
El cdigo fuente en Microsoft Visual Basic 2012 consta de una serie de lneas,
muchas de las cuales, se sangran o indentan para mejorar la legibilidad. En un
torio Anotaciones programa, los espacios en blanco entre los elementos no resultan significativos,
y las partes importantes del programa se suelen separar unas de otras por lneas
en blanco.

3.1. Comentarios
Los Comentarios sirven para documentar los programas y en ellos se escriben ano-
taciones sobre cmo funciona el programa o sobre cmo se ha construido.

En Microsoft Visual Basic 2012, los comentarios que constan de una nica lnea es-
tn precedidos por una comilla simple (), si se extienden sobre varias lneas estn
encerrados entre /* y */. Ejemplos de comentarios
Comentario de una lnea
/* Comentario que ocupa
ms de una lnea */

3.2. Sentencia
Una sentencia representa una accin o instruccin. Las sentencias se clasifican en
ejecutables, por ejemplo las operaciones de clculo y entrada/salida de datos y no
ejecutables, por ejemplo las declaraciones que definen el significado y propsito de
de los identificadores.

Por otra parte las sentencias se dividen en simples, las que no contienen ninguna
otra sentencia y estructuradas, que contienen otras sentencias para que se ejecuten
condicionalmente o repetitivamente. Ejemplos de sentencias son:
z = 15 esta sentencia asigna 15 a la variable z
z =z+100 esta sentencia aade 100 al valor de z
Console.WriteLine("Hola") sentencia de visualizacin
if z >= 0 then sentencia estructurada
Console.WriteLine("Positivo")
else
Console.WriteLine("Negativo")

3.3. Bloque
Un bloque es una estructura que agrupa sentencias. Los bloques comienzan con
una palabra reservada y terminan con una palabra END. Un bloque puede estar
dentro de otro bloque y se dice que el bloque interior est anidado dentro del
exterior o que ambos bloques estn anidados
if z >= 0 then
estas sentencias aparecen sangradas o indentadas
z = z*-1
Console.WriteLine("Negativo")
End if

3.4. Tipos de Datos


Un tipo de dato determina la naturaleza de valores que puede tomar una variable,
las operaciones en que puede participar y el espacio de memoria que necesita. La
tabla siguiente muestra los tipos de datos, incluyendo el tamao de almacenamien-
to y el intervalo.
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
17

Lecturas Glosario Bibliografa


seleccionadas
Cuadro N 1
Tipos de datos de Visual Basic 2012

Recordatorio Anotaciones

3.5. Convertir tipos de datos


Microsoft Visual Basic 2012 proporciona varias funciones de conversin que puede
utilizar para convertir valores de tipos de datos especficos. Por ejemplo, para con-
vertir un valor a Currency, utilice la funcin Ccur:
PagoPorSemana = Ccur(horas * PagoPorHora)

El siguiente cuadro muestra las funciones de conversin:


Cuadro N 2
Funciones de conversin

Funciones de Conversin en Convierten una expresin


Cbool Boolean
Cbyte Byte
Ccur Currency
Cdate Date
CDbl Double
Cint Integer
CLng Long
CSng Single
CStr String
Cvar Variant
CVErr Error
ollo
nidos 18
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
3.6. Variables
Las variables se utilizan para almacenar valores temporalmente durante la ejecu-
cin de una aplicacin. Las variables tienen un nombre (la palabra que utiliza para
torio Anotaciones referirse al valor que contiene la variable) y un tipo de dato (que determina la clase
de dato que la variable puede almacenar).

A. Declaracin de Variables
Declarar una variable es decirle de antemano al programa las variables que utili-
zaremos. Se declara una variable mediante la instruccin Dim, proporcionando
un nombre a la variable, segn la siguiente sintaxis:
Dim nombre_variable [As tipo]

Las variables que se declaran en un procedimiento mediante la sentencia Dim


slo existen mientras se ejecuta el procedimiento. Cuando termina el procedi-
miento, desaparece el valor de la variable. Ejemplos de declaracin de variables:
Dim X as Integer Declara una variable llamada X de tipo entero
Dim nombre as String Declara una variable llamada nombre de tipo entero

B. Almacenamiento y recuperacin de datos en variables


Utilice una sentencia de asignacin para realizar clculos y asignar el resultado
a una variable:
ManzanaVendidas = 10 Se pasa el valor 10 a la variable
ManzanasVendidas = ManzanasVendidas + 1

Observe que el signo igual del ejemplo es un operador de asignacin, no un


operador de igualdad; el valor 10 se asigna a la variable ManzanasVendidas.

C. Alcance de las Variables


El alcance de una variable define en qu partes del cdigo son reconocidas. A
veces, se necesita utilizar una variable con un alcance ms general, como aquella
cuyo valor est disponible para todos los procedimientos del mismo mdulo o
incluso para todos los procedimientos de toda la aplicacin.

Dependiendo de cmo se declara, una variable tiene como alcance un procedi-


miento (local) o un mdulo.

Cuadro N 3: Alcance de las variables

3.7. OPERADORES
Los operadores permiten realizar operaciones con las variables y con los datos, Mi-
crosoft Visual Basic 2012 utiliza los siguientes operadores:
A. Operadores Aritmticos
^ Potencia
* Multiplicacin
/ Divisin real
\ Divisin entera
Mod Residuo del cociente entero
+ Suma
- Resta
& Concatenacin
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
19

Lecturas Glosario Bibliografa


seleccionadas
B. Operadores de Comparacin
= Igual
<> Diferente
Recordatorio Anotaciones
< Menor que
> Mayor que
<= Menor o igual
>= Mayor o igual
Is Usado para comparar dos variables de referencia a objetos

C. Operadores Lgicos
And Y lgico
Or O lgico
Xor O Exclusivo
Not Negacin

TEMA N 2: Base de Datos con Microsoft SQL Server

Una parte fundamental en el desarrollo de aplicaciones son las bases de datos, una base
de datos es un conjunto de datos organizados, ordenados y sistematizados, almacenados
en un dispositivo secundario, sin redundancias perjudiciales o innecesarias, da servicio
a una aplicacin o ms, se garantiza la seguridad y confidencialidad de los datos.

Microsoft SQL Server es un gestionador de base de datos muy potente, proporciona


servicios para arquitecturas cliente/servidor, Microsoft SQL Server utiliza un lenguaje
que permite realizar las distintas operaciones llamado Transact SQL o T-SQL.

El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normaliza-


do, utilizado por la mayora de Sistemas Gestionadores de Bases de Datos Relacionales
para manipular datos, su estructura y seguridad. En el presente material nos centrare-
mos en la definicin y manipulacin de datos.

1 Introduccin al Transact SQL


El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de
agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y ma-
nipular las bases de datos. A continuacin revisaremos las sentencias tipo DDL y DML:
Los DDL (Data Definition Language) que permiten crear y definir nuevas bases
de datos, campos e ndices.
Los DML (Data Manipulation Language) que permiten generar consultas para
ordenar, filtrar y extraer datos de la base de datos.

Cuadro N 4: Comandos DDL

Cuadro N 5: Comandos DML


ollo
nidos 20
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
1.1. El lenguaje de definicin de datos DDL
Los cambios a la estructura de una base de datos son manejados por un conjunto
de sentencias SQL, denominadas conjuntamente Lenguaje de Definicin de Datos.
torio Anotaciones Utilizando sentencias DDL, se puede:
Definir y crear objetos (tablas, consultas, etc.)
Suprimir una tabla u objetos que ya no se necesita
Cambiar la definicin de una tabla u objetos existente

El ncleo del Lenguaje de Definicin de Datos est basado en tres instrucciones SQL:
CREATE : define y crea un objeto de la base de datos
DROP : elimina un objeto existente en la base de datos
ALTER : modifica la definicin de un objeto de la base de datos

2 Creacin de bases de datos


A continuacin utilizaremos el comando Transact-SQL CREATE DATABASE para
crear bases de datos.

2.1. El comando CREATE DATABASE


Se puede usar el comando CREATE DATABASE para crear una base de datos y los
archivos almacenados en una base de datos. El comando CREATE DATABASE le
permitir especificar una serie de parmetros que definirn las caractersticas de la
base de datos.

Veamos la forma ms simple de crear una base de datos mediante el siguiente ejemplo:
USE MASTER
GO
CREATE DATABASE UNIVERSIDAD - - Crea la base de datos Universidad

La creacin de una base de datos en Microsoft SQL Server 2012, precisa mnima-
mente de dos archivos: un archivo mdf (priMary Data File) y un archivo ldf (Log
Data File), en el siguiente ejemplo se crea la base de datos VENTAS, especificando
los archivos correspondientes:

86(PDVWHU
*2
&5($7('$7$%$6(9HQWDV
21
1$0( 9HQWDV 1RPEUHOyJLFRGHODUFKLYRGHGDWRV 
),/(1$0( 
'?YHQWDVPGI
1RPEUHItVLFRDUFKLYRGHGDWRV
6,=(  7DPDxRLQLFLDO
0$;6,=(  7DPDxRPi[LPR
),/(*52:7+   )DFWRUGHFUHFLPLHQWR
/2*21
1$0( 9HQWDV/RJ 1RPEUH OyJLFR GHO DUFKLYR GH
WUDQVDFFLRQHV
),/(1$0( 
'?YHQWDVOGI
1RPEUHItVLFRDUFKLYRGHWUDQVDFFLRQHV
6,=(  7DPDxRLQLFLDO
0$;6,=( 81/,0,7(' 7DPDxRPi[LPR OLPLWDGRDOGLVFR 
),/(*52:7+   )DFWRUGHFUHFLPLHQWR
*2

Importante
Debe crear la base de datos Ventas para poder continuar con la creacin de los
dems objetos de base de datos.

2.2. El comando DROP DATABASE


Para eliminar bases de datos utilizamos el comando T-SQL DROP DATABASE cuya
sintaxis es mucho ms sencilla que la anterior:
DROP DATABASE <Nombre de la base de datos>
Si quisiramos eliminar la base de datos Universidad pondramos la siguiente ins-
truccin:
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
21

Lecturas Glosario Bibliografa


seleccionadas

DROP DATABASE Universidad

3 Tablas y relaciones
Recordatorio Anotaciones
Las tablas sin los objetos fundamentales de las bases de datos, son los nicos objetos
que pueden almacenar datos, sera difcil concebir una base de datos sin tablas,
a continuacin se muestra cmo gestionamos las tablas en nuestra base de datos.

3.1. Creacin de tablas


La sentencia CREATE TABLE sirve para crear la estructura de una tabla, nos per-
mite definir las columnas que tiene y ciertas restricciones que deben cumplir esas
columnas.

La sintaxis es la siguiente:
CREATE TABLE NombreTabla
(Columna1 tipoDato [restriccin1],
Columna2 tipoDato [restriccin1],
ColumnaN tipoDato [restriccin1],
[Restriccin2],
[Restriccin2])

Una restriccin consiste en la definicin de un objeto que establece un lmite al


dato ingresado en ese campo, suelen ser restricciones como valores no nulos (cam-
po requerido), definicin de ndice sin duplicados, definicin de clave principal y
definicin de clave fornea (campo que sirve para relacionar dos tablas entre s).
restriccin1: una restriccin de tipo 1 aparece dentro de la definicin de la co-
lumna despus del tipo de dato y afecta a la columna que se est definiendo,
pueden ser:
NOT NULL indica que la columna no podr contener un valor nulo
PRIMARY KEY se utiliza para definir la columna como clave principal de la
tabla, es decir no admite nulos ni dublicados.
UNIQUE sirve para definir un ndice nico sobre la columna.
CHECK establece una condicin para el ingreso de datos al campo definido

El siguiente ejemplo, crea la tabla Clientes en la base de datos ventas:

restriccin2: Se define despus de todas las columnas de la tabla y afecta a una


columna o a una combinacin de columnas.

El siguiente ejemplo crea la tabla ventas con una clave combinada, definida en una
restriccin de tipo 2.
ollo
nidos 22
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
A. Modificar Tablas
La instruccin ALTER TABLE sirve para modificar la estructura de una tabla
existente. Mediante esta instruccin podemos aadir columnas nuevas, eliminar
torio Anotaciones columnas, cambiar caractersticas de las columnas, etc. Tambin nos permite
crear nuevas restricciones o borrar algunas existentes.
La clusula ADD permite aadir una columna nueva a la tabla.
En el siguiente ejemplo se aade el campo direccin a la table Clientes
ALTER TABLE tblClientes
ADD cliDireccion char(50)

La clusula DROP COLUMN elimina una columna.


En el siguiente ejemplo se elimina el campo cliFono
ALTER TABLE tblClientes
1 DROP COLUMN cliFono

Para modificar una columna, utilizaremos la clusula ALTER COLUMN.


El siguiente ejemplo cambia el tipo de dato de la columna cliDireccion
ALTER TABLE tblClientes
ALTER COLUMN cliDireccion varchar(50)

B. Eliminar Tablas
La sentencia DROP TABLE sirve para eliminar una tabla. No se puede eliminar
una tabla si el borrado infringe las reglas de integridad referencial (si interviene
como tabla padre en una relacin y tiene registros relacionados).
Ejemplo:
USE NEGOCIOS
DROP TABLE tab1 --Elimina de la base de datos la tabla tab1.

3.2. Creacin de relaciones


Para crear una relacin entre dos tablas, definimos una restriccin de tipo Foreign
Key en la tabla hija con referencia a la clave principal de la tabla padre, en la si-
guiente estructura la tabla hija (Pelculas), define una clave fornea (dirCodigo)
con referencia a la clave principal (dircodigo) de la tabla padre Directores:

La implementacin del cdigo sera la siguiente:


ALTER TABLE tblmaPeliculas
ADD CONSTRAINT relacionDirPel FOREIGN KEY (dirCodigo)
REFERENCES tblmaDirectores(dirCodigo)

El cdigo anterior, crea una relacin de uno a muchos entre Directores (uno) y
pelculas (muchos).
LABORATORIO DE PROGRAMACIN
Diagrama
UNIDAD
Objetivos
I: INTRODUCCIN
Inicio
A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
23

Desarrollo Actividades Autoevaluacin


de contenidos Lecturas Glosario Bibliografa
seleccionadas

LECTURA SELECCIONADAS N 1
Lecturas Glosario Bibliografa
seleccionadas
Recordatorio Anotaciones

Bases de datos relacionales y SQL: Informacin por favor 1

Ven a miAnotaciones
Recordatorio tabla
Las relaciones (tablas) son la fundacin de las bases de datos relacionales. Todos los
datos estn organizados en filas y columnas de forma muy parecida a un horario de
ferrocarriles o a una hoja de clculo. Cada fila es un registro y cada columna repre-
senta un tipo de elemento de base de datos. Un ejemplo es un listado de nombres y
nmeros telefnicos de empleados. A continuacin aparece una tabla que muestra
tres filas y cuatro columnas. Cada fila representa un individuo y cada columna repre-
senta un elemento de informacin sobre el individuo. La fila superior contiene los
nombres de las columnas.
1RPEUH $SHOOLGRV &yGLJRGHiUHD 1~PHURWHOHIyQLFR
6DP -RQHV  
7RP 6PLWK  
'RURWK\ 5XE\VOLSSHUV  

Tal vez necesitemos ms de una tabla en nuestra base de datos. Por ejemplo, suponga-
mos que tambin necesitamos las fechas de nacimiento de dichos individuos. Podemos
crear otra tabla como la siguiente:

1RPEUH $SHOOLGRV )HFKDGHQDFLPLHQWR


6DP -RQHV 
7RP 6PLWK 
'RURWK\ 5XE\VOLSSHUV 

Una pregunta razonable que usted podra preguntar es por qu no pusimos la fecha
de nacimiento en la primera tabla. Cuando considere el asunto, comprender que no
es inusual que una persona tenga ms de un nmero telefnico. Pero cada individuo
slo debe tener una fecha de nacimiento. Esto significara que podra haber mltiples
filas para Sam Jones en la primera tabla, pero no en la segunda. Para ilustrar el punto,
la siguiente tabla tiene ms de un nmero telefnico para cada uno de los individuos.

Tambin es posible que estemos haciendo una suposicin invlida de que los dos Sam
Jones son la misma persona. Si tuviramos el nmero de DNI, estaramos seguros.

As que otra informacin que necesitamos de nuestros empleados incluye el nmero de


DNI, el puesto y su salario. En esta compaa, el salario por un trabajo dado ser siem-
pre el mismo. Todos los programadores cobran por hora lo mismo, al igual que todas
las secretarias, operadores de computadoras, etc.

Ahora podemos comenzar a crear tablas significativas, que cumplan con las reglas de la
normalizacin. Qu es la normalizacin? Siga leyendo por favor.

Normalizacin
Las bases de datos diseadas correctamente seguirn las reglas de la normalizacin.
Existen tres de dichas reglas, qiu' >.l, ;i['Ii( an a nuestro diseo de base de datos. Cuan-
do una base de datos cumple con dichas reglas, se dice que est en forma normal. Las

1 Howell, Nelson. Microsoft Visual Interdev !Fcil. Londres: Prentice-Hall Hispanoamericana, S.A.; 2000. p123-134.
ollo
nidos 24
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
siguientes secciones discuten cada una de las tres realas, conocidas como (sorpresa) la
primera forma normal, la segunda forma normal y la tercera forma normal.

torio Anotaciones Primera forma normal


Una tabla est en la primera forma normal si todas sus columnas contienen valores
atmicos. Una traduccin rpida de esto es que una sola columna contendr slo un
nmero telefnico por ejemplo, nunca dos nmeros telefnicos.

Segunda forma normal


Una tabla est en la segunda forma normal si a) cumple con la primera forma nor-
mal, b) cada columna depende del valor de la clave primaria, y cada fila es nica. Por
ejemplo, al principio tenamos una tabla donde el nombre de Sam Jones apareca dos
veces. Si intentramos utilizar el nombre de Sam Jones como la clave primaria, la tabla
no cumplira la segunda forma normal. El nmero telefnico es el nico dato nico
(valga la redundancia) en la tabla. Si utilizamos el nmero telefnico como la clave
primaria, la tabla podra estar en la segunda forma normal. Pero usted dir que la gente
normalmente no se identifica por su nmero telefnico. Y, dos personas no pueden
tener el mismo nmero telefnico? Ahora comienza a ver que el diseo para esta tabla
es incorrecto.

Tercera forma normal


Una tabla esta en la tercera forma normal si a) cumple con la segunda forma normal y,
ademas, b) < .id, valor en la tabla depende slo de la clave primaria. Aqu podramos
ver si agregamos el salario a la tabla con los nombres. El salario depende del puesto,
no de la persona que hace el trabajo. As que el salario debe estar en una tabla < 011 el
puesto.

Diagrama Objetivos Inicio

ACTIVIDAD N 1:
Desarrollo Actividades Autoevaluacin
de contenidos

Esta actividad puede consultarla en su aula virtual.

TEMA N 3: Lenguaje SQL


Lecturas Glosario Bibliografa
seleccionadas

El lenguaje SQL, se utiliza para recuperar datos de una base de datos relacional, para
Recordatorio
agregar
Anotaciones
datos a la misma, para eliminarlos o para cambiarlos.

Las consultas de seleccin se utilizan para indicar al motor de datos que devuelva in-
formacin de las bases de datos, esta informacin es devuelta en forma de conjunto de
registros que se pueden almacenar en un objeto recordset. Este conjunto de registros
es modificable.

Las consultas de accin permiten manipular los datos como insertarlos, eliminarlos o
modificarlos.

1 Creacin de Consultas Simples


1.1. Visualizacin de Datos - SELECT
Si deseramos visualizar los apellidos de la Tabla de personas, la instruccin SQL sera:
SELECT Apellido FROM Personas
La sintaxis de la Instruccin es como sigue:
SELECT Dice lo que vamos a hacer (seleccionar).
Apellido Es el nombre de la columna de donde vamos a recuperar datos.
FROM Esta palabra clave dice que lo que sigue es el nombre de una tabla.
Personas 'Es el nombre de la tabla de la que se recuperarn los datos.
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
25

Lecturas Glosario Bibliografa


seleccionadas
La base de datos regresar un conjunto de filas y columnas, llamado un conjunto de
resultados, que parecer algo as:

3HUVRQDV
Recordatorio Anotaciones
-RQHV
6PLWK
5XE\VOLSSHUV

Si se deseara mostrar todos los campos de una tabla, podramos utilizar el asterisco *
SELECT * FROM tblmaClientes

1.2. Ordenar los registros ORDER BY


Adicionalmente se puede especificar el orden en que se desean observar los regis-
tros de las tablas mediante la clasula ORDER BY <Lista de Campos>. En donde
Lista de campos representa los campos a ordenar. Ejemplo:
SELECT clicodigo, cliApellidos, cliNombres, cliTelefono
FROM Clientes
ORDER BY cliNombres;
Es posible establecer el orden por el nmero de campo que se especifica en la
columna:
SELECT cliCodigo, cliApellidos, cliNombres, cliLugar FROM tblmaCLIENTES ORDER
BY 4 DESC, 2 ASC

1.3. Consultas con Predicado


El predicado se incluye entre la clusula y el primer nombre del campo a recuperar,
los posibles predicados se muestran en el siguiente cuadro.

Cuadro N 6: Predicados T-SQL

A. ALL
Si no se incluye ninguno de los predicados se asume ALL.
SELECT ALL * FROM Empleados;
SELECT * FROM Empleados;

B. TOP
Supongamos que queremos recuperar los nombres de los 5 primeros empleados:
SELECT TOP 5 empApellidos, empNombres FROM EMPLEADOS;

Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje


de registros que caen al principio o al final de un rango especificado por la clusula
ORDER BY. Supongamos que en lugar de los 5 primeros empleados deseamos el 10
por ciento de la tabla:
SELECT TOP 10 PERCENT empApellidos, empNombres FROM EMPLEADOS
ORDER BY empapellidos DESC;

C. DISTINCT
Omite los registros que contienen datos duplicados en los campos seleccionados.
Por ejemplo, si quisiramos observar los lugares donde viven los empleados, la si-
guiente instruccin SQL devuelve un nico registro por cada lugar:
SELECT DISTINCT empLugar from EMPLEADOS;
ollo
nidos 26
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
D. Alias
La palabra reservada AS que se encarga de asignar el nombre que deseamos a la
columna deseada. Veamos el siguiente ejemplo
torio Anotaciones SELECT pelcodigo AS Cdigo, peltitulo AS 'Ttulo de la Pelcula',
pelIdioma AS Idioma, pelEstreno AS 'Fecha de Estreno' FROM
tblmaPeliculas;

2 Condiciones y Filtros
2.1. Criterios de Seleccin - WHERE
La clusula WHERE (donde) se utiliza para establecer criterios que permitan filtrar
el resultado de una consulta. WHERE es opcional, pero cuando aparece debe ir a
continuacin de FROM.
SELECT Apellidos, Salario FROM Empleados WHERE Salario > 2000;

2.2. Operadores de comparacin


Los operadores que maneja el SQL son estndares a la mayora de lenguajes y Siste-
mas Gestionadores de Bases de Datos, veamos algunos ejemplos:
A. IGUAL =
Mostrar a todos los clientes que viven en Huancayo:
SELECT cliCodigo, cliApellidos, cliNombres, cliLugar FROM
tblmaClientes WHERE cliLugar='Huancayo'

B. MAYOR >, MAYOR O IGUAL >=, MENOR, MENOR O IGUAL <=


Mostrar a las pelculas que duren ms de 120 minutos:
SELECT pelCodigo, pelTitulo, pelIdioma, pelduracion FROM
tblmaPeliculas WHERE pelduracion>=120

C. DIFERENTE <>
Mostrar a los actores cuya nacionalidad no sea peruana
SELECT act_Codigo, act_Apellido, act_Nombre, act_Naciona FROM
tblmaActores WHERE act_Naciona<>'peruana'

2.3. Operadores Lgicos


Los operadores lgicos soportados por SQL son: AND, OR y Not. A excepcin del
ltimo todos poseen la siguiente sintaxis:
<expresin1> operador <expresin2>
El resultado de la operacin vara en funcin del operador lgico. La tabla adjunta
muestra los diferentes posibles resultados.

Cuadro N 7: Operadores lgicos y el resultado de operarlos

Si a cualquiera de las anteriores condiciones le anteponemos el operador NOT el


resultado de la operacin ser el contrario al devuelto sin el operador NOT.

2.4. Intervalos de Valores


Para indicar que deseamos recuperar los registros segn el intervalo de valores de
un campo emplearemos el operador Between (Entre) cuya sintaxis es:
SELECT <Campos> from TABLA
Where campo Between valor1 And valor2
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
27

Lecturas Glosario Bibliografa


seleccionadas
Veamos el siguiente ejemplo:
SELECT pelCodigo, pelTitulo, pelIdioma, pelduracion FROM tblmaPe-
liculas WHERE pelduracion BETWEEN 100 AND 200
Devuelve las pelculas cuya duracin es entre 100 y 200 minutos Recordatorio Anotaciones

2.5. El Operador Like


Like (como) Se utiliza para comparar una expresin de cadena con un modelo en
una expresin SQL. Su sintaxis es:
SELECT <Campos> from TABLA
Where expresin Like modelo

El operador Like se utiliza tomando en cuenta los comodines % (porcentaje) y _


(guin bajo), el primero reemplaza a varios caracteres, mientras que el segundo a
un solo carcter.
El ejemplo siguiente devuelve los datos que comienzan con la letra P seguido de
cualquier letra entre A y F y de tres dgitos:
Like 'P[A-F]___'

Este ejemplo devuelve los campos cuyo contenido empiece con una letra de la A a
la D seguidas de cualquier cadena.
Like '[A-D]%'

En el cuadro siguiente se muestra cmo utilizar el operador Like para comprobar


expresiones con diferentes modelos.

Cuadro N 8: Expresiones del operador LIKE

2.6. El Operador In
Este operador devuelve aquellos registros cuyo campo indicado coincide con algu-
no de los en una lista. Su sintaxis es:
expresin In(valor1, valor2, . . .)
SELECT cliCodigo, cliApellidos, cliNombres, cliLugar FROM
tblmaClientes WHERE cliLugar IN('Huancayo','El Tambo','Chupaca')

Muestra a los clientes que viven en Huancayo, El Tambo o Chupaca

3 Consultas de Combinacin - JOIN


Las vinculaciones entre tablas se realizan mediante la clusula INNER que combina
registros de dos tablas siempre que haya concordancia de valores en un campo
comn. Su sintaxis es:
SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo =
tabla2.campo

El ejemplo siguiente muestra cmo podra combinar las tablas Categoras y Produc-
tos basndose en el campo IDCategoria:
SELECT Nombre_Categora, NombreProducto FROM Categorias
INNER JOIN Productos ON Categorias.IDCategoria = Productos.
IDCategoria

En el ejemplo anterior, IDCategoria es el campo combinado, pero no est incluido


en la salida de la consulta ya que no est incluido en la instruccin SELECT.
El LEFT JOIN, RIGHT JOIN y FULL JOIN permite mostrar los datos de una tabla,
ollo
nidos 28
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
incluyendo aquellas que no tienen relacin.
4 Funciones de Agregado
Combina los registros con valores idnticos, en la lista de campos especificados,
torio Anotaciones
en un nico registro. Para cada registro se crea un valor sumario (calculado) si se
incluye una funcin SQL agregada, como por ejemplo Sum o Count, en la instruc-
cin SELECT.
Su sintaxis es:
SELECT campo1, campo2, FUNCION(Campo) FROM tabla [WHERE criterio]
GROUP BY campo1, campo2
[HAVING criterioFUNCION]

GROUP BY es opcional. Los valores de resumen se omiten si no existe una funcin


SQL agregada en la instruccin SELECT. Los valores Null en los campos GROUP
BY se agrupan y no se omiten.

Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la
clusula HAVING para filtrar los registros una vez agrupados.
Veamos el siguiente ejemplo:
SELECT Id_Familia, Sum(Stock) FROM Productos GROUP BY Id_Familia;

HAVING es similar a WHERE, determina qu registros se seleccionan. Una vez que


los registros se han agrupado utilizando GROUP BY, HAVING determina cuales de
ellos se van a mostrar.
SELECT Id_Familia, Sum(Stock) FROM Productos
GROUP BY Id_Familia
HAVING Sum(Stock) > 100 AND NombreProducto Like BOS%;

4.1. Funciones sumarias o funciones de agregado


En el siguiente cuadro se describen las funciones de agregados utilizadas para la
creacin de consultas.

Cuadro N 9: Funciones de agregado

5 Consultas de Accin
Las consultas de accin, permitirn el ingreso, modificacin o eliminacin de los
datos, veamos las siguientes instrucciones:
5.1. Instruccin UPDATE
Si deseamos cambiar el apellido de una persona, de Rubysiippers a Combatboots,
podemos utilizar la instruccin UPDATE:
UPDATE Personas SET Apellido = 'Combatboots' WHERE Apellido='Rubysiippers'

Puede haber un problema con esto. El RDBMS busca cada aparicin de Rubysiip-
pers en la columna Apellido de la Tabla de personas y lo cambia a Combatboots.
Esto puede ser un problema si existen otras personas con el apellido Rubysiippers,
as que deberemos usar el nmero del seguro social en la clusula WHERE. La clave
primaria (NSS) es nica, as que slo se cambiar un registro:
UPDATE Personas SET Apellido = 'Combatboots' WHERE NSS='333-44-5555'
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
29

Lecturas Glosario Bibliografa


seleccionadas
5.2. Instruccin DELETE
La instruccin DELETE es muy sencilla pero muy peligrosa. Si quisiramos borrar
el registro de Dorothy de la Tabla de personas, la instruccin sera:
DELETE FROM Personas WHERE NSS = '333-44-5555' Recordatorio Anotaciones

En este caso slo se afecta un registro. Cuando se elimina de la tabla, se ha ido. No


existe funcin DESHACER.

5.3. Instruccin INSERT


Los registros se agregan a una tabla utilizando una instruccin INSERT. Por ejemplo,
insertemos un registro en la tabla personas. Un ejemplo de una instruccin INSERT
podra ser la siguiente, que fue la utilizada cuando se contrat a Tillv Tennisshoes:
INSERT INTO Personas (SSN, Nombre, Apellido, Fecha Nac., Puesto)
VALUES ('999-88-7777', Tilly', 'lennisshoes', '12 38-1959',
Trogrammer)

TEMA N 4: Procedimientos Almacenados


1 Introduccin a la programacin con Transact SQL
Hasta ahora hemos utilizado la ventana de consultas para ejecutar comandos o
grupos de comandos en el lenguaje Transact SQL. A los grupos de comandos los
llamaremos scripts.

Cuando se ejecuta un script, los comandos son ejecutados por SQL Server para
mostrar un conjunto de resultados, configurar un comportamiento y administrar al
servidor o para manipular datos contenidos en una base de datos.

A estos scripts se les puede dar un nombre y guardar como procedimientos almace-
nados en el SQL Server. Posteriormente se los puede invocar de diversas maneras,
para que realicen el procesamiento de los comandos T-SQL incorporados.

El SQL Server provee una serie de procedimientos almacenados del sistema, algu-
nos de los cuales ya hemos utilizado. Estos procedimientos son guardados en la base
de datos Master y contienen comando Transact SQL que facilitan muchas tareas.

2 Trabajando con procedimientos almacenados


Cuando se crea un procedimiento, SQL Server chequea la sintaxis de los comandos
Transact-SQL que incluye. Si la sintaxis es incorrecta, SQL Server generar un men-
saje de error sintax incorrect, y el procedimiento no ser creado.

Usar el procedimiento almacenado de sistema sp_helptext es una mejor opcin


para mostrar el texto usado para crear un objeto (tal como un procedimiento alma-
cenado no encriptado), dado el texto es retornado en mltiples filas.

2.1. Crear procedimientos almacenados


Se puede usar el comando CREATE PROCEDURE, o su versin abreviada, CREATE
PROC, para crear un procedimiento almacenado.

El siguiente ejemplo crea un procedimiento almacenado que devuelve a los clientes


que viven en Huancayo ordenados por apellidos:

CREATE PROCEDURE uspClientesHuancayo


AS
SELECT * FROM tblClientes WHERE cliLugar=Huancayo ORDER BY cliA-
pellidos
ollo
nidos 30
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
Para ejecutar un procedimiento almacenado, debe utilizar el comando EXEC, el
siguiente ejemplo ejecuta el procedimiento creado anteriormente:
EXEC uspClientesHuancayo
torio Anotaciones

2.2. Modificar procedimientos almacenados


Utilizamos el comando ALTER PROCEDURE, el siguiente ejemplo establece las
columnas a mostrar modificando el procedimiento anterior:
ALTER PROCEDURE uspClientesHuancayo
AS
SELECT cliCodigo, cliApellidos, cliNombres, cliLugar FROM tbl-
Clientes
WHERE cliLugar=Huancayo ORDER BY cliApellidos

2.3. Eliminar procedimientos almacenados


Si deseamos eliminar un procedimiento almacenado podemos hacer uso del co-
mando DROP PROCEDURE, si quisiramos eliminar el procedimiento uspClien-
tesHuancayo
DROP PROCEDURE uspClientesHuancayo

3 Parmetros y variables
Los parmetros son valores que el usuario ingresa para la ejecucin del procedi-
miento almacenado, si un procedimiento almacenado requiere valores de parme-
tros, se deben especificar cuando se ejecuta el procedimiento.

Los parmetros se definen como variables de SQL, stos son identificadores que de-
ben iniciar con un @ (arroba), definido con un tipo de dato. Cuando se los invoca
para ser ejecutados, se debe incluir un valor para el parmetro (y opcionalmente,
el nombre del parmetro).

El siguiente cdigo crea un procedimiento almacenado que muestra a los emplea-


dos que viven en un determinado lugar indicado por el usuario:
CREATE PROCEDURE usp_EmpLugar
@Lugar varchar(15) -Variable @Lugar tipo varchar(15)
As
SELECT * FROM tblEmpleados
WHERE empLugar=@Lugar -- El campo empLugar se compara con la va-
riable
Diagrama Objetivos Inicio

Los parmetros y las variables son una parte fundamental de hacer dinmico a un
procedimiento almacenado. Los parmetros de entrada habilitan al usuario que
est ejecutando el procedimiento a pasar valores al procedimiento almacenado.
Desarrollo Actividades Autoevaluacin
de contenidos

LECTURA SELECCIONADAS N 2
Lecturas Glosario Bibliografa
seleccionadas

De las ideas a la aplicacin: Casos Reales

Cuando atacan los clientes 2


Recordatorio Anotaciones
Overstock.com, que se declara como "la compaa con ms descuentos en el mundo",
enfrent una situacin que pareca un problema deseable. Demasiados compradores
queran comprar demasiados artculos demasiado rpido. Un da, con un mximo de
trfico, los servidores de la empresa no soportaron el trfico Web y el funcionamiento
de las aplicaciones internas. Para no frenar la actividad de los clientes en lnea, este mi-
norista famoso por su inventario excesivo tuvo que cerrar las aplicaciones internas. Los
ejecutivos estaban satisfechos con el entusiasmo de los clientes, pero extraaban vigilar
las ventas en tiempo real, a lo cual se haban acostumbrado.

2 Fuente: McDonaId, D.. "Overstock.com Overcomes Overloads", C/0 Insight (www.cio.insigtit.com), 5 de mayo
de 2005; www.overstock. com, 2005; Westerveit, R., "Overstock Is Newest Grid Convert", SearchOracle.com,
31 de agosto de 2004.
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
31

Lecturas Glosario Bibliografa


seleccionadas
Al operar con un presupuesto limitado y al transferir prcticamente todos los ahorros a
los clientes, la compaa haba desarrollado una inmensa base de clientes, pero tambin
haba llevado al lmite al departamento de IT en su intento de atender a los clientes.
Los fundadores de la empresa haban previsto que los negocios se duplicaran cada aoRecordatorio Anotaciones
y haban cumplido este objetivo una y otra vez al garantizar a los compradores precios
bajos en mercancas de poca demanda que adquiran de otros minoristas.

Los ingresos en 2004 de la compaa establecida en Sal Lake City fueron cinco veces su
total de haca dos aos y las ganancias brutas antes de los intereses haban aumentado
ms de 300% desde 2002, de $18.3 millones a $65.8 millones. Aunque Overstock.com
todava tena que determinar las ganancias anuales, tena una ganancia de $2.5 millones
para el tercer trimestre de 2004. Overstock.com sigue mejorando el desempeo gracias
a que se concentra en la informacin extrada de su experiencia con los clientes. Esto
simplemente significa guardar las transacciones de ventas en inmensas bases de datos e
intentar determinar qu agrada y desagrada a los clientes.

Overstock.com tena que aumentar sin cesar el espacio de almacenamiento y velocidad


de procesamiento de su base de datos. Los administradores utilizaban una aplicacin
que les permita apreciar las ventas en tiempo real. Esto les permita recibir informacin
con rapidez acerca de los artculos que se vendan rpido y buscar artculos similares
para re-abastecer el inventario. Cuando aument la actividad de los clientes, fue tanta
tensin en el sistema que tuvieron que cerrar la aplicacin. Las bases de datos de tran-
sacciones eran la nica fuente de datos para los ejecutivos.

Los gerentes de IT de la compaa comprendieron que si se mantena el aumento en la


actividad de los clientes, la empresa llegara a $1 000 millones en ventas trimestrales al final
de 2004. Sin embargo, esa velocidad de crecimiento requera una infraestructura de IT que
funcionara como las de las compaas de $1000 millones. La tarea era desafiante porque
la administracin mencion que, debido a la limitada generacin de ganancias, el departa-
mento de IT slo contaba con un desarrollo frugal de la nueva infraestructura.

Lo primero que los gerentes de IT queran desarrollar era un reflejo de las transaccio-
nes y los sistemas de bases de datos para que, si fallaba un sitio, un sistema duplicado en
otra parte pudiera seguir procesando y registrando las transacciones. Aunque la compa-
a ya tena un respaldo de los datos de transacciones, los archivos del respaldo estaban
en el mismo lugar que los originales. En 2004, por razones de seguridad, el personal de
IT quera que los datos respaldados estuvieran en otro lugar. La opcin: la co-ubicacin.
En una co-ubicacin, una ofganizacin emplea un servidor Web en una planta propie-
dad de otra organizacin. La organizacin anfitriona da mantenimiento al servidor y
asegura el respaldo y el soporte tcnico. La co-ubicacin es atractiva para las compaas
con conexiones a Internet limitadas o poco personal de IT para atender el servidor.

Overstock.com adquiri un par de sistemas de almacenamiento en red de EMC Corp.


y dedic varias semanas a probar el hardware y el soporte nuevos en la co-ubicacin.
Cuando las pruebas fueron satisfactoras, Overstock.com co-ubic la base de datos de
transacciones en la nueva planta en 2004. Para evitar mayor tensin debido al creci-
miento, los gerentes de IT seleccionaron el DBMS 9i de Oracle para la tienda en lnea
y agregaron otro DBMS, un Oracle 10g para facilitar un proyecto conjunto de subastas
que compitiera con el lder de subastas en lnea en el mundo, eBay. El negocio de subas-
tas fue lanzado en septiembre de 2004. La compaa distribuy su base de datos en siete
computadoras en red que funcionaban con el sistema operativo Linux.

Para aprovechar la enorme cantidad de datos recopilados en las transacciones de ven-


tas, el equipo de IT decidi desarrollar un almacn de datos para capturar y analizar la
informacin de los clientes. Overstock.com contrat a Teradata, una divisin de NCR y
lder en tecnologa de almacenamiento de datos. El almacn de datos permitir a Overs-
tock.com comprender mejor las motivaciones de los clientes y el impacto de las polticas
de precios. Sobre todo, a Overstock.com le interesa emplear el anlisis de los datos para
evitar perder a sus mejores clientes. En parte, la conservacin de los clientes producir
un mejor servicio el cliente, lo cual, a su vez, mejorar ai analizar los datos almacenados.
ollo
nidos 32
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
Los cambios que Overstock.com ha hecho en su capacidad de almacenamiento de datos
han valido la pena, porque la compaa registr las mejores ventas de fin de ao, $221
millones, en 2004. El personal de Overstock.com ha aumentado en la misma propor-
torio Anotaciones
cin que las ventas durante los ltimos cinco aos. Desde 2002, la compaa ha contra-
tado ms del doble de su personal original y ahora tiene 427. De ellos, 49 trabajan en IT,
casi cuatro veces el nmero de 13 personas que manejaban sus necesidades en 2002. Los
gerentes de IT para Overstock.com han observado que dos de las principales razones
para su rediseo exitoso han sido la integracin de los empleados nuevos con los vetera-
nos y la contratacin de empleados motivados no slo por las ganancias materiales, sino
tambin por los desafos intelectuales.

Parece que los desafos profesionales son una gran motivacin para algunos integrantes
del equipo. Un caso concreto es la opcin de disear su propia joyera en el sitio de la
empresa que comenz ofrecerse en noviembre de 2004. Un programador que hizo casi
todo el trabajo para el sitio nuevo estaba decidido a terminar el proyecto a tiempo para
el 14 de febrero del ao siguiente. Con apenas tres meses, el progra-mador se qued
varias noches seguidas en la oficina para dedicar todo su tiempo al proyecto, el cual
concluy a tiempo. El empleado disfrut un periodo adicional de dos semanas de vaca-
ciones en la primavera de 2005.
Diagrama Objetivos Inicio

ACTIVIDAD N 2:
Desarrollo Diagrama
Actividades Objetivos
Autoevaluacin Inicio
de contenidos

Esta actividad puede consultarla en su aula virtual.

Desarrollo Actividades Autoevaluacin


Lecturas Glosario
de contenidos Bibliografa
seleccionadas

CONTROL DE LECTURA N 1
Lecturas Glosario Bibliografa
Recordatorio seleccionadas
Anotaciones

Esta actividad puede consultarla en su aula virtual.

Recordatorio Anotaciones
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
33

Objetivos Inicio Lecturas Glosario Bibliografa


seleccionadas

AUTOEVALUACIN DE LA UNIDAD N I
Actividades Autoevaluacin
s
Recordatorio Anotaciones

A continuacin te presentamos algunas preguntas con varias alternativas, una sola es la


respuesta, marca la que consideres conveniente.
Glosario Bibliografa
s
1. Utilizando Transact SQL, qu instruccin aade una fila a una tabla en una base de
datos?
a) ADD
o Anotaciones
b) INSERT
c) UPDATE
d) INCLUDE

2. El lenguaje SQL es:


a) Propio de SQLServer.
b) Propio de SQLServer y otros sistemas gestores de Microsoft, como Access.
c) Universal, se puede utilizar en cualquier sistema gestor de base de datos relacio-
nal.
d) Todas son falsas.

3. Para no mostrar las filas duplicadas del resultado de una sentencia SELECT se emplea.
a) NO DUPLICATE
b) UNIQUE
c) DISTINCT
d) Ninguna de las anteriores

4. El DDL engloba las instrucciones SQL que permiten:


a) Definir la estructura de una base de datos, como: crear una base de datos o crear
y eliminar tablas.
b) Realizar cambios en los datos contenidos en la base de datos: incluir registros,
borrarlos, editarlos...
c) Ejercer control sobre los procesos que ejecutan transacciones y los permisos de
la base de datos.
d) Todas son ciertas.

5. En el siguiente comando T-SQL, Qu parte del cdigo es incorrecto?:


CREATE TABLE Persona (
Nome STRING PRIMARY KEY,
Eta INTEGER,
Profesin VARCHAR(50))
a) Falta el punto y coma (;) al final.
b) Falta la tilde en el nombre de la segunda columna.
c) STRING no es un tipo previsto en T-SQL.
d) VARCHAR no es un tipo previsto en T-SQL.

6. Qu instruccin se emplea para eliminar los datos de una tabla?


a) DELETE TABLE
b) DROP TABLE
c) TRUNCATE TABLE
d) Ninguna de las anteriores.

7. El DML engloba las instrucciones SQL que permiten:


a) Definir la estructura de una base de datos, como: crear una base de datos o crear
ollo
nidos 34
Actividades Autoevaluacin UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALES

as Glosario Bibliografa
nadas
y eliminar tablas.
b) Realizar cambios en los datos contenidos en la base de datos: incluir registros,
borrarlos, editarlos...
torio Anotaciones c) Ejercer control sobre los procesos que ejecutan transacciones y los permisos de
la base de datos.
d) Todas son ciertas.

8. En una clusula LIKE, cmo se obtienen todos los nombres de personas que tienen
exactamente cuatro caracteres?
a) LIKE "????"
b) LIKE "____"
c) LIKE "...."
d) Ninguna de las anteriores.

9. Para llamar a un campo Fecha contrato deberemos...


a) Escribir (Fecha contrato). Entre parntesis.
b) Escribir [Fecha contrato]. Entre corchetes.
c) No se puede escribir espacios en los nombres de los campos, deberemos escribir
Fecha_contrato.
d) Todas son falsas.

10. En SQL, para ordenar los datos devueltos por una sentencia SELECT se emplea la
clusula
a) ORDER BY
b) ORDERED BY
c) SORT BY
d) SORTED BY

11. Seala cul es un comentario vlido para T-SQL.


a) /* Esto es un comentario */
b) Esto es un comentario.
c) // Esto es un comentario.
d) <!-- Esto es un comentario -->

12. En una clusula LIKE, cmo se obtienen todos los nombres de personas que co-
mienzan con "Juan"?
a) LIKE "Juan%"
b) LIKE "Juan*"
c) LIKE "Juan$"
d) LIKE "Juan&"

13. Qu indica la sigla RDBMS?


a) Base de Datos Reticular
b) Sistema Remoto de memorizacin de los datos
c) Un Lenguaje de Programacin
d) Sistema de Gestin de Base de Datos Relacionales

14. Transact-SQL permite definir:


a) Variables.
b) Constantes.
c) Funciones propias.
d) Todas son ciertas.
LABORATORIO DE PROGRAMACIN
UNIDAD I: INTRODUCCIN A LA PROGRAMACIN Y BASES DE DATOS RELACIONALESDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
35
Objetivos Inicio

Lecturas Glosario Bibliografa


Actividades Autoevaluacin seleccionadas
os

BIBLIOGRAFA DE LA UNIDAD I: Recordatorio Anotaciones


Glosario Bibliografa
s

Howell, Nelson. Microsoft Visual Interdev !Fcil. Londres: Prentice-Hall Hispanoameri-


cana, S.A.; 2000.
o Anotaciones

Oz, Effy. Administracin de los Sistemas de Informacin. Espaa: Thompson Learning;


2008.

Delgado, Albert. Microsoft SQL Server 2012. Madrid: Pearson Education S.A.; 2011.

Ocharte Ojeda, Francisco. Programacin con Visual Basic 2012. Madrid: Anaya Multime-
dia; 2011.
ollo
nidos 36
Actividades Autoevaluacin

as Glosario Bibliografa
nadas

torio Anotaciones
LABORATORIO DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
37

Diagrama Objetivos Inicio Lecturas Glosario Bibliografa


seleccionadas

Desarrollo
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012
Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

DIAGRAMA DE PRESENTACIN DE LA UNIDAD


Diagrama
Lecturas Objetivos
Glosario Inicio
Bibliografa
seleccionadas

CONTENIDO EJEMPLOS ACTIVIDADES


Desarrollo Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

BIBLIOGRAFA AUTOEVALUACIN
Lecturas Glosario Bibliografa
seleccionadas

CONOCIMIENTOS PROCEDIMIENTOS ACTITUDES


Recordatorio Anotaciones

Tema N1: Plan de Nego- 1. Construye formularios Valora el desarrollo tecnol-


cios: 1ra Fase y crea controles en la gico, informtico y el uso de
1. Plan de Negocio: Defini- la computadora como herra-
construccin de un
cin, Estructura mienta primordial, as como el
2. Investigacin de Mercados.
proyecto con Visual Ba-
software de oficina dentro del
Fuentes de Informacin: sic.NET.. desarrollo de su carrera.
Secundarias, Primarias 2. Aplica sentencias con-
dicionales y selectivas
Tema N 2: Plan de Nego- en la construccin de
cio: 2da. Fase programas con Visual
1. Anlisis de los Competido- Basic.NET.
res: Caractersticas
2. Anlisis FODA
3. Ventaja Competitiva Actividad N 1
Desarrolla una aplicacin tipo
juego sencillo, utilizando es-
Lectura seleccionada 1: tructuras Selectivas.
Anlisis del Mercado. Cap-
tulo 7, pginas 26-33 del Ma-
3. Aplica estructuras repe-
nual Cmo elaborar mi plan
de negocio? Atrvete y salta!,
titivas en la programa-
del Programa Mi Empresa del cin con Visual Basic
Ministerio de Trabajo y Pro- 2012.
mocin del Empleo. 4. Construye aplicaciones
MDI incorporando ba-
Tema N 3: Plan de Nego- rras de Mens, herra-
cio: 3ra. Fase mientas y de estado en
1. Segmentacin. Definicin,
un proyecto.
Criterios. Fuentes Prima-
rias: Instrumentos, Encues-
ta, Ficha Tcnica. Actividad N 2
2. Estimacin del Mercado: Po- Elabora una aplicacin con
tencial, disponible y objetivo. formularios MDI.
3. Clculo de la Demanda en
unidades fsicas y monetarias Tarea Acadmica N1
4. Estimacin y proyeccin de Desarrolla los Casos presenta-
las ventas dos.

Lectura seleccionada 2:
Caractersticas y Proceso de
Segmentacin Objetivos del
Tomo 7: Mercados Objetivos
en Constante Cambio de la
Coleccin 12 Pasos para el
xito. Coleccin de La Rep-
blica.

Autoevaluacin de la Unidad II
ollo
nidos 38
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas

En la presente unidad vamos a iniciar nuestra programacin con formularios


Windows utilizando Visual Basic, todas las aplicaciones en Windows son formularios
aunque no lo parezca, las aplicaciones que utilizamos comnmente se basan y
torio Anotaciones
formularios y controles que revisaremos en la presente unidad.

TEMA 1: FORMULARIOS Y CONTROLES CON VISUAL BASIC 2012

1 PROYECTOS Y SOLUCIONES
Visual Studio.NET utiliza como elementos de trabajo de primer nivel la solucin.
Esta puede componerse de uno o ms proyectos, cada uno de los cuales contendr,
bsicamente, mdulos de cdigo correspondientes a componentes, formularios, etc.

Suponga que est creando una serie de componentes de negocio, as como una in-
terfaz nativa y otra Web. Bsicamente tendra tres proyectos: la biblioteca en la que
se alojaran los componentes, una aplicacin Windows nativa y otra de tipo web. El
conjunto de estos tres proyectos sera la solucin completa.

1.1 Inicio de una nueva solucin


Asumimos que acabamos de iniciar visual Studio. NET y, por tanto nos encontra-
mos en la seccin Introduccin de la Pgina de Inicio, veamos cules son los pasos
a seguir para crear una nueva solucin alojando en ella varios proyectos. Estos sern
muy simples en implementacin, pero nos permitirn hacernos una idea general
sobre el procedimiento a seguir y las posibilidades del entorno de Microsoft Visual
Studio 2012.

Figura N 8: Pantalla principal del Visual Studio 2012

Para empezar, iniciaremos un nuevo proyecto, y por tanto una solucin, seleccio-
nando de la carpeta de proyectos de Visual Basic el elemento Biblioteca de Clases,
asignando el nombre HolaMundo al proyecto. Ese mismo nombre ser utilizado
tambin globalmente para la solucin.
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
39

Lecturas Glosario Bibliografa


seleccionadas

Se ha elegido el ele-
mento indicado y Recordatorio Anotaciones

tras introducir un
nombre y ubicacin,
va a pulsarse el bo-
tn Aceptar.

Figura N 9: Cuadro de dilogo nuevo proyecto

De inmediato ver aparecer una nueva pgina en el entorno, con el nombre Class1.
cs, conteniendo algo de cdigo, en concreto el esqueleto de una clase.
1.2. Conociendo el entorno de desarrollo

Figura N 10: Entorno de desarrollo de Visual Basic

Tiene barra de mens y barras de botones (1). El cuadro de herramientas (2), que
se desplegar cuando pases el ratn por encima. A continuacin tienes el espacio
de trabajo (3), en l te aparecern las ventanas de cdigo de cada archivo, as como
el examinador de objetos, la ayuda. A la derecha tienes el explorador de soluciones
(4). Justo debajo est la ventana de propiedades (5), que se ocupa de mostrar las
propiedades de algn archivo del proyecto, o alguna clase, o algn objeto, o algn
mtodo. Aqu tienes tambin otra pestaa, la de ayuda dinmica, que va mostrando
temas de ayuda que tienen que ver con lo que ests haciendo (si escribes class te
salen temas sobre class, si escribes string te salen temas sobre eso, etc.). Debajo tie-
nes ms ventanas (la lista de tareas, ventana de comandos, resultados, resultados de
bsqueda de smbolos). En el men Ver puedes mostrar y ocultar todas las ventanas
que quieras, y tambin puedes cambiarlas de sitio simplemente arrastrndolas con
el ratn.

1.3 Aspecto del explorador de soluciones


Agregue un formulario (Windows Form) desde el men Proyecto.
ollo
nidos 40
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas

torio Anotaciones

Como nodo principal aparece


la Solucin (1 Proyecto), in-
dicando tanto nombre de la
solucin como el nmero de
proyectos que la componen.
Debajo est el nombre del pro-
yecto, y dentro de el una car-
peta de referencias y el nom-
bre de los mdulos de cdigo.

Figura N 11: Panel Explorador de soluciones

Cada uno de los elementos que aparecen en el Explorador de Soluciones tienen


asociados un men de opciones que, como es habitual, puede abrir pulsando el
botn del ratn sobre l. Dependiendo del tipo de elemento, encontrar opciones
para abrirlo, eliminarlo, aadir nuevos elementos, etc. Si necesita aadir un nuevo
proyecto a la solucin, o bien un nuevo elemento a un proyecto existente, puede
utilizar las opciones de estos mens en lugar de recurrir a los botones o el men de
opciones general.

2 FORMULARIOS Y CONTROLES
Dependiendo del perfil de usuario que hubiese seleccionado previamente, en la pa-
gina de inicio al poner en marcha Visual Studio por primera vez, aparecer o no en
el entorno una ventana llamada Explorador de Soluciones. Habitualmente puede
encontrarla en la parte superior derecha, como una ventana adosada o anclada en
el interior de la ventana principal del entorno. Si no la encuentra, puede utilizar
la combinacin de teclas: Control-Alt-L o la opcin Ver>Exploradorde Soluciones
para hacerla aparecer.

2.1. Formularios
Los formularios son los elementos que permiten crear ventanas, sobre los cuales
aadiremos los objetos que permitirn construir interfaces para el usuario. Cuan-
do ejecutamos Microsoft Visual Studio y creamos nuestra solucin en Visual Basic,
por defecto aparecer un formulario, la siguiente figura muestra un formulario
Windows:

Figura N 12: Formulario por defecto


LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
41

Lecturas Glosario Bibliografa


seleccionadas
2.2. Controles
Los controles son los elementos u objetos que permiten la construccin de aplica-
ciones, el panel de controles contiene, clasificados por categoras los controles ms
utilizados, aquellos que no se muestran se podrn activar de acuerdo a nuestras Recordatorio Anotaciones

necesidades.

Para agregar los controles al formulario, bastar con arrastrar y soltar, en el for-
mulario anterior, aada un control textbox (cuadro de texto), un control etiqueta
(label) y un botn (button):

Figura N 13: Insterfaz de usuario para el ejemplo

2.3. Edicin de propiedades


Otra de las ventanas que habitualmente est visible en el entorno es Propiedades,
al ser imprescindible para la edicin de las propiedades o atributos de cualquier
elemento, desde un proyecto o un archivo hasta un control que hayamos podido
insertar en una ventana. En la distribucin por defecto de Visual Studio.NET esta
ventana aparecera tambin anclada en un margen del entorno, concretamente en
la parte inferior derecha, debajo el Explorador de Soluciones. Si no la encuentra
pulse F4.

La propiedad ms importante de los controles u objetos es el nombre, pues me-


diante ste se puede reconocer e indicarle que realice alguna accin, vamos a cam-
biar algunas propiedades del botn que hemos aadido anteriormente, para ello es
necesario que el botn est seleccionado, seguidamente, modifique la propiedad
name a btnMensaje:

Figura N 14: cuadro de propiedades mostrando la propiedad name


ollo
nidos 42
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
Cambie la propiedad text a Hacer Clic, seleccione el control etiqueta (label) y cam-
bie su propiedad text a Nombre

torio Anotaciones Experimente cambiando la propiedad backcolor y forecolor de los controles, per-
sonalcelos de acuerdo a su preferencia.

2.4. Ajustar la posicin y tamao de los controles


Mediante la propiedad Anchor podemos indicar en que posicin queremos "an-
clar" cada uno de los controles. Por ejemplo, si queremos que un control se ajuste
al ancho del formulario, pero permanezca en la misma posicin de izquierda y
arriba, slo tenemos que darle el valor Top, Left y Right a la propiedad Anchor del
control en cuestin.

Otra caracterstica que ahora tienen los formularios es poder indicarle el tamao
mnimo y mximo que queremos que tenga. Esto se consigue mediante las propie-
dades: MinimumSize y MaximumSize. No es necesario indicarle el tamao a las dos
propiedades, por ejemplo si lo que queremos es que nuestro formulario no pueda
ser menor de 300x200, asignaremos el valor 300 a MinimumSize.Width y 2008 Mi-
nimumSize.Height.
Aqu tienes el formulario de prueba:

Figura N 15: Formulario de prueba

1 PROGRAMACIN DE EVENTOS
Los eventos son las acciones a las que un objeto puede responder. Cuando un usua-
rio cierra un formulario, el formulario responde a un evento llamado closed que
ejecuta el cdigo que el programador puso en el evento. En la programacin gene-
rada por eventos, el usuario genera eventos como mover el mouse o presionar una
tecla y esto provoca la ejecucin del segmento de cdigo asociado al evento.

Figura N 16: formulario con un botn de comando

Por ejemplo, como se puede ver en la figura, cuando un usuario hace clic en el
botn del formulario se ejecuta el cdigo que el programador de la aplicacin haya
puesto. Es decir, depende de la accin del usuario la ejecucin de ese cdigo.

Continuemos con nuestro ejemplo anterior, ahora vamos a escribir cdigo para
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
43

Lecturas Glosario Bibliografa


seleccionadas
que se ejecute cada vez que se haga click en el botn que hemos aadido, para ello,
seleccione el botn Mostrar y haz doble click en l, se mostrar una nueva ventana,
en este caso la ventana de cdigo asociada con el formulario que tenemos en nues-
tro proyecto. Recordatorio Anotaciones

Te mostrar esto:
Private Sub btnMensaje_Click(ByVal sender As System.Object,
ByVal) Handles Button1.Click
End Sub

Lo que vamos a hacer ahora, es escribir el cdigo que se ejecutar cuando se haga
click en ese botn, escribe lo siguiente en el hueco dejado por el Visual Basic 2012,
en la lnea que hay entre Private Sub... y End Sub
Msgbox (HoIa & TextBoxl. Text)

Antes de explicarte que es lo que estamos haciendo, pulsa F5 para que se ejecute el
cdigo que hemos escrito o pulsa en el botn play que est en la barra de botones.

Escribe algo en la caja de texto, que por defecto tendr TextBox1


(que es al valor que por defecto Visual Basic .NET le asigna a la
propiedad Text de dicho control), pulsa en el botn Mostrar y ve-
rs que se muestra un cuadro de dilogo dicindote Hola y a con-
tinuacin lo que hayas escrito en el TextBox.
Pulsa en el botn OK (Aceptar) para quitar el cuadro de dilogo y
cerrar el formulario, pulse en el botn X

Figura N 17: Resultado de la ejecucin del programa

Ahora vamos a aadir otro botn, el cual se llamar cmdCerrar y el texto que debe
mostrar es: Cerrar
Y este es el cdigo que debe ejecutar cuando se haga click en el:
Me. Close()

Pulsa F5 y cuando pulses en el botn cerrar, se cerrar el formulario.


Ahora veamos con detalle el cdigo que hemos usado en los dos eventos;
Msgbox(HoIa & TextBox1. Text)

En este cdigo tenemos lo siguiente: MsgBox que es una funcin o mtodo, cuya
tarea es mostrar en un cuadro de dilogo lo que le indiquemos en el primer par-
metro, para indicarle que es lo que queremos que muestre, tendremos que hacerlo
dentro de los parntesis, en este caso, queremos que se muestre la palabra Hola
y lo que haya en la caja de texto.
ollo
nidos 44
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
La palabra Hola (seguida de un espacio) es una constante, es decir siempre ser
la palabra Hola seguida de un espacio. Por otro lado, TextBox1.Text representa el
texto que haya en la caja de texto y por tanto devolver lo que en l hayamos escrito.
Por ltimo, para unir esas dos cadenas de caracteres, la constante Hola y el conte-
torio Anotaciones
nido de la propiedad Text del control Textbox1, usaremos el signo & (ampersand)
el cual sirve para concatenar cadenas de caracteres.

En el mtodo del evento Click del botn cerrar hemos escrito: Me.Close(); Me re-
presenta al objeto o clase Form1 (el formulario) y el mtodo Close lo que hace es
cerrar el formulario, igual que cuando pulsamos en el botn cerrar del formulario.

3.1 Entradas y Salidas


En esta parte construiremos programas con estructura secuencial que hagan uso
solo de instrucciones simples, tales como instrucciones de entrada/salida y senten-
cias de asignacin. Ms adelante veremos las instrucciones compuestas.

A. Programas secuenciales
Ejemplo: Elaborar un programa que permita obtener el rea de un tringulo

Figura N 18: Interfaz de formulario de ejemplo

Programacin:

B. Descomposicin de Nmeros:
Algunos programas requieren la descomposicin de nmeros en sus dgitos, ya
sea para contarlos, identificarlos, compararlos etc. Esta representacin involucra
determinado Artificio cuando la codificacin de hace con Microsoft Visual Ba-
sic 2012, ya que para obtener los dgitos de un nmeros debemos descomponer
utilizando divisiones sucesivas. Tenemos bsicamente dos formas de descompo-
ner los nmeros, el siguiente cuadro muestra el algoritmo para el nmero 3245:
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
45

Lecturas Glosario Bibliografa


seleccionadas
Cuadro N 10: Algoritmo para la descomposicin de nmeros

'LYLVLRQHV 2EWHQLHQGRFRFLHQWHV 2EWHQLHQGRUHVLGXRV


Recordatorio Anotaciones
    5HVWR    5HVWR
    5HVWR    5HVWR
    5HVWR    5HVWR
    5HVWR    5HVWR
 &RFLHQWHV 5HVWRV

Veamos la expresin algortmica obteniendo restos:

Figura N 19: Interfaz para Descomposicin de nmeros

Programacin:

TEMA 2: Estructura Selectiva


Los procedimientos de Microsoft Visual Basic 2012 pueden evaluar condiciones y, de-
pendiendo de los resultados, realizar diferentes operaciones. Las estructuras de deci-
sin que acepta Microsoft Visual Basic 2012 son:
If...Then
If...Then...Else
Select Case
ollo
nidos 46
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
1 ESTRUCTURA SELECTIVA SIMPLE: IF...THEN
Use la estructura If...Then para ejecutar una o ms instrucciones basadas en una
condicin. Puede utilizar la sintaxis de una lnea o un bloque de varias lneas:
torio Anotaciones

,IFRQGLFLyQ7KHQ6HQWHQFLDV ,IFRQGLFLyQ7KHQ
   6HQWHQFLDV
(QG,I

Condicin normalmente es una comparacin, pero puede ser cualquier expresin


que d como resultado verdadero o falso, inclusive un valor numrico cero es False
y se considera True cualquier valor numrico distinto de cero.

Si condicin es True, Microsoft Visual Basic 2012 ejecuta todas las sentencias que
siguen a la palabra clave Then. Puede utilizar sintaxis de una lnea o de varias lneas
para ejecutar una sentencia basada en una condicin, los siguientes dos ejemplos
son equivalentes:

Observe que el formato de una nica lnea de If...Then no utiliza la instruccin


End If. Si se desea ejecutar ms de una lnea de cdigo cuando condicin sea True,
debe utilizar la sintaxis de bloque de varias lneas If...Then...End If.

2 ESTRUCTURA SELECTIVA DOBLE: IF...THEN...ELSE


Utilice un bloque If...Then...Else para definir varios bloques de sentencias, uno de
los cuales se ejecutar:
If condicin Then
[bloque de sentencias 1]
Else
[bloque de sentencias 2]
End If

Microsoft Visual Basic 2012 evala primero la condicin, si es True, se ejecuta el


bloque de sentencias 1, si es False, se ejecuta el bloque de sentencias 2

If...Then...ElseIf es un caso especial de If...Then...Else. Observe que puede tener


cualquier nmero de clusula ElseIf o ninguna. Puede incluir una clusula Else sin
tener en cuenta si tiene o no clusula ElseIf.
Por ejemplo, la aplicacin podra realizar distintas acciones dependiendo del con-
trol en que se haya hecho clic de una matriz de controles de men:

Observe que siempre puede agregar ms clusulas ElseIf a la estructura If...Then.


LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
47

Lecturas Glosario Bibliografa


seleccionadas
3 ESTRUCTURA SELECTIVA MLTIPLE: SELECT CASE
La estructura Select Case funciona con una nica expresin de prueba que se eva-
la una vez solamente, al principio de la estructura. Microsoft Visual Basic 2012
compara el resultado de esta expresin con los valores de cada Case de la estruc-
Recordatorio Anotaciones

tura. Si hay una coincidencia, ejecuta el bloque de sentencias asociado a ese Case:
Selec Case expresin_prueba
[Case lista_expresiones1
[bloque de sentencias 1]]
[Case lista_expresiones2
[bloque de sentencias 2]]
.
.
.
[Case Else
[bloque de sentencias n]]
End Select

Cada lista_expresiones es una lista de uno a ms valores. Si hay ms de un valor en


una lista, se separan los valores con comas. Microsoft Visual Basic 2012 ejecuta las
instrucciones de la clusula (opcional) Case Else si ningn valor de la lista de ex-
presiones coincide con la expresin de prueba.
Por ejemplo, suponga que agrega otro comando al men Edicin en el ejemplo
If...Then...Else. Podra agregar otra clusula ElseIf o podra escribir la funcin con
Select Case:
Select Case Cantidad
Case 1
sngDscto = 0.0
Case 2, 3
sngDscto = 0.05
Case 4 To 6
sngDscto = 0.10
Diagrama
ObjetivosCase Inicio
Else
sngDscto = 0.20
End Select

Desarrollo Actividades Autoevaluacin


de contenidos

LECTURA SELECCIONADAS N 1
Lecturas Glosario Bibliografa
seleccionadas
Lenguajes de programacin. James A. OBrien Sistemas de informacin Gerencial. p
199-204

Para comprender
Recordatorio Anotaciones el software computadonal/ usted necesita un conocimiento bsico
del papel que los lenguajes de programacin desempean en el desarrollo de progra-
mas computacionales. Un lenguaje de programacin permite a un programador desa-
rrollar los conjuntos de instrucciones que constituyen un programa computacional. Se
han desarrollado muchos lenguajes de programacin/cada uno con su propio vocabu-
lario/ gramtica y usos nicos.

Lenguajes de mquina
Los lenguajes de mquina (o lenguajes de primera generacin) constituyen el nivel ms
bsico de lenguajes de programacin. En las primeras etapas del desarrollo computa-
cional, todas las instrucciones de programas tenan que escribirse utilizando cdigos
binarios nicos para cada computador. Este tipo de programacin comprende la difcil
tarea de escribir instrucciones en la forma de cadenas de dgitos binarios (unos y ceros)
u otros sistemas numricos. Los programadores deben contar con un conocimiento
detallado de las operaciones internas del tipo especfico de CPU que estn utilizando.
Deben escribir largas series de detalladas instrucciones para realizar incluso simples
tareas de procesamiento. La programacin en lenguaje de mquina requiere especifi-
car las ubicaciones de almacenamiento para cada instruccin y elemento de datos que
se utilice. Deben incluirse instrucciones para cada conmutador e indicador que utilice
el programa. Estos requerimientos hacen de la programacin en lenguaje de mqui-
ollo
nidos 48
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
na una tarea difcil y propensa a errores. Un programa en lenguaje de mquina para
agregar dos nmeros juntos en la CPU de un determinado computador, y almacenar el
resultado, podra adoptar la forma que se muestra en la figura.
torio Anotaciones

El Norton Svstem Doctor es uno de ios programas de utilidad en The Norton Utili-
tes: un conjunto de programas de utilidad de mayor venta, para su computador perso-
nal.

Lenguajes ensambladores
Los lenguajes ensambladores (o lenguajes de segunda generacin) son el nivel siguien-
te de los lenguajes de programacin. Estos se desarrollaron para reducir las dificul-
tades en la escritura de programas en lenguaje de mquina. El uso de lenguajes en-
sambladores requiere programas traductores de lenguajes que reciben el nombre de
ensambladores, que permiten que un computador convierta las instrucciones de dichos
lenguajes en instrucciones de mquina. Con frecuencia, los lenguajes ensambladores se
denominan lenguajes simblicos porque se utilizan smbolos para representar cdigos
de operacin y ubicaciones de almacenamiento. Las tiles abreviaciones alfabticas de-
nominadas mnemotcnicas (ayudas de memoria) y otros smbolos representan cdigos
de operacin, ubicaciones de almacenamiento y elementos de datos. Por ejemplo, el
clculo X = Y + Z en un lenguaje ensamblador podra adoptar la forma que se muestra
en la figura 5.25.

Ventajas y desventajas. Un lenguaje ensamblador utiliza abreviaciones alfabticas que


son ms fciles de recordar, en lugar de las actuales direcciones numricas de los datos.
Esto simplifica bastante la programacin, ya que el programador no necesita saber las
ubicaciones exactas de almacenamiento de datos e instrucciones. Sin embargo, el len-
guaje ensamblador est todava orientado hacia la mquina, porque las instrucciones
en lenguaje ensamblador corresponden exactamente a las instrucciones en lenguaje
de mquina del determinado modelo de computador que se est utilizando. Adems,
ntese que cada instruccin de ensamblador corresponde a una sola instruccin de m-
quina, y que se requiere la misma cantidad de instrucciones en ambos casos.

Los lenguajes ensambladores todava se utilizan ampliamente como mtodo de programa-


cin de un computador en un lenguaje orientado hacia la mquina. La mayora de los fabri-
cantes de computadores proporcionan un lenguaje ensamblador que refleja el conjunto de
instrucciones nicas del lenguaje de mquina de una determinada lnea de computadores.
Esta propiedad es particularmente conveniente para programado-res de sistemas que pro-
graman software de sistemas (en oposicin a los programadores de aplicaciones que progra-
man software de aplicacin), ya que les proporciona un mayor control y flexibilidad en el
diseo de un programa para un computador en particular. Ellos pueden entonces producir
software ms eficiente, es decir, programas que requieren un mnimo de instrucciones, al-
macenamiento y tiempo de CPU para ejecutar una tarea especfica de procesamiento.

Ejemplos de cuatro niveles de lenguajes de programacin. Estas instrucciones en lenguaje


de programacin podran utilizarse para calcular la suma de dos nmeros, como lo expresa
la frmula X = Y + Z. '
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
49

Lecturas Glosario Bibliografa


seleccionadas

Recordatorio Anotaciones

Aspectos relevantes de varios lenguajes importantes de alto nivel.


Lenguajes de alto nivel


Los lenguajes de alto nivel (o lenguajes de tercera generacin) utilizan instrucciones,
que se denominan necia-raciones, y que usan breves declaraciones o expresiones arit-
mticas. Las declaraciones individuales en lenguaje de alto nivel son realmente ma-
croinstrucciones; es decir, cada declaracin individual genera varias instrucciones de
mquina cuando se traducen a lenguaje de mquina mediante programas traductores
de lenguaje de alto nivel denominados compiladores o intrpretes. Las declaraciones
de lenguaje de alto nivel se parecen a las frases o expresiones matemticas que se re-
quieren para expresar el problema o procedimiento que se est programando. La sin-
taxis (vocabulario, puntuacin y reglas gramaticales) y la semntica (significados) de
tales declaraciones no reflejan el cdigo interno de un computador en particular. Por
ejemplo, el clculo de X = Y + Z podra programarse en los lenguajes de alto nivel de
BASIC y COBOL, como se muestra en la figura 5.25.

Ventajas y desventajas. Un lenguaje de alto nivel es sin duda ms fcil de aprender


y entender que un lenguaje ensamblador. Adems, los lenguajes de alto nivel tienen
reglas, formas y sintaxis menos rgidas, de manera que se reduce el potencial de error.
Sin embargo, los programas en lenguaje de alto nivel usualmen-te son menos eficientes
que los programas en lenguaje ensamblador y requieren una mayor cantidad de tiempo
de computador para traduccin en instrucciones de mquina. Puesto que la mayora
de los lenguajes de alto nivel son independientes de la mquina, los programas escritos
en un lenguaje de alto nivel no tienen que reprogramarse cuando se instala un nuevo
computador, y los programadores de computadores no tienen que aprender un nuevo
lenguaje para cada computador que programan. En la figura 5.26 se destacan algunos
de los principales lenguajes de alto nivel que, en cierta forma, todava se utilizan en la
actualidad.
ollo
nidos 50
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
Lenguajes de cuarta generacin
El trmino lenguaje de cuarta generacin describe una variedad de lenguajes de progra-
macin que son ms no procedimentales y conversacionales que los lenguajes anterio-
torio Anotaciones res. Estos lenguajes se denominan lenguajes de cuarta generacin (4GL) con el fin de
diferenciarlos de los lenguajes de mquina (primera generacin), lenguajes ensambla-
dores (segunda generacin) y lenguajes de alto nivel (tercera generacin).

La mayora de los lenguajes de cuarta generacin son lenguajes no procedimentales que


ayudan a los usuarios y programadores a especificar los resultados que desean, mientras
que el computador determina la secuencia de instrucciones que lograr dichos resul-
tados. Los usuarios y programadores ya no tienen que dedicar una gran cantidad de
tiempo en el desarrollo de la secuencia de instrucciones que el computador debe seguir
para obtener un resultado. De esta forma, los lenguajes de cuarta generacin han ayu-
dado a simplificar

el proceso de programacin. Los lenguajes naturales son 4GL que se acercan mucho
al ingls u otros lenguajes humanos. La actividad de investigacin y desarrollo en inte-
ligencia artificial (AI, artificial intellgence} est desarrollando lenguajes de programa-
cin que son tan fciles de usar como la conversacin normal en la lengua nativa de
alguien. Por ejemplo, INTELLECT, un lenguaje natural 4GL/ utilizara una declaracin
como:

"Cules son los puntajes promedio del examen en MIS 200?" para programar una tarea
simple de puntaje promedio del examen.

Ventajas y desventajas. Existen diferencias importantes en la facilidad de uso y en la com-


plejidad tcnica de los productos 4GL. Por ejemplo, INTELLECT y English Wizard son
ejemplos de lenguajes de consulta natural que no imponen reglas gramaticales rgidas,
mientras que un lenguaje de consulta como SQL requiere declaraciones estructuradas
concisas. Sin embargo, la facilidad de uso de los 4GL se obtiene a expensas de alguna
prdida en flexibilidad. Con frecuencia es difcil para un usuario final sustituir algunos
de los formatos o procedimientos especificados previamente de los 4GL. Adems, el
cdigo del lenguaje de mquina generado por un programa desarrollado mediante un
4GL, a menudo es mucho menos eficiente (en trminos de velocidad de procesamiento
y cantidad de capacidad de almacenamiento necesaria) que un programa escrito en
un lenguaje como COBOL. Las principales fallas se han presentado en algunas apli-
caciones grandes para procesamiento de transacciones programadas en un 4GL. Es-
tas aplicaciones no pudieron proporcionar tiempos de respuesta razonables cuando se
vieron enfrentadas a una gran cantidad de procesamiento de transacciones en tiempo
real y consultas de usuarios finales. Sin embargo, los 4GL han demostrado gran xito
en aplicaciones empresariales que no tienen un alto volumen de procesamiento de
transacciones.

Lenguajes orientados a objetos


Los lenguajes de programacin orientado a objetos (OOP, object-oriented program-
ming} han existido desde que Xerox desarroll Smalltalk en los aos sesenta. Sin embar-
go/ los lenguajes orientados a objetos como Visual Basic/ C++ y Java se han convertido
en importantes herramientas del desarrollo de software. En resumen, mientras que la
mayora de los dems lenguajes de programacin separan elementos de datos de los
procedimientos o las acciones que se ejecutarn en ellos, los lenguajes OOP los unen
en objetos. De esta forma, un objeto se compone de datos y las acciones que pueden
ejecutarse en los datos. Por ejemplo, un objeto podra ser un conjunto de datos sobre
la cuenta de ahorros de un cliente bancario, v las operaciones (como clculos de in-
tereses) qre podran realizarse en los datos. O un objeto podran ser datos en forma
grfica, como una ventana de presentacin de video, ms las acciones de visualizacin
que podran utilizarse en ste.

En lenguajes procedimentales, un programa se compone de procedimientos para ejecu-


tar acciones en cada elemento de datos. Sin embargo, en sistemas orientados a objetos,
los objetos le dicen a otros objetos que realicen acciones en ellos mismos. Por ejemplo,
para abrir una ventana en una presentacin de video de computador, un objeto inicial
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
51

Lecturas Glosario Bibliografa


seleccionadas
de men podra enviar a un objeto de la ventana un mensaje para abrir, y en la pantalla
aparecer una ventana. Por eso el objeto de la ventana contiene el cdigo de programa
para abrirse.
Recordatorio Anotaciones

Los lenguajes orientados a objetos son ms fciles de usar y ms eficientes para pro-
gramar interfaces de usuario orientadas a grficos que requieren muchas aplicaciones.
Adems, una vez programados los objetos, stos pueden volverse a utilizar. Por tanto,
la reutilizacin de objetos es un beneficio importante de la programacin orientada
a objetos. Por ejemplo, los programadores pueden construir una interfaz de usuario
para un nuevo programa ensamblando objetos estndar como ventanas, barras, cajas
de dilogo, botones e iconos. Por tanto, la mayora de los paquetes de programacin
orientada a objetos proporcionan una GUI que respalda un ensamblaje visual "apuntar
y hacer clic", "arrastrar y soltar" de objetos conocido como programacin visual. En la
figura 5.28 se muestra una presentacin del ambiente de programacin orientada a
objetos. Visual Basic.

Un ejemplo de un objeto de cuenta de ahorros bancaria. Este objeto se com-pone de


datos sobre el saldo en una cuenta de un cliente y las operaciones bsicas que pueden
ejecu-tarse en dichos datos.

Diagrama Objetivos Inicio

ACTIVIDAD N 1:
Desarrollo Actividades Autoevaluacin
de contenidos

Esta actividad puede consultarla en su aula virtual.

Tema 3: ESTRUCTURAS REPETITIVAS


Lecturas Glosario Bibliografa
seleccionadas

Las estructuras de repeticin o bucle le permiten ejecutar una o ms lneas de cdigo re-
petidamente. Las estructuras de repeticin que acepta Microsoft Visual Basic 2012 son:
Recordatorio Do...Loop
Anotaciones

For...Next
For Each...Next

1 ESTRUCTURA DO...LOOP
Utilice el bucle Do para ejecutar un bloque de sentencias un nmero indefinido de
veces. Hay algunas variantes en la sentencia Do...Loop, pero cada una evala una
condicin numrica para determinar si contina la ejecucin. Como ocurre con If...
Then, la condicin debe ser un valor o una expresin que d como resultado False
(cero) o True (distinto de cero).

En el siguiente ejemplo de Do...Loop, las sentencias se ejecutan siempre y cuando


condicin sea True:
ollo
nidos 52
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas

Do While condicin
Sentencias
Loop
torio Anotaciones

Cuando Microsoft Visual Basic 2012 ejecuta este bucle Do, primero evala condicin.
Si condicin es False (cero), se salta todas las sentencias. Si es True (distinto de cero)
Microsoft Visual Basic 2012 ejecuta las sentencias, vuelve a la instruccin Do While y
prueba la condicin de nuevo.

Por tanto, el bucle se puede ejecutar cualquier nmero de veces, siempre y cuando con-
dicin sea distinta de cero o True. Nunca se ejecutan las sentencias si condicin es False
inicialmente. Por ejemplo, este procedimiento cuenta las veces que se repite una cade-
na destino dentro de otra cadena repitiendo el bucle tantas veces como se encuentre la
cadena de destino:
Function ContarCadenas (cadenalarga, destino)
Dim posicin, contador
posicin = 1
Do While InStr (posicin, cadenalarga, destino)
posicin = InStr (posicin, cadenalarga, destino)+1
contador = contador + 1
Loop
ContarCadenas = contador
End Function

Si la cadena destino no est en la otra cadena, InStr devuelve 0 y no se ejecuta el bucle.


Otra variante de la instruccin Do...Loop ejecuta las sentencias primero y prueba la
condicin despus de cada ejecucin. Esta variacin garantiza al menos una ejecucin
de sentencias:
Do
Sentencias
Loop While condicin

Hay otras dos variantes anlogas a las dos anteriores, excepto en que repiten el bucle
siempre y cuando condicin sea False en vez de True.

Hace el bucle cero o ms veces Hace el bucle al menos una vez


Do Until condicin Do

Sentencias Sentencias
Loop Loop Until condicin

2 ESTRUCTURA FOR...NEXT
Cuando se sabe que se va a ejecutar las sentencias un nmero determinado de
veces, es mejor elegir el bucle For...Next. A diferencia del bucle Do, el bucle For
utiliza una variable llamada contador que incrementa o reduce su valor en cada
repeticin del bucle. La sintaxis es la siguiente:
For contador = iniciar To finalizar [Step incremento]
Sentencias
Next [contador]

Los argumentos contador, iniciar, finalizar e incremento son todos numricos.


Nota: El incremento puede ser positivo o negativo. Si es positivo, iniciar debe ser
menor o igual que finalizar o no se ejecutarn las sentencias del bucle. Si no se
establece Step, el valor predeterminado de incremento es 1.
Este cdigo imprime los nombres de todas las fuentes de pantalla disponibles:
Private Sub Form-Click ( )
Dim I As Integer
For i = 0 To Screen.FontCount
Print Screen.Fonts (i)
Next
End Sub
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
53

Lecturas Glosario Bibliografa


seleccionadas
3 ESTRUCTURA FOR EACH...NEXT
El bucle For Each...Next es similar al bucle For...Next, pero repite un grupo de
sentencia por cada elemento de una coleccin de objetos o de una matriz en vez de
Recordatorio Anotaciones
repetir las sentencias un nmero especificado de veces. Esto resulta especialmente
til si no se sabe cuntos elementos hay en la coleccin. He aqu la sintaxis del
bucle For Each...Next:
For Each elemento In grupo
Sentencias
Next elemento

Por ejemplo, el siguiente procedimiento Sub abre la base de datos Biblio.mdb y


agrega el nombre de cada tabla a un cuadro de lista.
Sub ListTableDefs ( )
Dim objDb As Database
Set objDb = OpenDatabase("c:/Archivos de programa/Devstudio/" &_
"vb/biblio.mdb", True, False)
For Each TableDef In objDb.TableDefs ( )
List1.AddItem TableDef.Name
Next TableDef
End Sub

Tenga en cuenta las restricciones siguientes cuando utilice For Each...Next:


Para las colecciones, elemento slo puede ser una variable Variant, una variable
Object genrica o un objeto mostrado en el Examinador de objetos.
Para las matrices, elemento slo puede ser una variable Variant.
No puede utilizar For Each...Next con una matriz de tipos definidos por el usua-
rio porque un Variant no puede contener un tipo definido por el usuario.

El siguiente ejemplo habilita todos los Cuadro de Texto del formulario:


Private Sub ModoEdicin ( )
Dim control
For Each control In form1.Controls
If TypeOf control Is TextBox Then
Control.Enabled = True
End If
Next control
End Sub

4 SALIDA DE UNA ESTRUCTURA REPETITIVA


La instruccin Exit le permite salir directamente de un bucle For o de un bucle
Do. La sintaxis de la sentencia Exit es sencilla: Exit For puede aparecer tantas veces
como sea necesario dentro de un bucle For y Exit Do puede aparecer tantas veces
como sea necesario dentro de un bucle Do:
For contador = iniciar To finalizar [Step incremento]
[bloque sentencias]
[Exit For]
[bloque sentencias]
Next [contador]

Do [{While / Until} condicin]


[bloque de sentencias]
[Exit Do]
[bloque de sentencias]
Loop

Do
[bloque de sentencias]
[Exit Do]
[bloque de sentencias]
Loop [{While / Until} condicin]

Exit For y Exit Do son muy tiles ya que, algunas veces, resulta apropiado salir inme-
diatamente de un bucle sin realizar ms iteraciones o sentencias dentro del bucle.
ollo
nidos 54
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
Tema 4: Formularios de interfaz mltiple (MDI)
1 APLICACIONES DE ESTILO MDI
torio Anotaciones Una aplicacin de tipo o estilo MDI (Multiple Document Interface), Interfaz de
Documento Mltiple, se compone de un formulario principal, tambin denomina-
do formulario MDI, que actuar como contenedor de otros formularios (documen-
tos) abiertos durante el transcurso del programa, denominados formularios hijos o
secundarios MDI. Como ejemplos de este tipo de aplicacin tenemos PowerPoint
o Access.

Seguidamente describiremos el proceso de creacin de un proyecto que contenga


un formulario MDI y dos formularios hijos, as como el comportamiento de estos
ltimos cuando son abiertos dentro del formulario padre MDI. Este ejemplo tiene
el nombre MDIPru.

Una vez creado el nuevo proyecto, cambiaremos el nombre del formulario por de-
fecto a frmPrincipal. Para conseguir que este formulario tenga el comportamiento
de un contenedor MDI, debemos asignar el valor True a su propiedad IsMdiContai-
ner. Tambin debemos establecer a este formulario como inicial en las propiedades
del proyecto.

Ahora pasaremos a la creacin de los formularios hijos del MDI. El primero, frm-
Carta, permite la escritura en un TextBox multilnea, cuyo contenido podremos
grabar a un archivo en disco.

Figura N 21: Formularios y controles para la implementacin del formulario hijo

El cdigo del botn que realiza la grabacin del texto lo podemos ver en el siguien-
te Cdigo fuente. Debemos importar el espacio de nombres System.IO, ya que en
esta clase del formulario hacemos uso de los tipos File y StreamWriter.
Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles btnGrabar.Click
' escribir en un archivo el contenido
' del TextBox
Dim oEscritor As StreamWriter
oEscritor = File.CreateText(Me.txtArchivo.Text)
oEscritor.Write(Me.txtCarta.Text)
oEscritor.Close()
End Sub

El otro formulario hijo, frmInfo, muestra la fecha y hora actual; esta ltima es actua-
lizada a travs del control Timer tmrTiempo.
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
55

Lecturas Glosario Bibliografa


seleccionadas

Recordatorio Anotaciones

Figura N 22: Formulario hijo que muestra la fecha y hora actual

El Siguiente Cdigo fuente muestra las instrucciones que se ejecutan en el evento


Tick del control Timer.
Private Sub tmrTiempo_Tick(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles tmrTiempo.Tick
Dim dtFecha As Date
dtFecha = DateTime.Today
Dim dtHora As Date
dtHora = DateTime.Now
Me.lblFecha.Text = dtFecha.ToString("d/MMM/yyyy")
Me.lblHora.Text = dtHora.ToString("h:m:s")
End Sub

El siguiente paso consiste en crear un men para poder abrir los formularios hijos
a travs de sus opciones.

1 MENS
Es probable que usted haya observado, en algunas aplicaciones Windows de tipo
MDI, que existe en la barra de mens de la ventana principal, un men con el
nombre Ventana o Window, que nos muestra los nombres de los formularios hijos
abiertos, permitindonos cambiar de formulario activo al seleccionar una de esas
opciones.

La creacin del men se realiza mediante el control MenuStrip de la categora


Menus & Toolbars

Figura N 23: Categora Mens & Toolbars

Seleccione y arrastre al formulario MDI, puede ingresar el texto de los mens, lue-
go se realizar la programacin:

Figura N 24
ollo
nidos 56
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
En las opciones Carta e Informacin del men, instanciaremos un objeto del for-
mulario correspondiente, teniendo en cuenta que para conseguir que dichos for-
mularios se comporten como hijos del MDI, debemos asignar a su propiedad Mdi-
torio Anotaciones
Parent, la instancia actual del formulario en ejecucin, es decir, Me. Veamos este
punto en el Cdigo fuente.
Private Sub mnuCarta_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles mnuCarta.Click
Dim ofrmCarta As New frmCarta()
' con la siguiente lnea conseguimos que el
' formulario se comporte como hijo del actual
ofrmCarta.MdiParent = Me
ofrmCarta.Show()
End Sub

Private Sub mnuInformacion_Click(ByVal sender As System.Object,


ByVal e As
System.EventArgs) Handles mnuInformacion.Click
Dim ofrmInfo As New frmInfo()
' con la siguiente lnea conseguimos que el
' formulario se comporte como hijo del actual
ofrmInfo.MdiParent = Me
ofrmInfo.Show()
End Sub

2.1 Comportamiento No Modal (Modeless) de formularios


Un formulario de comportamiento no modal, permite el libre cambio de foco en-
tre el resto de formularios de la aplicacin.

Otra caracterstica de los formularios no modales reside en que una vez creados y
visualizados, el resto del cdigo de la aplicacin contina su ejecucin.
Dim ofrmCarta As New frmCarta()
' crear formulario hijo de un mdi
ofrmCarta.MdiParent = Me
ofrmCarta.Show()
' despus de mostrar el formulario hijo
' se muestra a continuacin este mensaje
MessageBox.Show("Se acaba de abrir un formulario hijo")

2.2 Comportamiento Modal de formularios


Como contrapartida al anterior apartado tenemos los formularios de comporta-
miento modal, tambin denominados cuadros o ventanas de dilogo.

Un formulario modal, al ser visualizado, bloquea el paso a otros formularios de la


aplicacin hasta que no es cerrado (aceptado o completado) por el usuario.

Como ejemplo de estos formularios se acompaa el proyecto FormDialogos , del


que pasamos a describir su proceso de creacin.

Este proyecto contiene un formulario MDI llamado frmPrincipal, y uno hijo con el
nombre frmHijo, que abrimos mediante una opcin de men; la creacin de este
tipo de formularios se ha descrito en apartados anteriores.

A continuacin aadimos un nuevo formulario al proyecto con el nombre frmDia-


logo, que tambin abriremos a travs de la correspondiente opcin de men del
formulario MDI.

Para que este formulario tenga un comportamiento modal, debemos mostrarlo eje-
cutando el mtodo ShowDialog( ) de la clase Form.

Observe tambin el lector, cmo hasta que el formulario de dilogo no es cerrado,


no se mostrar el mensaje que hay a continuacin de la llamada a ShowDialog( ).
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
57

Lecturas Glosario Bibliografa


seleccionadas
Si adems intentamos pasar al formulario hijo, en el caso de que est abierto, no
podremos.
Private Sub mnuDialogo_Click(ByVal sender As System.Object, ByVal
e As Recordatorio Anotaciones
System.EventArgs) Handles mnuDialogo.Click
' instanciar el formulario que mostraremos como un dilogo
Dim ofrmDialogo As New frmDialogo()
' dar una posicin al formulario
ofrmDialogo.StartPosition = FormStartPosition.CenterParent
' mostrarlo de forma modal, como cuadro de dilogo
ofrmDialogo.ShowDialog()
MessageBox.Show("Se ha cerrado el dilogo")
End Sub

Para cerrar un formulario modal podemos, al igual que para cualquier formulario, eje-
cutar su mtodo Close( ). No obstante, un formulario de dilogo suele proporcionar,
aunque esto no es obligatorio, los tpicos botones para aceptar, cancelar, reintentar,
etc.; de modo que una vez cerrado el formulario, podamos averiguar qu botn puls
el usuario.

Podemos proporcionar este comportamiento en nuestros formularios modales, asig-


nando a la propiedad DialogResult de la clase Form, uno de los valores del tipo enume-
rado DialogResult. Esto tendr como efecto adicional el cierre del cuadro de dilogo.

Por lo tanto, vamos a aadir a nuestro formulario frmDialogo, dos controles Button:
btnAceptar y btnCancelar, en los que escribiremos las instrucciones del Cdigo fuente
Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles btnAceptar.Click
' asignar un valor a esta propiedad,
' cierra al mismo tiempo el formulario
Me.DialogResult = DialogResult.OK
End Sub
Private Sub btnCancelar_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
Handles btnCancelar.Click
' asignar un valor a esta propiedad,
' cierra al mismo tiempo el formulario
Me.DialogResult = DialogResult.Cancel
End Sub

Como ayuda en la construccin de formularios modales de dilogo, la clase Form dispo-


ne de las propiedades AcceptButton y CancelButton, a las que podemos asignar sendos
controles Button que sern ejecutados al pulsar las teclas [INTRO] y [ESCAPE] respec-
tivamente.

Esto es lo que haremos en el formulario frmDialogo, asignando a AcceptButton el con-


trol btnAceptar, y en CancelButton asignaremos btnCancelar.
Finalmente, en el evento de la opcin de men que abre este formulario modal, co-
rrespondiente a frmPrincipal, aadiremos, tras la llamada a ShowDialog( ), el cdigo
que comprobar el resultado de la ejecucin del formulario de dilogo. Ver el Cdigo
fuente.
Private Sub mnuDialogo_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles mnuDialogo.Click
' instanciar el formulario que mostraremos como un dilogo
Dim ofrmDialogo As New frmDialogo()
' dar una posicin al formulario
ofrmDialogo.StartPosition = FormStartPosition.CenterParent
' mostrarlo de forma modal, como cuadro de dilogo
ofrmDialogo.ShowDialog()
' comprobar lo que ha hecho el usuario
' en el cuadro de dilogo
Dim Resultado As DialogResult
Resultado = ofrmDialogo.DialogResult
If Resultado = DialogResult.OK Then
ollo
nidos 58
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
MessageBox.Show("Datos del dilogo: " & _
ofrmDialogo.txtNombre.Text & " " & _
ofrmDialogo.txtApellidos.Text)
Else
torio Anotaciones MessageBox.Show("Se ha cancelado el dilogo")
End If
End Sub

2.3. Controles de cuadros de dilogo del sistema


Del conjunto de controles que nos ofrece la ventana Cuadro de herramientas del
IDE, existe un grupo que nos permite el acceso a los cuadros de dilogo estndar
del sistema operativo, esto es, los cuadros de seleccin de color, tipo de letra o fuen-
te, apertura-grabacin de archivo, etc.

Para ilustrar el uso de algunos de estos controles, vamos a crear un proyecto de


ejemplo con el nombre DialogosSistema, en el que describiremos su modo de uso
en los aspectos de diseo y codificacin.

Crearemos, un nuevo proyecto de tipo Windows aplication, y en su formulario,


insertaremos un men, aadiendo las siguientes opciones: Abrir, Guardar, Color y
Fuente. Cada opcin mostrar un tipo de dilogo del sistema.

Seguidamente insertaremos un TextBox, que acoplaremos con la propiedad Dock


a todo el espacio del formulario, y que nos servir como base para las operaciones
a realizar mediante los controles de dilogo.

Una vez dibujado un control de cuadro de dilogo en el formulario, dicho control


quedar ubicado en el panel de controles especiales, al igual que sucede con los
mens. Para abrir un control de este tipo en tiempo de ejecucin, emplearemos su
mtodo ShowDialog( ).

A continuacin describiremos cada uno de los controles de dilogo utilizados en


este ejemplo.

A. ColorDialog
Este control muestra el cuadro de dilogo del sistema para la seleccin de colo-
res. Entre sus propiedades podemos destacar las siguientes.
Color. Contiene un tipo de la estructura Color, que nos permite obtener el co-
lor seleccionado por el usuario mediante este cuadro de dilogo, para poder
aplicarlo sobre alguno de los elementos del formulario.
AllowFullOpen. Contiene un valor lgico que permite habilitar y deshabilitar
el botn que muestra el conjunto de colores personalizados del cuadro de
dilogo de seleccin de colores.

Al seleccionar en el formulario, la opcin de men Color, ejecutaremos el Cdi-


go fuente que nos permitir, utilizando el control dlgColor, de tipo ColorDialog,
elegir un color y aplicarlo a la propiedad BackColor, del control TextBox.
Private Sub mnuColor_Click() Handles mnuColor.Click
Me.dlgColor.ShowDialog()
Me.txtTexto.BackColor = Me.dlgColor.Color
End Sub

B. FontDialog
Este control muestra el cuadro de dilogo del sistema para la seleccin del tipo
de fuente. Entre sus propiedades podemos destacar las siguientes.
Font. Contiene un tipo de la clase Font. Una vez seleccionada una fuente por
el usuario en el cuadro de dilogo, podremos cambiar el fuente de los contro-
les del formulario.
ShowApply. Contiene un valor lgico que permite mostrar-ocultar el botn
Aplicar, que nos permitir asignar el tipo de letra sin cerrar el dilogo. Al pul-
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
59

Lecturas Glosario Bibliografa


seleccionadas
sar este botn se desencadenar el evento Apply de este control de dilogo,
en el que podremos escribir el cdigo necesario para aplicar la nueva fuente
seleccionada.
Recordatorio Anotaciones

Al seleccionar en el formulario la opcin de men Fuente, ejecutaremos el C-


digo fuente que nos permitir, utilizando el control dlgFuente, de tipo FontDia-
log, elegir un tipo de letra, y aplicarlo a la propiedad Font del control TextBox;
con la particularidad de que el cambio de letra lo haremos tanto al pulsar el
botn Aceptar, como Aplicar del cuadro de dilogo.
' al hacer clic en este men, mostramos el cuadro
' de seleccin de fuente
Private Sub mnuFuente_Click() Handles mnuFuente.Click
Me.dlgFuente.ShowApply = True
Me.dlgFuente.ShowDialog()
Me.AplicarFuente()
End Sub
' este mtodo cambia el fuente del TextBox
Private Sub AplicarFuente()
Me.txtTexto.Font = Me.dlgFuente.Font
End Sub
' al pulsar el botn Aplicar del dilogo de
' seleccin de fuente, se produce este evento
Private Sub dlgFuente_Apply(ByVal sender As Object, ByVal e As
System.EventArgs)
Handles dlgFuente.Apply
Me.AplicarFuente()
End Sub

C. SaveFileDialog
Este control muestra el cuadro de dilogo del sistema, mediante el que escribi-
mos un nombre de archivo, y elegimos un directorio, sobre el cual grabaremos
informacin.

Es importante precisar que el control no se ocupa del proceso de grabacin de


datos; su cometido es el permitirnos navegar por la estructura del sistema de
archivos del equipo, y la seleccin de un nombre para el archivo a grabar.

Entre las propiedades del control, podemos destacar las siguientes.


Title. Contiene una cadena con el ttulo que aparecer en el cuadro de dilo-
go.
InitialDirectory. Ruta inicial que mostrar el control al abrirse.
Filter. Cadena con el tipo de archivos que mostrar el cuadro de dilogo al
navegar por el sistema de archivos. El formato de esta cadena es el siguiente:
NombreArchivo (*.Extensin)|*.Extensin; pudiendo situar varios filtros se-
parados por el carcter de barra vertical ( | ).
FilterIndex. Nmero que corresponde a alguno de los tipos de archivo esta-
blecidos en la propiedad Filter.
FileName. Nombre del archivo en el que se realizar la escritura
DefaultExt. Cadena con la extensin por defecto a aplicar sobre el nombre
del archivo.
CheckFileExists. Valor lgico que nos permite comprobar si el archivo sobre
el que vamos a grabar ya existe.
ValidateNames. Valor lgico que comprobar si el nombre de archivo pro-
porcionado contiene caracteres especiales, es decir, si se trata de un nombre
vlido.

Al seleccionar en el formulario la opcin de men Grabar, ejecutaremos el C-


digo fuente, que nos permitir, utilizando el control dlgGrabar, de tipo SaveFile-
Dialog, seleccionar el nombre de un archivo, y grabar el TextBox del formulario
sobre el mismo, mediante un StreamWriter.
ollo
nidos 60
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas

Private Sub mnuGuardar_Click(ByVal sender As System.Object, ByVal


e As
System.EventArgs) Handles mnuGuardar.Click
torio Anotaciones ' configurar por cdigo el dilogo de grabacin de archivos
Me.dlgGrabar.Filter = "Documento (*.doc)|*.doc|Texto (*.txt)|*.
txt"
Me.dlgGrabar.FilterIndex = 2
Me.dlgGrabar.ValidateNames = True
Me.dlgGrabar.ShowDialog() ' abrir el cuadro de dilogo
' si todo es correcto, escribir mediante un objeto Stream
' el contenido del TextBox en el archivo indicado por
' las propiedades del cuadro de dilogo
Dim swEscritor As IO.StreamWriter
swEscritor = New IO.StreamWriter(Me.dlgGrabar.FileName)
swEscritor.Write(Me.txtTexto.Text)
swEscritor.Close()
MessageBox.Show("Texto grabado en archivo")
End Sub

D. OpenFileDialog
Este control muestra el cuadro de dilogo del sistema, mediante el que seleccio-
namos un archivo para poder abrirlo posteriormente, y realizar sobre el mismo
operaciones de lectura-escritura.

Al igual que en el control anterior, la lectura y escritura de informacin es algo


que deberemos realizar por cdigo, una vez que hayamos elegido el archivo me-
diante este cuadro de dilogo

Las propiedades de este control son prcticamente las mismas que las de SaveFi-
leDialog, con algunas excepciones como las siguientes.
Multiselect. Contiene un valor lgico, que nos permitir la seleccin de ml-
tiples archivos.
ShowReadOnly. Permite mostrar la casilla de verificacin para mostrar los
archivos de slo lectura.
ReadOnlyChecked. Permite obtener y establecer el valor para la casilla de
verificacin de slo lectura del cuadro de dilogo.

Al seleccionar en el formulario la opcin de men Abrir, ejecutaremos el Cdigo


fuente, que nos permitir, utilizando el control dlgAbrir, de tipo OpenFileDia-
log, seleccionar un archivo existente, y pasar su contenido al TextBox del formu-
lario, utilizando un StreamReader.
Private Sub mnuAbrir_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles mnuAbrir.Click
' configurar el cuadro de dilogo por cdigo
Me.dlgAbrir.Title = "Seleccionar archivo a leer"
Me.dlgAbrir.InitialDirectory = "C:\CUBO"
Me.dlgAbrir.Filter = "Cdigo fuente (*.vb)|*.vb|Texto (*.txt)|*.
txt"
' abrir el dilogo
Me.dlgAbrir.ShowDialog()
' si se han seleccionado varios archivos
' mostrar su nombre
If Me.dlgAbrir.FileNames.Length > 1 Then
Dim sArchivo As String
For Each sArchivo In Me.dlgAbrir.FileNames
MessageBox.Show("Archivo seleccionado: " & sArchivo)
Next
End If
' abrir el primer archivo con un Stream
' y volcarlo al TextBox
Dim srLector As New IO.StreamReader(Me.dlgAbrir.FileName)
Me.txtTexto.Text = srLector.ReadToEnd()
End Sub
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
61

Lecturas Glosario Bibliografa


seleccionadas
2.4. Barra de Mens
A. Controles de tipo men
El men es uno de los tipos de control ms frecuentemente utilizados en los for-
Recordatorio Anotaciones
mularios Windows. Consiste en un conjunto de opciones, a travs de las cuales,
el usuario ejecutar algunos procesos de la aplicacin. Disponemos de tres tipos
de control men: MainMenu, ContextMenu y MenuItem.

MainMenu y ContextMenu actan como contenedores de grupos de controles


MenuItem, representando este ltimo control, la opcin de men sobre la que
el usuario pulsa o hace clic.

B. Men Principal. MainMenu


Un control MainMenu, consiste en un conjunto de opciones que se sitan hori-
zontalmente debajo del ttulo del formulario. A partir de cada opcin, podemos
asociar a su vez, grupos de opciones que se mostraran verticalmente al hacer clic
en la opcin principal o situada en la barra horizontal.

Para crear un men principal, seleccionaremos del cuadro de herramientas el


control MainMenu, y tras dibujarlo en el formulario, se aadir una referencia
del control al panel de controles especiales situado bajo el diseador. La Figura
276 muestra un control de este tipo al que le hemos dado el nombre mnuPrin-
cipal.

La creacin de las diferentes opciones que compondrn el men es un proceso


que se ha mejorado y simplificado al mximo respecto a versiones anteriores de
VB. El proceso de edicin del men se realiza directamente en el formulario, en
el mismo lugar en el que el men aparecer en tiempo de ejecucin.

Al hacer clic en la primera opcin del men, podemos dar nombre y propie-
dades a esa opcin. Al mismo tiempo, de un modo muy intuitivo, veremos las
prximas opciones disponibles, tanto las desplegables a partir de dicho men,
como las de la barra principal. Slo hemos de movernos en la direccin que ne-
cesitemos y dar nombre a las opciones, y valores a sus propiedades.

Cada una de las opciones que componen el men es a su vez un control MenuI-
tem. Si durante su creacin slo proporcionamos el nombre, el IDE va asignan-
do a dicho control valores por defecto en sus propiedades.

Para modificar las propiedades de una opcin de men, slo hemos de selec-
cionarlo en la estructura de men que estamos creando en el diseador del for-
mulario, y pasar a la ventana de propiedades. Entre las propiedades disponibles
para un MenuItem, podemos destacar las siguientes.
Text. Contiene una cadena con el literal o texto descriptivo de la opcin de
men.
Enabled. Permite habilitar/deshabilitar la opcin de men. Cuando se en-
cuentra deshabilitada,
se muestra su nombre en un tono gris, indicando que no puede ser seleccio-
nada por el usuario.
DefaultItem. Permite establecer opciones por defecto. En una opcin de
men por defecto, su texto se resalta en negrita.
Checked. Marca/desmarca la opcin. Cuando una opcin est marcada,
muestra junto a su nombre un pequeo smbolo de verificacin o punteo.
RadioCheck. En el caso de que la opcin de men se encuentre marcada, si
asignamos True a esta propiedad, en lugar de mostrar el smbolo de verifica-
cin estndar, se muestra uno con forma de punto.
ShortCut. Se trata de un atajo de teclado, o combinacin de teclas que nos van
a permitir ejecutar la opcin de men sin tener que desplegarlo. Al elegir esta
propiedad, aparecer una lista con todos los atajos disponibles para asignar.
ollo
nidos 62
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
ShowShortCut. Permite mostrar u ocultar la combinacin de teclas del atajo
de teclado que tenga asignado una opcin de men.
Visible. Muestra u oculta la opcin de men.
torio Anotaciones MdiList. Esta propiedad se utiliza habitualmente en opciones situadas en la
barra de men, y permite establecer que dicha opcin al desplegarse, mues-
tre, adems de las opciones de men que le hayamos asignado, la lista de ven-
tanas secundarias MDI, en el caso de que el men principal est contenido
en un formulario de tipo MDI. Los formularios MDI sern tratados posterior-
mente.

Podemos adicionalmente, asignar una tecla de acceso rpido o hotkey a una


opcin de men, anteponiendo el carcter & a la letra que deseemos, de las que
se encuentran en la propiedad Text del control MenuItem. Al igual que sucede
con los dems tipos de controles, en el texto de la opcin de men, aparecer
subrayada la mencionada letra. De este modo, cuando despleguemos un men,
no ser necesario posicionarnos en una de ellas para ejecutarla, sino que simple-
mente pulsando la tecla rpida, se ejecutar el cdigo de dicha opcin.

Tambin podemos establecer separadores entre las opciones de men simplemen-


te creando una opcin y asignando a su propiedad Text el carcter de guin ( - ).

Para todas las opciones se ha asignado una tecla de acceso rpido, y adicional-
mente, para las opciones que se indican a continuacin, se han modificado algu-
nas propiedades por defecto.
Guardar. Deshabilitada.
Salir. Atajo de teclado en Ctrl. + S.
Copiar. Opcin por defecto.
Pegar. Marcada con smbolo normal.
Cortar. Marcada con smbolo de crculo.
Elipse. Opcin no visible.

Una vez finalizada la fase de diseo del men, debemos proceder a escribir el
cdigo para sus opciones. El evento Click es el que permite a un control Me-
nuItem ejecutar cdigo cuando la opcin de men es seleccionada. Abriendo
por tanto, el men desde el diseador del formulario, y haciendo doble clic en
la opcin correspondiente, nos situaremos en el editor de cdigo, dentro del
procedimiento manipulador del evento Click para esa opcin. El Cdigo fuente
muestra el cdigo que se ejecutar cuando seleccionemos las opciones de men
Abrir y Salir de nuestro ejemplo.
Private Sub mnuAbrir_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles mnuAbrir.Click
MessageBox.Show("Opcin Abrir del men")
End Sub
Private Sub mnuSalir_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles mnuSalir.Click
Me.Close()
End Sub

Puesto que muchas de las propiedades de un control MenuItem son manipula-


bles en tiempo de ejecucin, aadiremos al formulario varios botones, mediante
los cuales realizaremos operaciones sobre las opciones del men tales como ha-
bilitar y deshabilitar, mostrar y ocultar, cambiar el nombre, etc.

En el Cdigo fuente podemos ver los manipuladores de evento de estos botones.


Private Sub btnHabilitar_Click(ByVal sender As System.Object,
ByVal e As
System.EventArgs) Handles btnHabilitar.Click
Me.mnuGuardar.Enabled = Not Me.mnuGuardar.Enabled
End Sub
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
63

Lecturas Glosario Bibliografa


seleccionadas

Private Sub btnMarcar_Click(ByVal sender As System.Object, ByVal


e As
System.EventArgs) Handles btnMarcar.Click
Me.mnuPegar.Checked = Not Me.mnuPegar.Checked Recordatorio Anotaciones

End Sub
Private Sub btnMostrar_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles btnMostrar.Click
Me.mnuElipse.Visible = Not Me.mnuElipse.Visible
End Sub

Private Sub btnNombre_Click(ByVal sender As System.Object, ByVal


e As
System.EventArgs) Handles btnNombre.Click
If Me.mnuAbrir.Text = "A&brir" Then
Me.mnuAbrir.Text = "HO&LA"
Else
Me.mnuAbrir.Text = "A&brir"
End If
End Sub
Private Sub btnDefecto_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles btnDefecto.Click
Me.mnuCopiar.DefaultItem = Not Me.mnuCopiar.DefaultItem
End Sub

C. Men Contextual. ContextMenu


El control ContextMenu representa un men contextual o flotante. Este tipo de
men se asocia al formulario o a uno de sus controles, de modo que al hacer clic
derecho, se mostrar sobre el elemento al que se haya asociado.

El modo de aadir un control ContextMenu y sus correspondientes opciones al


formulario, es el mismo que para un MainMenu; situndose tambin una refe-
rencia del men contextual en el panel de controles especiales del diseador.
Antes de poder disear las opciones de un ContextMenu, debemos pulsar la
referencia de dicho men que existe en el panel de controles especiales, ya que
por defecto, el formulario muestra el men principal en caso de que tenga uno
definido.

Como resultado, cuando ejecutemos la aplicacin, al hacer clic derecho sobre el


TextBox, aparecer el men contextual que hemos asignado, mediante el que
cambiaremos el tipo de fuente de la caja de texto, transformaremos el texto
a maysculas y minsculas. El Cdigo fuente muestra el cdigo de los eventos
Click correspondiente a las opciones del men contextual.
Private Sub mnuFuente_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles mnuFuente.Click
Dim oFuente As New Font("Comic", 15)
Me.txtValor.Font = oFuente
End Sub

Private Sub mnuMayusculas_Click(ByVal sender As System.Object,


ByVal e As
System.EventArgs) Handles mnuMayusculas.Click
Me.txtValor.Text = Me.txtValor.Text.ToUpper()
End Sub

Private Sub mnuMinusculas_Click(ByVal sender As System.Object,


ByVal e As
System.EventArgs) Handles mnuMinusculas.Click
Me.txtValor.Text = Me.txtValor.Text.ToLower()
End Sub

3. Barra de Herramientas. ToolBar


Este control representa la barra de herramientas o botones de acceso rpido que fa-
cilitan al usuario la ejecucin de los procesos principales del programa, evitndole
la navegacin por el men del formulario.
ollo
nidos 64
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
Al ser dibujado, este control queda acoplado a la parte superior del formulario.
Despus de ponerle tbrBarra como nombre, asignaremos a su propiedad Image-
List, el control de ese mismo tipo que acabamos de crear; esto nos permitir asignar
torio Anotaciones
los grficos de la lista a los botones que vayamos creando en el ToolBar. Para esta-
blecer el tamao de los botones de la barra utilizaremos la propiedad ButtonSize
de este control.

Seguidamente haremos clic en la propiedad Buttons, que abrir una ventana con
la coleccin de botones de la barra, en la que podremos crear y configurar dichos
botones.

Cada botn en un ToolBar es un objeto de tipo ToolBarButton, del que podemos


destacar las siguientes propiedades.
Text. Cadena con el texto que muestra el botn.
ImageIndex. En el caso de asociar el ToolBar con un control ImageList, en esta
propiedad asignamos para un botn una de las imgenes del ImageList, indican-
do el nmero de orden de la imagen.
Style. Permite establecer el estilo del botn: de pulsacin; separador; o de tipo
desplegable, que abre un subconjunto de opciones.
DropDownMenu. Si asociamos el botn con una opcin de la barra de men del
formulario, y configuramos su estilo como DropDownButton, al pulsar el botn
desplegable, se mostrarn las opciones de men; el efecto ser el mismo que si
hubiramos desplegado directamente el men del formulario.

Una vez terminado el diseo del ToolBar, debemos codificar su evento ButtonClick,
que ser provocado cada vez que se pulse un botn de la barra. Dentro del procedi-
miento de este evento, comprobaremos qu botn ha sido pulsado y ejecutaremos
las acciones oportunas. El Cdigo fuente 521 muestra este evento. Tanto el botn
Abrir como la opcin de men del mismo nombre realizan la misma tarea, por lo
que llaman al mtodo AbrirArchivo( ), que es quien realmente muestra el formu-
lario necesario.
Private Sub tbrBarra_ButtonClick(ByVal sender As System.Object,
ByVal e As
System.Windows.Forms.ToolBarButtonClickEventArgs) Handles
tbrBarra.ButtonClick
' comprobar qu botn de la barra se ha pulsado
If e.Button Is Me.btnAbrir Then
' llamamos al mtodo que abre el
' formulario para abrir un archivo
Me.AbrirArchivo()
End If
If e.Button Is Me.btnSalir Then
' cerrar la aplicacin
Me.Close()
End If
End Sub
Private Sub mnuAbrir_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles mnuAbrir.Click
' al seleccionar esta opcin de men
' llamar al mtodo que abre el formulario
' que permite abrir un archivo
Me.AbrirArchivo()
End Sub

Private Sub AbrirArchivo()


Dim ofrmAbrirArchivo As New frmAbrirArchivo()
ofrmAbrirArchivo.MdiParent = Me
ofrmAbrirArchivo.Show()
End Sub

Al haber asignado al botn btnPersonal uno de los mens de la barra del formulario,
no ser necesario escribir cdigo para detectar este botn en el evento ButtonClick, ya
que se ejecutar directamente el cdigo del evento Click de las opciones de men. El
Cdigo fuente muestra el cdigo perteneciente a la opcin de men Personal + Datos.
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
65

Lecturas Glosario Bibliografa


seleccionadas

Private Sub mnuDatos_Click(ByVal sender As System.Object, ByVal


e As
System.EventArgs) Handles mnuDatos.Click
Dim ofrmPersonal As New frmDatosPersonal() Recordatorio Anotaciones

ofrmPersonal.MdiParent = Me
ofrmPersonal.Show()
End Sub

4. Barra de estado. StatusBar


Para mostrar una barra informativa de estado recurriremos a este control, que al
dibujarse queda situado en la parte inferior del formulario; como nombre le dare-
mos sbrEstado.

De forma similar al ToolBar, un control StatusBar est compuesto de una coleccin


de objetos Panel, que iremos aadiendo al control mediante la propiedad Panels, la
cual mostrar una ventana para la creacin y configuracin de tales paneles.

Entre las propiedades destacables de un objeto Panel podemos mencionar las si-
guientes.
BorderStyle. Muestra el panel con efecto resaltado, hundido o normal.
Icon. Permite asociar un icono al panel.
AutoSize. Con esta propiedad podemos conseguir que el panel se redimensione
ajustndose a su contenido o que tenga un tamao fijo.

En este ejemplo, hemos aadido dos paneles a la barra de estado del formulario. En
uno mostramos un texto fijo; mientras que en el otro, visualizamos la hora actual a
travs de un objeto Timer que ponemos en marcha en el evento Load del formula-
rio. Veamos los mtodos implicados, en el Cdigo fuente.
Private Sub frmPrincipal_Load() Handles MyBase.Load
' al cargar el formulario, creamos un temporizador
' le asociamos un manejador para su evento Tick
' y lo iniciamos
Dim oTiempo As New Timer()
oTiempo.Interval = 1000
AddHandler oTiempo.Tick, AddressOf PonerHoraActual
oTiempo.Start()
End Sub
Private Sub PonerHoraActual(ByVal sender As Object, ByVal e As
EventArgs)
' actualizamos a cada segundo la hora de un panel
' de la barra de estado
Me.sbrEstado.Panels(1).Text = DateTime.Now.ToString("HH:mm:ss")
End Sub
Diagrama Objetivos Inicio

Finalizada la creacin del StatusBar, aadiremos al proyecto un formulario con el


nombre frmDatosPersonal, en l dibujaremos un conjunto de nuevos controles que
iremos describiendo seguidamente.
Desarrollo Actividades Autoevaluacin
de contenidos

LECTURA SELECCIONADAS N 2
Lecturas Glosario Bibliografa
seleccionadas
Arquitecturas de Interfaz de usuario3
Cuando se ha terminado a disear la interfaz de usuario del sistema, la primera decisin
que hay que tomar es cmo estructurar el conjunto de la interfaz del sistema la arqui-
tectura
Recordatorio
deAnotaciones
la interfaz del sistema-. En este captulo, discutiremos diversas arquitecturas,
ms o menos estndar, que se describe en la gua de la interfaz Windows para el diseo
de software e implementadas en diferentes sistemas.

Se puede inventar una arquitectura propia de la interfaz de usuario: pero, como siem-

3 Rebecca M. Riordan. Diseo de Base de datos relacionales con Access y SQL Server. p 191-196.
ollo
nidos 66
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
pre que se eluden los estndares existentes, hay que tener una buena razn para hacer-
lo. Recurdese que la existencia, no slo con las aplicaciones, sino tambin entre ellas,
facilita la vida de los usuarios.
torio Anotaciones

Cmo dar soporte a los procesos de trabajo


El principio ms importante al decidir cmo estructurar la interfaz es que las opciones
deben basarse en los procesos de trabajo que el sistema admite, no en la estructura de
los datos. Hay que prestar atencin a lo que los usuarios estn intentando conseguir, y
la estructura del sistema debe admitir estas actividades.

Este es un error fcil de cometer: se mira el diagrama de entidad-relacin (E/R) del


sistema y se ve una entidad llamada <<Clientes>>, por lo que se crea un formulario
Clientes para crear y editar los registros de los clientes. Despus, se crea un formulario
pedidos que posee una referencia de slo lectura a la tabla Clientes. Es un esfuerzo de
hacer el sistema <<amigable al usuario>>, se permite que los usuarios escojan el nombre
del cliente en una lista y se rellena el resto de los campos basndose en la informacin
de la tabla Clientes. El formulario podra parecerse al mostrado en la figura 13-1, to-
mando de la base de datos ejemplo neptuno.

No es un mal formulario, desde el punto de vista de formularios, pero hay que pensar
en la tarea de los usuarios: ellos introducen pedidos de ventas. Abren el formulario Pe-
didos slo para mirar que un cliente todava no existe en el sistema. Por lo que tienen
que dejar el formulario, ir a algn sitio ms en el sistema e introducir un nuevo cliente
y despus. Finalmente, consiguen introducir el pedido. Si el formulario Pedidos no se
ha cerrado, probablemente necesite actualizar pulsando Shift + F9 (o algo igual de evi-
dente) para actualizar la lista Clientes. Desagradable.

Figura 13.1. Formulario Pedidos de la base de datos ejemplo Neptuno

Algunos diseadores se plantean este problema utilizando el suceso NotInList de un


cuadro combo, para permitir que los usuarios introduzcan un nombre nuevo. Cuando
se activa el suceso. Estos diseadores muestran un cuadro de mensaje preguntado si
se aade un nuevo cliente y, si el usuario confirma la adicin, se abre el formulario
clientes.

La solucin ahorra unas pocas pulsaciones de tecla, pero todava fuerza al usuario a de-
jar de hacer lo que estaba haciendo (introduciendo un pedido de ventas) y hacer algo
ms (mantener la lista de clientes). Seria mucho mejor permitir que el usuario comple-
te la tarea que tiene entre manos sin interrumpirle. Si un usuario introduce un nombre
de cliente que no esta en la lista, los campos, que de otra forma se habran rellenado, se
mantiene en blanco. (Esto es suficiente notificacin de que el cliente es nuevo, por su-
puesto: no existe una razn para sobresaltar a la gente avisndoles y mostrando cuadros
de mensaje innecesarios). Una vez que el usuario haya rellenado los campos, el sistema
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
67

Lecturas Glosario Bibliografa


seleccionadas
puede aadir tranquilamente el registro del nuevo cliente en segundo plano.

Si todos los campos del registro de cliente se pueden obtenerle formulario pedidos, est
todo hecho. Si existen campos adicionales (como pasa a menudo), habra que decidir Recordatorio Anotaciones

pedirle al usuario si desea aadir esta informacin despus de haber terminado de re-
llenar el pedido de ventas. (Pero hay que asegurarse de no preguntarle hasta que haya
terminado de rellenar el pedido: es grosero interrumpir.) La decisin debe basarse en
las circunstancias bajo las cuales se ha introducido la orden; en otras palabras, en los
procesos de trabajo.

Si el pedido lo han introducido un oficinista de ventas con la informacin del cliente


delante de l, una ves introducido el pedido es un momento excelente para capturar
la informacin, <<Debido a que es un nuevo cliente, podra introducir informacin
adicional...>>. De la misma forma, si la informacin adicional del cliente (o al menos
parte de ella) est en el formulario Pedidos que se estaba utilizando para la toma de
datos, permitirle a los usuarios que introduzcan fcilmente la informacin mientras est
delante de ellos les ahorrar tener que remover los papeles anteriores.
Arquitectura de documentos

La arquitecturas de interfaces de usuario se puede dividir en dos grupos basndose en si


la aplicacin slo muestra una nica ventana una interfaz de documento nico(SDI,
del ingles Single Document Interface) --o muestra una venta principal dentro de la cual
se puede abrir ventanas adicionales una interfaz de mltiples documentos (MDI del
ingles Mltiple Document Interface).

Interfaz de documento nico


Las SDI, como era de esperar, se presentan a los usuarios con solo una nica ventana.
sta puede mostrar cuadros de dialogo adicionales para la informacin suplementarias.
La situacin SDI est ideada para sistemas que pretenden mantener una nica entidad
lgica (que puede presentarse cualquier nmero de tablas fsicas en la base de datos).
Por ejemplo, un sistema sencillo para mantener la informacin de los empleados se
presentara mejor utilizando una SDI.

Las SDI tienen muy buenas recomendaciones, ya que una nica ventana es ms sencilla
de manipular y seguir para los usuarios. Cumple con la solucin centrada en documen-
to para el diseo de interfaz que recomienda como interfaz los asistentes de Microsoft.

Aplicaciones libro de trabajo


Una arquitectura de interfaz libro de libro de trabajo en un tipo especial de SDI. En
un libro de trabajo se muestra distintas vistas de los datos en fichas dentro de una nica
ventana, en lugar de en ventanas separadas. Microsoft Excel es un buen ejemplo de
libro de trabajo.

Esta arquitectura de interfaz tiene la ventaja de proporcionar un contexto seguro para


los usuarios, sin restringirles el acceso a un nico formulario. Sin embargo, puede ser
medianamente complicado implementarla con un tipo de respuesta aceptable. Pero los
aspectos de rendimiento se debe plantear durante la implementacin, el libro de traba-
jo es un paradigma extremadamente til para presentar distintas vistas de un objeto o
para presentar la vistas de un conjunto de objetos muy parecidos, cuando el usuario no
necesita compararlos.

Por ejemplo, se podra utilizar un libro de trabajo para mostrar un informe del resu-
men de las ventas del mes en una fecha, un grafico circular mostrando las ventas por
categora en otra ficha y un grafico de barras mostrando las ventas por ao en la tercera
ficha. Estn relacionadas por cierta informacin y es razonable esperar que los usuarios
quieran ver los informes como un grupo. Probablemente, no necesiten ver todos los
informes simultneamente, ya que los distintos informes estn relacionados, pero no
son directamente comparables.
ollo
nidos 68
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa
nadas
La Arquitectura MDI Clsica
La arquitectura clsica de una aplicacin MDI es que una ventana principal contenga
mltiples ventanas hijas del mismo o distinto tipo. Microsoft Word es un buen ejemplo
torio Anotaciones la ventana de Word puede contener mltiples documentos abiertos al mismo tiempo.
El numero de ventanas hijas esta limitado por lo que yo pienso solo a la memoria dis-
ponible.

Las aplicaciones MDI son de utilidad en muchas ocasiones en las que los usuarios ne-
cesitan comparar distintas partes de los datos o los mismos datos en distintos formatos.
Pero las aplicaciones MDI pueden asustar a los usuarios nuevos, elegir Nuevo lo que sea,
en el men Archivo no se le ocurre a todo el mundo cuando se le presenta una ventana
aparentemente vaca.

El principal problema con la Interfaz MDI es la inconsistencia en el modelo de compo-


nente. La ventana visualmente padre contiene las ventanas hijas abiertas en su interior,
pero la aplicacin que representa no necesariamente contiene los objetos representa-
dos en esas ventanas. Esto tiende a ser un problema ms agudo en aplicaciones como
Word, donde los documentos, en realidad, son objetos distintos del sistema de archivos.
Las aplicaciones de base de datos suele realizar mejor el trabajo de separar al usuario
de las complejidades del sistema de archivos. Pero incluso las aplicaciones de bases de
datos ms sencillas no son completamente efectivas para conseguirlo.

Por ejemplo, vase la Figura 13.4 Supongamos que un usuario ha cambiado hacia atrs
y hacia delante entre las ventanas y que tiene cambios no confirmados pendientes en
todas ellas.

Figura 13.4. El modelo de contenidos en aplicaciones MDI puede confundir a los usuarios

Si el usuario selecciona Guardar en el men Archivo esta funcionalidad, ya que puede


ser irritante para los usuarios a los que no les parezca apropiada. Tambin es necesario
tener cuidado, durante la implementacin, con mostrar inadvertidamente mensajes de
error al usuario, que inmediatamente cerrara la ventana o peor todava, aadir regis-
tros en blanco a la base de datos.

La Gua de la interfaz Windows para el diseo de Software especifica que se puede


aadir el elemento Guardar todos al men Archivo para guardar todos los cambios no
confirmados de todas las ventanas abiertas. Esto indudablemente, es una solucin, pero
es casi ms un compromiso. Todava requiere que el usuario entienda que existen dife-
rencias entre la aplicacin MDI y el objeto sobre el que opera.
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
69

Lecturas Glosario Bibliografa


seleccionadas
Una vez dicho todo esto no obstante, las aplicaciones MDI clsicas tiene su lugar se
mantienen como la mejor solucin disponible para la mayora de las aplicaciones que
necesitan que se abran mltiples ventanas de forma simultaneo.
Recordatorio Anotaciones

Interfaces de Centralita
Cuando se abre la aplicacin aparece una aplicacin de centralita con un formulario
central, como se muestra en la Figura 13-5 .La mayora de los botones del formulario
estn unidos a formularios o a informes.

La base de datos generados mediante el Nuevo asistente para bases de datos de Access
utiliza una estructura de Centralita y por esta razn, esta estructura se ha convertido en
algo bastante comn para las aplicaciones de base de datos desarrolladas en esos en-
tornos. Es bastante sencillo implementar el mismo comportamiento utilizando Visual
Basic.

Tengo que admitir que tengo mis prejuicios contra las centralitas. Algo relacionado con
su estilo tipo DOS y soso. Tambin me preocupa que estimulan la estructura de men
Encontrar registro /Editar registro/ Imprimir registro, que resulta increblemente te-
dioso para los usuarios.

Sin embargo, las aplicaciones de centralita pueden ser muy tiles, si se poseen distintos
procesos de trabajo a los que se esta dando soporte dentro de la misma aplicacin no
se desea incorporar la complejidad de implementacin de las interfaces estilo Outlook
o si la aplicacin necesita que estn abiertas mltiples ventanas de forma simultanea.
Una centralita de alto nivel que contiene un botn para cada proceso de trabajo es un
mecanismo elegante para guiar al usuario por la aplicacin.

Lo importante a recordar en el disco de aplicaciones de centralita, al igual que en cual-


quier otra arquitectura de interfaz es estructurar las opciones de la centralita en torno
a los procesos de trabajo, no en torno a los datos. Debera existir un botn para cada
actividad que los usuarios van a desear realizar, no para cada formulario e informe del
sistema.

Figura 13.5. Cuando se inicia la aplicacin, se muestra una centralita


Diagrama Objetivos Inicio

ACTIVIDAD N 2:
Desarrollo Actividades Autoevaluacin
de contenidos
Esta actividad puede consultarla en su aula virtual.
Diagrama Objetivos Inicio

Lecturas Glosario Bibliografa


seleccionadas
Tarea Acadmica No 1
Desarrollo Actividades Autoevaluacin
de contenidos Esta actividad puede consultarla en su aula virtual.

Recordatorio Anotaciones

Lecturas Glosario Bibliografa


seleccionadas
ollo
nidos 70
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

as Glosario Bibliografa Diagrama Objetivos Inicio


nadas

AUTOEVALUACIN N II
Desarrollo Actividades Autoevaluacin
de contenidos
torio Anotaciones A continuacin se presentan algunas preguntas con varias alternativas, slo una es la
respuesta, marque la que considere correcta.
1. Dnde se colocan los controles?
Lecturas
seleccionadas
Glosario
a) En la ventana del proyecto.
Bibliografa

b) En el formulario.
c) En el panel de Soluciones
Recordatorio Anotaciones
d) En la caja de herramientas.

2. Cmo se colocan los controles?


a) Arrastrando de la caja de herramientas.
b) Arrastrando de la barra de herramientas.
c) Mediante el men Edicin.
d) Mediante el men Insertar.

3. Cmo se modifica el texto del ttulo del formulario?


a) Mediante la ventana Propiedades.
b) Mediante la propiedad Caption.
c) Mediante la propiedad Text.
d) Con un doble click sobre el formulario.

4. Cmo se modifica la propiedad de un control en tiempo de ejecucin?


a) Mediante la ventana Propiedades.
b) Mediante el men Edicin.
c) Mediante NombreControl.Propiedad.
d) Haciendo doble click sobre el control.

5. Qu propiedad determina el texto que debe mostrarse en una etiqueta en Micro-


soft Visual Basic 2012?
a) Text
b) Caption
c) Name
d) Font

6. Qu propiedad se utiliza para centrar un texto?


a) BorderStyle
b) Alignment
c) Appearance
d) Background

7. Para qu se usa la propiedad AutoSize?


a) Determina automticamente el tamao del formulario.
b) Guarda automticamente el proyecto.
c) Ajusta el tamao de un control pictureBox al tamao de la imagen que despliega.
d) Define el tamao mximo del formulario.

8. Cmo se insertan elementos en un control ListBox en tiempo de diseo durante la


fase de desarrollo del programa con Microsoft Visual Basic 2012?
a) Introduciendo los elementos en el archivo de proyecto.
b) A travs del men Edicin.
c) Con la propiedad Items.
d) Haciendo doble click en el control.
LABORATORIO DE PROGRAMACIN
UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
71

Lecturas Glosario Bibliografa


seleccionadas

9. En qu orden se crea un grupo de controles usando el control Contenedor Group-


Box con Microsoft Visual Basic 2012?
a) Primero cada uno de los controles y a continuacin el control GroupBox. Recordatorio Anotaciones

b) Primero el control GroupBox y a continuacin cada uno de los controles, colo-


cndolos fuera del marco.
c) Primero el control GroupBox y a continuacin cada uno de los controles, colo-
cndolos dentro del marco.
d) No es importante el orden.

10. Qu instrucciones definen variables que pueden contener tambin decimales?


a) Dim nmero As Integer.
b) Dim TiempodeServicio As Long.
c) Dim A as Double.
d) Todas las anteriores.

11. Qu instruccin define una constante?


a) Dim A As Constante.
b) Const nmero As Long.
c) Constante TiempodeServicio As Long.
d) Todas las anteriores

12. Cul es la primera lnea del procedimiento Click de un Botn cuyo nombre es
Aceptar?
a) Private Sub Aceptar_Click(sender As Object, e As EventArgs) Handles Aceptar.
Click.
b) Private Sub Button_Aceptar_Click(sender As Object, e As EventArgs) Handles
Aceptar.Click.
c) Private Sub Button Aceptar_Click(sender As Object, e As EventArgs) Handles
Aceptar.Click.
d) Private Sub AceptarClick(sender As Object, e As EventArgs) Handles Aceptar.
Click.

13. Cundo se activa el evento KeyPress?


a) Cuando se activa la tecla Enter.
b) Al hacer doble click con el ratn.
c) Al pulsar cualquier tecla.
d) En cualquier momento.

14. Qu palabra debe anteponerse a una declaracin de variable para que pueda ser
reconocida en todo el proyecto?
a) Dim
b) Private
c) Public
d) Module
15. Dnde se encuentra el origen de un sistema de coordenadas?
a) Abajo a la izquierda.
b) Arriba a la derecha.
c) Arriba a la izquierda.
d) Abajo a la derecha.

16. Cul de estas lneas contiene un comentario?


a) Circunf= 2* PI* R 'PI est definido en la seccin declaraciones.
b) Comentario="Esto es un comentario"
ollo
nidos 72
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN CON VISUAL BASIC 2012

Diagrama Objetivos Inicio


as Glosario Bibliografa
nadas
c) MostrarNombre.Text= Comentario
d) Circunf= 2* PI* R --PI est definido en la seccin declaraciones.
Desarrollo Actividades Autoevaluacin
de contenidos

torio Anotaciones

BIBLIOGRAFIA II:
Lecturas Glosario Bibliografa
seleccionadas
OBrien, James A. Sistemas de Informacin Gerencial. Colombia: McGRAW-HILL IN-
TERAMERICANA S.A.; 2005.
Riordan, Rebecca M. Diseo de Bases de datos relacionales con Access y SQL Server.
Recordatorio Anotaciones
Espaa: McGRAW-HILL INTERAMERICANA S.A.; 2004.
Delgado, Albert. Microsoft SQL Server 2012. Madrid: Pearson Education S.A.; 2011.
Ocharte Ojeda, Francisco. Programacin con Visual Basic 2012. Madrid: Anaya Multi-
media; 2011.
LABORATORIO DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
73

Diagrama Objetivos Inicio Lecturas Glosario Bibliografa


seleccionadas

UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS


AVANZADOS
Desarrollo Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

DIAGRAMA DE PRESENTACIN DE LA UNIDAD


Diagrama
Lecturas Objetivos
Glosario Inicio
Bibliografa
seleccionadas

CONTENIDO EJEMPLOS ACTIVIDADES


Desarrollo Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

BIBLIOGRAFA AUTOEVALUACIN
Lecturas Glosario Bibliografa
seleccionadas

CONOCIMIENTOS PROCEDIMIENTOS ACTITUDES


Recordatorio Anotaciones

TEMA 1: Programacin 1. Aplica la POO en la cons- Valora el desarrollo tecnol-


Orientada a Objetos truccin de aplicaciones. gico, informtico y el uso de
1. Introduccin a la POO 2. Aplica las caractersticas la computadora como herra-
2. Creacin de objetos. de la POO en la construc- mienta primordial, as como el
cin de aplicaciones. software de oficina dentro del
3. Variables e Instancias desarrollo de su carrera.

TEMA 2: Herencia, polimor- Actividad N 1


fismo y encapsulamiento. Programa clases y compo-
1. Implementacin de la nentes para reutilizarlas en
Herencia.
la creacin un proyecto de
clculo.
2. Estructuras polimrficas
3. Espacios de nombres. 3. Crea procedimientos,
funciones y eventos en la
Lectura Seleccionada N 1 construccin de proyec-
Por qu orientado a objetos?. tos.
James Martin y James J, Odell. 4. Utiliza controles avanza-
Anlisis y diseo orientado a dos en la creacin de pro-
objetos. p 33-36 yectos

TEMA 3: Procedimientos Actividad N 2


1. Procedimientos SUB Crea controles programan-
2. Procedimientos Function do sus eventos en tiempo
de ejecucin.
TEMA 4: Formularios depen-
dientes y controles avanzados. Control de Lectura N2
1. Formularios dependientes Desarrollo de ejercicios de
y fijos POO.
2. Validacin de
controles
3. Utilizacin de controles
avanzados
4. Creacin de controladores
de eventos

Lectura Seleccionada N 2
Desarrollo de componentes.
Francisco Charte Ojeda. Pro-
gramacin con Visual Basic
2012. p 551-555.
A) Desarrollo de Autoeva-
luacin Nro 3
ollo
nidos 74
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

as Glosario Bibliografa
nadas
TEMA 1: Programacin Orientada a Objetos
Los objetos son los elementos fundamentales para la programacin, en Microsoft
Visual Basic 2012 todo es un objeto, los formularios, controles y bases de datos.
torio Anotaciones
En esta unidad, aprenderemos cmo crear nuestros propios objetos desde clases
definidas por nosotros y cmo podemos utilizar objetos para simplificar la progra-
macin e incrementar la reutilizacin de cdigo.

1 INTRODUCCIN A LA POO
1.1. Clases
Las clases son objetos generalizados o clasificados, tambin podemos decir que una
clase es una plantilla o una estructura preliminar de un objeto. Esta estructura pre-
liminar define atributos para almacenar datos y define operaciones para manipular
esos datos. Una clase tambin define un conjunto de restricciones para permitir o
denegar el acceso a sus atributos y operaciones.

1.2. Objetos
James Martin, define a los objetos como: Un objeto es cualquier cosa real o abstrac-
ta, acerca de la cual almacenamos datos y los mtodos que controlan dichos datos.

En la programacin, Un objeto es una unidad de software que contiene una colec-


cin de mtodos y datos relacionados. Un objeto es una instancia especfica de una
clase, e incluye las caractersticas de esa clase.

Los objetos tienen identidad. La identidad es la caracterstica que distingue un


objeto del resto.

1.3. Mtodos
Los mtodos son los comportamientos de los objetos. El comportamiento es la
caracterstica que hace tiles los objetos. Por ejemplo, la mayor parte del tiempo
podemos ignorar el funcionamiento interno de un coche y pensar en su compor-
tamiento. Los coches son tiles porque podemos conducirlos. El funcionamiento
interno existe, pero normalmente es inaccesible. Lo que es accesible es el compor-
tamiento de un objeto. Los objetos de la misma clase comparten el mismo compor-
tamiento. Un coche es un coche porque podemos conducirlo.

2 CREACIN DE OBJETOS
La plataforma Microsoft .NET proporciona la biblioteca de clases del .NET Fra-
mework, pero tambin nosotros podemos crear nuestras propias clases. A continua-
cin vamos a ver cmo crear una nueva clase, agregar miembros de datos, mtodos
y propiedades a la clase, y establecer modificadores de acceso pblicos y privados.

2.1. Crear clases


Una vez finalizado el proceso de anlisis para determinar las entidades relevantes
de un problema de negocio determinado, estaremos preparados para crear clases
que reflejen las entidades.

Una clase tiene la siguiente estructura:


Public Class ClassName
End Class

2.2. Miembros datos


Luego de agregar una nueva clase a nuestro proyecto, podemos agregar miembros
de datos a la clase. Un miembro de datos especfico para una instancia de la clase
se denomina miembro de datos de una instancia. Cuando agregamos miembros de
datos de una instancia a una clase, especificamos el nivel de acceso estableciendo
los modificadores de acceso.
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
75

Lecturas Glosario Bibliografa


seleccionadas

Los miembros de datos de una instancia incluyen variables y constantes miembro.


Las variables miembro tambin se denominan campos.
Recordatorio Anotaciones

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


denominado balance (saldo):
Private balance As Double

Podemos controlar la accesibilidad de las entidades dentro de esta clase: algunas


estarn accesibles nicamente desde dentro y otras desde dentro y desde fuera.
Los miembros de la entidad accesibles nicamente desde dentro son privados. Los
miembros de la entidad accesibles tanto desde dentro como desde fuera son pbli-
cos. Por ejemplo, necesitaramos hacer que el miembro de datos de la instancia ba-
lance (saldo) fuera privado para que el saldo de la cuenta slo pudiera modificarse
desde dentro de la clase CuentaBancaria.

Tambin podemos utilizar la palabra clave Protected para limitar la accesibilidad a


clases que hereden de esta clase.

2.3. Agregar mtodos


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

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


Public Sub Deposit(ByVal amount As Double)
Balance +=amount
End Sub

2.4. Agregar propiedades


Podemos agregar propiedades a una nueva clase en nuestro proyecto. Podemos
asignar la propiedad, y podemos recuperar el valor de la propiedad desde la clase.
Para agregar miembros de propiedades a una clase, normalmente definimos un
miembro de datos privado y procedimientos de propiedades pblicos. Podemos
realizar dos tipos de procedimientos en propiedades en Visual Basic .NET: Get y
Set.
El procedimiento Get recupera el valor de la propiedad desde la clase. No debe-
ra modificar el valor.
El procedimiento Set asigna la propiedad.

En el siguiente ejemplo, se agrega a la clase CuentaBancaria una propiedad deno-


minada Name:
Public Class CuentaBancaria
Private customerName As String

Public Property Name( ) As String


Get
Return customerName
End Get
Set(ByVal Value As String)
customerName = Value
End Set
End Property

End Class

3 CONCEPTOS GENERALES
Para ejecutar los mtodos y utilizar las propiedades de una clase, debemos crear
una instancia de la clase. La instancia de una clase se denomina objeto.
Para crear una instancia de una clase, declaramos una variable del tipo de la clase
ollo
nidos 76
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

as Glosario Bibliografa
nadas
y utilizamos la palabra clave New, como se muestra en la siguiente lnea de cdigo:
Dim nombre_objeto As New tipo_objeto( )
El siguiente ejemplo muestra cmo crear una instancia de la clase
torio Anotaciones CuentaBancaria utilizando la palabra clave New:
Sub Main
Dim account As New CuentaBancaria( )
account.Deposit(500.00)
End Sub

A continuacin, vamos a crear una clase llamada CuentaBancaria e incluiremos


mtodos y propiedades:

A. Agregar una nueva clase a un proyecto


1. Abrir una nueva aplicacin Windows en Visual Basic .NET. Establecer
SimpleClass como nombre del proyecto y ubicarlo en una carpeta llama-
da CreatingClass.
2. En el men Proyecto, hacer clic en Agregar clase.
3. En el cuadro de dilogo Agregar nuevo elemento, cambiar el nombre de
clase por CuentaBancaria.vb, y hacer clic en Abrir.

B. Agregar miembros de datos, mtodos y propiedades a la clase


1. Agregar un miembro de datos privado denominado customerBalance de
tipo Double, como se muestra en la siguiente lnea de cdigo:
Private customerBalance As Double

2. Agregar otro miembro de datos privado denominado customerName de tipo


String, como se muestra en la siguiente lnea de cdigo:
Private customerName As String

3. Crear un mtodo pblico denominado Deposit que toma un parmetro


amount de tipo Double por valor, como sigue:
Public Sub Deposit(ByVal amount As Double)
End Sub

4. En el mtodo, incrementar el valor del saldo (balance) aadindole amount,


como sigue:
customerBalance += amount

5. Crear una propiedad pblica denominada Name, como sigue:


Public Property Name( ) As String
End Property

6. En el bloque Get de la propiedad, devolver customerName, como sigue:


Get
Return customerName
End Get

7. En el bloque Set de la propiedad, asignar Value a customerName, como sigue:


Set(ByVal Value As String)
customerName = Value
End Set

8. Crear una propiedad de slo lectura denominada Balance que devuelva el


saldo actual, como sigue:
Public ReadOnly Property Balance( ) As Double
Get
Return customerBalance
End Get
End Property
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
77

Lecturas Glosario Bibliografa


seleccionadas
El cdigo complete de la clase CuentaBancaria debera ser como el siguiente:
Public Class CuentaBancaria
Private customerBalance As Double
Private customerName As String Recordatorio Anotaciones

Public Sub Deposit(ByVal amount As Double)


customerBalance += amount
End Sub

Public ReadOnly Property Balance( ) As Double


Get
Return customerBalance
End Get
End Property

Public Property Name( ) As String


Get
Return customerName
End Get
Set(ByVal Value As String)
customerName = Value
End Set
End Property
End Class

C. Crear un una utilidad de prueba para la clase CuentaBancaria


1. Agregar al proyecto un modulo denominado PruebaUso.vb.
2. Crear un procedimiento Sub pblico denominado Main, como sigue:
Public Sub Main( )
End Sub

3. Dentro del Sub Main, crear una instancia de la clase CuentaBancaria,


como sigue:
Dim account As New CuentaBancaria( )

4. Utilizar la propiedad Name para asignar el nombre a la cuenta, como


sigue:
account.Name = "Joe"

5. Utilizar el mtodo Deposit para depositar dinero en la cuenta, como si-


gue:
account.Deposit(500)

6. Utilizar un cuadro de mensaje para mostrar el nombre de la cuenta y su


saldo, como sigue:
MessageBox.Show ("Name: " & account.Name & _
". Balance: $" & account.Balance( ))

7. Cambiar el objeto de inicio del proyecto para utilizar Sub Main.


8. Generar y ejecutar el programa.
El cdigo complete del mdulo PruebaUso debera ser como el siguiente:
Module PruebaUso
Public Sub Main( )
Dim account As New CuentaBancaria( )
account.Name = "Joe"
account.Deposit(500)
MessageBox.Show("Name: " & account.Name & _
". Balance: $" & account.Balance( ))
ollo
nidos 78
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

as Glosario Bibliografa
nadas
TEMA 2: Herencia, polimorfismo y espacios de nombres
Podemos agregar funcionalidades a las clases en el.NET Framework o a nuestras propias
clases utilizando herencia y polimorfismo. A continuacin se describe la herencia y el
torio Anotaciones
polimorfismo. Tambin se compara clases y estructuras.

1 IMPLEMENTACIN DE LA HERENCIA
En la programacin orientada a objetos, podemos compartir las caractersticas de
una clase base en otras clases derivadas de la clase base. Esto se denomina herencia.
Herencia es el concepto de reutilizar atributos y operaciones comunes de una clase
base en una clase derivada.

Imaginemos tres clases: Cliente, Empleado y Persona. Los atributos y operaciones


de la clase base Persona tambin pueden aplicarse a Cliente o Empleado. La reuti-
lizacin de estos atributos y operaciones es una tcnica eficaz.

Figura N 25: Representacin de la herencia simple

Visual Basic 2012 soporta herencia simple a nivel de clase. Es decir, una clase ni-
camente puede heredar de una sola clase base. Esto se muestra en el ejemplo de la
ilustracin anterior.

La palabra clave Inherits se utiliza para definir una clase derivada que heredar de
una clase base existente.

El siguiente ejemplo muestra cmo utilizar la palabra clave Inherits:


Public Class CheckingAccount
Inherits CuentaBancaria
Private Sub ProcessCheck( )
' Add code to process a check drawn on this account
End Sub
End Class

2 ESTRUCTURAS POLIMRFICAS
El polimorfismo determina que el mismo nombre de mtodo, realizar diferentes
acciones segn el objeto sobre el que sea aplicado. Al igual que suceda en la encap-
sulacin, el programador que haga uso del objeto, no necesita conocer los detalles
de implementacin de los mtodos, se limita a utilizarlos.

Pasando a un ejemplo real, tomamos dos objetos: Pelota y VasoCristal; si ejecutamos


sobre ambos el mtodo Tirar, el resultado en ambos casos ser muy diferente; mien-
tras que el objeto Pelota rebotar al llegar al suelo, el objeto VasoCristal se romper.

En un ejemplo aplicado a la programacin, supongamos que disponemos de los


objetos Ventana y Fichero; si ejecutamos sobre ambos el mtodo Abrir, el resultado
en Ventana ser la visualizacin de una ventana en el monitor del usuario; mientras
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
79

Lecturas Glosario Bibliografa


seleccionadas
que en el objeto Fichero, se tomar un fichero en el equipo del usuario y se dejar
listo para realizar sobre l operaciones de lectura o escritura.

Recordatorio Anotaciones

Figura N 26: Estructura polimrfica

Veamos otro ejemplo: Supongamos que definimos una clase denominada BaseTax
que proporciona funcionalidad bsica para calcular el impuesto sobre las ventas de
un estado. Las clases derivadas de BaseTax, como CountyTax o CityTax, podran
implementar mtodos como CalculateTax.

Polimorfismo hace referencia al hecho de que la implementacin del mtodo Cal-


culateTax podra ser distinta en cada una de las clases derivadas. Por ejemplo, el
tipo impositivo de un condado (county tax rate) podra ser distinto del tipo impo-
sitivo de una ciudad (city tax rate). Las clases que hereden de BaseTax tendrn un
mtodo CalculateTax, pero el modo como se calcule realmente el impuesto podra
variar en cada una de las clases derivadas.

1 ESPACIOS DE NOMBRES
Los espacios de nombres se utilizan como sistemas organizativos (una forma de
presentar componentes del programa relacionados lgicamente que estn disponi-
bles para otros programas y aplicaciones). Un espacio de nombres puede contener
otros espacios de nombres y tipos.

System.Windows.Forms es un ejemplo de espacio de nombres. Este espacio de


nombres proporciona las clases relevantes para crear formularios. El espacio de
nombres Forms est contenido en el espacio de nombres Windows, el cual est
contenido en el espacio de nombres System.

Para hacer referencia a una clase utilizando su nombre cualificado, prefijamos el


nombre de la clase con el espacio de nombres que contiene la clase. Por ejemplo,
el nombre cualificado de la clase Button es System.Windows.Forms.Button. Con el
uso de nombres cualificados, podemos declarar dos clases con el mismo nombre en
distintos espacios de nombres sin conflicto. De forma predeterminada, cada archi-
vos ejecutable que creemos con Visual Basic .NET contiene un espacio de nombres
con el mismo nombre que el proyecto.

Los espacios de nombres son siempre Public, por tanto, no podemos declarar un
espacio de nombres con un modificador de acceso. Sin embargo, los componentes
en el espacio de nombres pueden tener acceso Public o Friend. Si el modificador de
acceso no se ha declarado, el tipo de acceso predeterminado es Friend.

En Visual Basic .NET, utilizamos la instruccin Namespace para definir un nuevo


espacio de nombres, el cual encapsula las clases que creamos, como muestra el
siguiente ejemplo:
Namespace CompVB
Public Class StringComponent
...
End Class
End Namespace
ollo
nidos 80
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

as Glosario Bibliografa
nadas
A nivel de proyecto, debemos incluir una referencia a la librera de enlace dinmi-
co (DLL) que contiene el espacio de nombres. En Visual Basic 2012, utilizamos la
instruccin Imports para importar los tipos contenidos en el espacio de nombres
para que puedan se referenciados directamente. El siguiente cdigo muestra el uso
torio Anotaciones
de la instruccin Imports:
Imports System.Windows.Forms

Public Class Form1


Inherits Form

Si omitimos la instruccin Imports, deberemos utilizar el nombre cualificado del


espacio de nombres, como muestra el siguiente ejemplo:
Public Class Form1
Inherits System.Windows.Forms.Form
Diagrama Objetivos Inicio

A continuacin lo invitamos a disfrutar de la lectura Por qu orientado a objetos?,


el cual nos ayudar a comprender el por qu de este nuevo paradigma en la pro-
gramacin.
Desarrollo Actividades Autoevaluacin
de contenidos

LECTURA SELECCIONADAS N 1
Lecturas Glosario Bibliografa
seleccionadas
POR QUE ORIENTADO A OBJETOS? 4
Las tcnicas orientadas a objetos mejoran la capacidad del profesional de la com-puta-
cin en diversos y sorprendentes modos.
Recordatorio Anotaciones

Hace poco. James Martin grab las entrevistas que tuvo con analistas y tcnicos cuya
eficiencia ha mejorado con las herramientas y las tcnicas 00 [1]. A todos les pregunt
"Por qu orientado a objetos?, Por qu no piensan en regresar a las tcnicas con-
vencionales? Por qu debera una empresa sufrir las dificultades del paso al anlisis
y diseo orientado a objetos?" Los profesionales sealaron muy diversas razones por
las que las tcnicas 00 han mejorado su desempeo. Por otro lado, ninguno de estos
profesionales haba logrado todos los beneficios principales. Lo que animaba a Miguel
a utilizar la orientacin a objetos no haba sido tomado en cuenta por Mara. Lo que
Juan afirmaba como ms satisfactorio no estaba en la lista de deseos de Carmen.

Es recomendable comprender todos los beneficios potenciales de las tcnicas OO e


intentar conseguirlos todos, en vez de slo un subconjunto de ellos. El camino hacia
la familia completa de beneficios que mostramos en este captulo podra modificar la
forma de administrar los equipos y organizaciones de los sistemas de informacin.

LA VERDADERA INGENIERA DEL SOFTWARE


El estado actual de la mayor parte de la ingeniera de software est algo atrasado con
respecto a las dems reas de la ingeniera. Cuando la mayora de los ingenieros
completan su trabajo y ste se vende, esperamos que funcione de manera correcta. No
esperamos que los motores de los aviones exploten o que los edificios se derrumben,
pero no nos sorprende que cierto software se compone de manera extraa. La mayora
de los productos de hardware tienen garanta, pero la mayora de los productos de
software llevan una renuncia a la garanta.

El software se vende no cuando est libre de errores, sino cuando stos aparecen con
una frecuencia bastante baja. Cuando mi programa para hojas de clculo se sale de
control, me fijo en que slo tiene un cdigo de 400.000 lneas. Muy pronto utilizare-
mos software con 50 millones de lneas de cdigo. Adems, mi programa se ejecuta en
una PC: en la actualidad estamos construyendo el software que se podr ejecutar en
procesadores paralelo? y redes con muchas computadoras de ejecucin simultnea.
Mi hoja de clculo tiene millones de usuarios y ha sido probada una infinidad de veces.
Podemos compararla con la siguiente generacin del software para control areo que

4 James Martin y James J, Odell. Anlisis y diseo orientado a objetos. Londres: Prentice-Hall Hispanoameri-
cana, S.A.; 2000. p 33-36
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
81

Lecturas Glosario Bibliografa


seleccionadas
se utilizar para los espacios areos. (Por favor, no piense en ello cuando vuele.

Cuando las personas empiezan a programar, en general sus maestros les dicen que
piensen como una computadora. Esta tcnica pareca servir cuando aprendamos a pro- Recordatorio Anotaciones

gramar, puesto que escribamos programas muy sencillos. Sin embargo, los ciclos y las
ramificaciones nos proveen de una gran cantidad de combinaciones de caminos, de
modo que no podemos pensar en todos ellos como una computadora. La operacin de
la mayora del software real depende de condiciones que no se conocern hasta ejecu-
tar el software. En el caso de la multiprogramacin, el equipo hace varias cosas a la vez,
por lo que es imposible pensar como una computadora.

Para ayudarnos a lidiar con la complejidad, se comenz a utilizar la programacin


estructurada. Redujo el espagueti en el cdigo, pero la programacin segua basndose
en una secuencia esperada de instrucciones de ejecucin. El esfuerzo por disear y
depurar programas, pensando en el orden que la computadora sigue para hacer las
cosas desemboc en un software que nadie entenda del todo. El hecho de pensar como
una computadora est ms all de nuestra capacidad mental.

El mundo de las tcnicas orientadas a objetos, con herramientas CASE basadas en


depsitos, es muy diferente. El diseador piensa en trminos de objetos y su compor-
tamiento, y se genera el cdigo. Las herramientas CASE y el generador de cdigos no
deben tener errores, de modo que no hemos eliminado la programacin manual. Sin
embargo, la mayora de los sistemas se pueden construir sin tener que pensar en ciclos,
ramificaciones y estructuras para el control del programa. El constructor del sistema
aprende otro tipo de forma de pensar. Los eventos producen cambios en el estado de
los objetos (como analizaremos ms adelante). La mayora de estos cambios de estado
requiere pequeas panes de cdigo, por lo que la codificacin est menos propensa
a los errores. Se construyen tipos de objetos a partir de tipos de objetos ms sencillos.
Una vez que los tipos de objetos funcionan bien, el diseador los considera como cajas
negras, de modo que nadie pueda ver su interior. (Al igual que usted nunca ve el inte-
rior de su videocasetera). La ingeniera del software adquiere as ms caractersticas de
la ingeniera del hardware.

Chmiopher Hoare, catedrtico de computacin en la Universidad de OxFord, comenta


acerca del diseo estructural tradicional:
El intento de construir una disciplina de ingeniera de software sobre bases tan imper-
fectas como stas est condenado al fracaso: como si se quisiera basar la ingeniera qu-
mica en la teora del flogisto, o la astronoma en la hiptesis de la Tierra plana.

En la programacin convencional, los datos asumen cualquier estructura y los procesos


hacen de los datos todo lo que el programador desee. En el mundo orientado a objetos,
las estructuras de datos se relacionan con los objetos y slo pueden ser utilizadas me-
diante los mtodos diseados para ese tipo de objeto.

Dan Ingalls de Smalltalk, famoso por ser el causante de la "violacin de procesos me-
diante su descomposicin en bits y la devastacin de las estructuras de datos", describe
elocuentemente la orientacin por medio de los procesos. Para l, la orientacin a ob-
jetos proporciona una solucin que conduce a "un universo de objetos bien educados
que se piden, de manera corts, concederse mutuamente sus deseos".

El contraste entre la orientacin por medio de procesos y la orientacin a objetos se


puede resumir de la manera siguiente. El procesamiento convencional de los datos se
centra en los tipos de objetos cuya estructura de datos slo pueda controlarse mediante
los mtodos de la clase del objeto. Ocurren eventos que modifican el estado de un
objeto. Por lo general, la propia programacin de cada cambio de estado es sencilla,
por lo que dividimos la programacin en partes relativamente sencillas. De hecho,
cada objeto lleva a cabo una funcin especfica e independiente de los dems objetos.
Responde a mensajes, sin saber la razn del envo de stos ni las consecuencias de su ac-
cin. Puesto que los objetos actan en forma individual, cada clase se puede modificar,
en gran medida, de manera independiente a las dems ciases. Esto facilita la prueba
y modificacin de las clases. El mantenimiento de los sistemas orientados a objetos es
mucho ms sencillo que el mantenimiento de los sistemas convencionales.
ollo
nidos 82
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

as Glosario Bibliografa
nadas
El mundo orientado a objetos tiene una mayor disciplina que el de las tcnicas de
estructura convencional. Esto nos lleva a un mundo de clases reutilizables, donde la ma-
yor parte del proceso de construccin de software consistir en el ensamblaje de clases
ya existentes y probadas.
torio Anotaciones

Las tcnicas 00 ligadas a las herramientas del CASE con un generador de cdigos y un
depsito (tambin orientado a objetos) constituyen el mejor camino conocido para
construir una verdadera ingeniera de software.

CARACTERSTICAS DE LAS TCNICAS 00


El anlisis y diseo orientado a objetos tiene algunas caractersticas importantes:
1. Cambian nuestra forma de pensar sobre los sistemas. Para la mayora de las per-
sonas, la forma de pensar OO es ms natural que las tcnicas del anlisis y diseo
estructurado. Despus de todo, el mundo est formado por objetos. Comenzamos
a aprender sobre ellos en la infancia (al agitar una sonaja, sta produce ruido) y
descubrimos que tienen determinados tipos de comportamiento. Si se piensa un
poco, esto tiene sentido. Desde una etapa muy temprana categorizamos los objetos y
descubrimos su comportamiento. Los usuarios finales y las personas de las empresas
piensan de manera natural en trminos de objetos, eventos y mecanismos de activa-
cin (triggers). Podemos crear diagramas OO que les parezcan familiares, mientras
tengan dificultades con los diagramas de relacin entre entes, tablas de estructura
y diagramas de flujo de datos.
2. Los sistemas suelen construirse a partir de objetos ya existentes. Esto lleva a un alto
grado de reutilizacin, a un ahorro de dinero, un menor tiempo de desarrollo y una
mayor confiabilidad del sistema.
3. La complejidad de los objetos que podemos utilizar sigue en aumento, puesto que
nuevos objetos se construyen a partir de otros. Estos a su vez estn constituidos por
otros objetos, etctera.
4. El depsito CASE debe contener una creciente biblioteca de tipos de objetos, al-
gunos comprados y otros construidos en casa. Es muy probable que estos tipos de
objetos sean ms poderosos conforme crezca su complejidad. La mayora de este
tipo de objetos sern diseados de forma que se adapten a las necesidades de los
diferentes sistemas.
5. La creacin de sistemas con un funcionamiento correcto es ms fcil con las tcnicas
OO. Esto se debe, en parte, a que las clases OO estn diseadas para reutilizarse; y
en parte, a que las clases estn auto contenidas y divididas en mtodos. Cada mtodo
se puede construir, depurar y modificar con relativa facilidad.
6. Las tcnicas OO se ajustan de manera natural a la tecnologa CASE. Existen ciertas he-
rramientas elegantes y poderosas para la implantacin OO. Muchas otras herramientas
CASE necesitan ciertas mejoras para controlar el anlisis y diseo orientado a objetos.
Diagrama Objetivos Inicio

ACTIVIDAD N 1:
Desarrollo Actividades Autoevaluacin
de contenidos

Esta actividad puede consultarla en su aula virtual.

Lecturas
seleccionadas
TEMA 3: Procedimientos
Glosario Bibliografa

Todo el cdigo ejecutable de una aplicacin se ubica en rutinas de cdigo o procedi-


mientos. Un procedimiento es un elemento del lenguaje compuesto por un conjunto
de lneas de cdigo, a las que se denomina cuerpo del procedimiento. Su comienzo
Recordatorio yAnotaciones
fin lo establecemos mediante ciertas palabras reservadas del lenguaje, asocindole
un identificador, que nos servir para reconocerlo entre el resto de procedimientos
creados en el programa. Podemos enviarle tambin informacin adicional en forma de
parmetros, con lo que el resultado de la ejecucin de un procedimiento variar segn
los valores que pasemos en cada llamada.

En VB.NET disponemos de los siguientes tipos de procedimientos:


Sub. Procedimiento que realiza un conjunto de operaciones pero no devuelve valor
al punto de llamada. A lo largo del texto tambin nos referiremos a las rutinas de
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
83

Lecturas Glosario Bibliografa


seleccionadas
tipo Sub con el nombre genrico de procedimiento.
Function. Procedimiento que realiza un conjunto de operaciones, y devuelve
un valor denominado valor de retorno al punto de cdigo que realiz la llamada.
A lo largo del texto tambin nos referiremos a las rutinas de tipo Function conRecordatorio
el Anotaciones

nombre genrico de funcin.


Property. Procedimiento que se utiliza para labores de acceso y asignacin de valo-
res a las propiedades de un objeto. Sern tratados con ms profundidad en el tema
dedicado a la programacin orientada a objetos.

1 PROCEDIMIENTOS SUB
Un procedimiento Sub es una serie de instrucciones de Visual Basic delimitadas por
las instrucciones Sub y End Sub. Los procedimientos Sub realizan acciones pero no
devuelven un valor al procedimiento que origina la llamada.

1.1. Crear un procedimiento SUB


El formato para la escritura de un procedimiento Sub se muestra en el siguiente
Cdigo:
[accessibility] Sub subname[(argumentlist)]
' Statements of the Sub procedure go here
End Sub

El siguiente cdigo crea un procedimiento Sub (Sub AboutHelp) que utiliza un


cuadro de mensaje para mostrar un nombre de producto y un nmero de versin:
Private Sub AboutHelp( )
MessageBox.Show("MyProgram V1.0", "MyProgram Help")
End Sub

1.2. Llamada a un procedimiento SUB


Para realizar una llamada o ejecutar un procedimiento Sub, debemos escribir su
nombre en un punto del programa. El siguiente Cdigo muestra el cdigo al com-
pleto del mdulo de una aplicacin de consola. La ejecucin de este programa
comienza como es habitual por Main( ), dentro del cual se realiza una llamada al
procedimiento AboutHelp( ).
Module Module1
Sub Main()
Console.WriteLine("Estamos en el procedimiento Main")
' llamada a un procedimiento
AboutHelp()
Console.ReadLine()
End Sub

Private Sub AboutHelp( )


MessageBox.Show("MyProgram V1.0", "MyProgram Help")
End Sub

2 PROCEDIMIENTOS FUNCTION
Un procedimiento Function es una serie de instrucciones Visual Basic delimitadas
por las instrucciones Function y End Function. Los procedimientos Function son
similares a los procedimientos Sub, pero las funciones pueden devolver un valor al
programa que origina la llamada.

2.1. Creacin de un procedimiento Function


Utilizaremos la siguiente sintaxis para crear un procedimiento Function:
[accessibility] Function functionname[(argumentlist)] As _
datatype
' Statements of the function go here, including optional
' Return statement
End Function

El siguiente cdigo crea una funcin denominada Square que devuelve el cuadrado
de un nmero entero (integer):
ollo
nidos 84
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

as Glosario Bibliografa
nadas

Function Square(SquareValue As Integer) As Integer


Square = SquareValue * SquareValue
End Function
torio Anotaciones

El valor que devuelve un procedimiento Function al programa que origina la lla-


mada se denomina valor de retorno. La funcin devuelve el valor en una de las dos
formas siguientes:
Asigna un valor al nombre de su propia funcin en una o ms instrucciones
dentro del procedimiento. El control no se devuelve al programa que origina la
llamada hasta que se ejecuta una instruccin Exit Function o End Function.
La instruccin Exit Function provoca la salida inmediata de un procedimiento
Function. Cualquier nmero de instrucciones Exit Function pueden aparecer
en cualquier lugar del procedimiento.
Utiliza una instruccin Return para especificar el valor devuelto, y devuelve el
control inmediatamente al programa que origina la llamada.

La ventaja de asignar el valor devuelto al nombre de funcin es que el control no


se devuelve desde la funcin hasta que el programa encuentra una instruccin Exit
Function o End Function. Esto permite asignar un valor preliminar y ajustarlo ms
tarde si es necesario

2.2. Llamada a un procedimiento Function


Para realizar una llamada o ejecutar un procedimiento Function debemos escribir
su nombre en un punto del programa; en este aspecto ambos tipos de procedimien-
to son iguales.

Por otro lado, los puntos que marcan las diferencias entre un Function y un Sub
son los siguientes:
Un procedimiento Function devuelve un valor, de modo que si queremos obte-
nerlo, debemos asignar la llamada a la funcin a una variable. Los procedimien-
tos Sub no pueden devolver valores.
Debido precisamente a la capacidad de un procedimiento Function de devolver
un valor, podemos situar la llamada a una funcin dentro de una expresin, y
operar con el valor de retorno dentro de la expresin, lo cual dota a nuestro
cdigo de una mayor flexibilidad. Los procedimientos Sub no pueden formar
parte de expresiones.

El siguiente cdigo muestra varios ejemplos de llamadas a la funcin Square( ),


segn el modo en que vamos a manipular su valor de retorno
Module Module1

Sub Main()
Dim Resultado As Integer
Dim NuevoValor As Integer

' llamada a una funcin sin recoger el valor de retorno,


' por este motivo, dicho valor se pierde
Square(12)

' llamada a una funcin obteniendo el valor


' de retorno y asignando el valor a una variable
Resultado = Square(15)
Console.WriteLine("La variable Resultado contiene: {0}", Resultado)

' llamada a una funcin como parte de una expresin


NuevoValor = 1500 + Square() * 2
Console.WriteLine("La variable NuevoValor contiene: {0}",
NuevoValor)

Console.ReadLine()
End Sub

End Module
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
85

Lecturas Glosario Bibliografa


seleccionadas
TEMA 4: Formularios dependientes y controles avanzados
1 FORMULARIOS DEPENDIENTES Y FIJOS
Los formularios dependientes, consisten en un formularios que son abiertos Recordatorio
por Anotaciones

otros, denominados formularios dueo (owner form), permaneciendo ambos


abiertos, sin que el formulario dependiente requiera ser cerrado, en el caso de que
necesitemos pasar el foco al formulario dueo.

Un formulario fijo en primer plano, consiste en un formulario que siempre aparece


en primer plano respecto al resto de formularios de la aplicacin. Se trata de una
ligera variacin de comportamiento respecto al formulario dependiente; mientras
que este ltimo, en algunas ocasiones puede ser tapado por otros formularios del
programa, un formulario fijo siempre permanece visible en primer plano.

A continuacin crearemos un proyecto nuevo, eliminaremos su formulario por de-


fecto, y aadiremos el formulario frmPrincipal, que configuraremos como contene-
dor MDI, y al que aadiremos un men que nos permitir abrir un formulario hijo
para escribir un texto, y otro de dilogo para mostrar un literal.

Figura N 27: mens parala prueba de formularios dependientes

El siguiente paso consistir en crear el formulario frmCarta, que utilizaremos para


abrir los formularios dependientes que crearemos posteriormente en este proyecto.

Figura N 28: Formulario del documento


ollo
nidos 86
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

as Glosario Bibliografa
nadas
El siguiente Cdigo fuente muestra el cdigo del men de frmPrincipal que instan-
cia este objeto y lo muestra como formulario hijo del MDI.
Private Sub mnuCarta_Click(ByVal sender As System.Object, ByVal
torio Anotaciones e As
System.EventArgs) Handles mnuCarta.Click
' este formulario se abre como hijo del MDI
Dim ofrmCarta As New frmCarta()
ofrmCarta.MdiParent = Me
ofrmCarta.Show()
End Sub

A continuacin agregaremos al proyecto el formulario frmBuscar. Este formulario


actuar como dependiente de frmCarta, permitindonos buscar una cadena en el
TextBox de este ltimo.

Figura N 29: Formulario de bsqueda

Para conseguir que frmBuscar se comporte como formulario dependiente, al pulsar


dentro de frmCarta el botn Buscar, instanciaremos un objeto frmBuscar, aadin-
dolo a la coleccin de formularios dependientes de frmCarta mediante el mtodo
AddOwnedForm( ), de la clase Form.
Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles btnBuscar.Click
' crear un objeto frmBuscar
Dim ofrmBuscar As New frmBuscar()
' establecer dependencia entre forms
Me.AddOwnedForm(ofrmBuscar)
ofrmBuscar.Show()
End Sub

En lo que respecta al cdigo de frmBuscar, al pulsar su botn Buscar, buscamos


el contenido del control txtBuscar en el formulario propietario frmCarta. Si la
bsqueda tiene xito, seleccionamos el texto encontrado dentro del propietario.
La propiedad Owner del formulario nos devuelve una referencia del propietario,
mientras que para manipular los controles de dicho propietario, realizaremos un
moldeado de tipo o type casting sobre Owner utilizando la funcin CType( ) (ob-
serve el lector de nuevo, la enorme potencia que encierra esta funcin).

Adems mostramos una etiqueta en el formulario dependiente, que slo se visua-


lizar al localizar el texto; cuando volvamos a escribir de nuevo texto a buscar, se
ocultar dicha etiqueta.
' al pulsar este botn, buscamos en el formulario
' propietario de este dependiente
Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal
e As
System.EventArgs) Handles btnBuscar.Click
Dim iResultadoBuscar As Integer
' la propiedad Owner contiene el formulario propietario
iResultadoBuscar = CType(Me.Owner,
frmCarta).txtDocumento.Text.IndexOf(Me.txtBuscar.Text)
' si encontramos el texto buscado...
If iResultadoBuscar > 0 Then
' pasamos el foco al TextBox del formulario propietario
' y seleccionamos el texto encontrado
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
87

Lecturas Glosario Bibliografa


seleccionadas
CType(Me.Owner, frmCarta).txtDocumento.Focus()
CType(Me.Owner, frmCarta).txtDocumento.SelectionStart = iResulta-
doBuscar
CType(Me.Owner, frmCarta).txtDocumento.SelectionLength =
Me.txtBuscar.Text.Length Recordatorio Anotaciones

Me.lblEncontrado.Show()
End If
End Sub
' al volver a teclear un valor a buscar, se oculta el Label
Private Sub txtBuscar_TextChanged(ByVal sender As System.Object,
ByVal e As
System.EventArgs) Handles txtBuscar.TextChanged
Me.lblEncontrado.Hide()
End Sub

La siguiente Figura muestra la aplicacin con ambos formularios abiertos. El for-


mulario frmCarta tiene el foco actualmente, pero eso no impide que frmBuscar
tambin permanezca abierto, para poder pasar a l en cualquier momento.

Figura N 30: Aplicacin con ambos formularios abiertos

1 VALIDACIN DE CONTROLES
Los controles Windows vienen provistos de un potente y flexible sistema de valida-
cin, que nos permitir comprobar si el usuario introduce los valores adecuados en
un control, de modo que le permitiremos pasar el foco a otro control, u obligarle a
permanece en el actual hasta que su valor no sea correcto.

En este esquema de validacin, los miembros principales de la clase Control que


intervienen son los siguientes.
CausesValidation. Esta propiedad nos permite establecer un valor lgico, de ma-
nera que cuando un control capture el foco, provocar la validacin para otro
control del formulario que la requiera.
Validating. Este evento se produce para que podamos escribir el cdigo de va-
lidacin oportuno en un manipulador de evento. El procedimiento manejador
de evento recibe entre sus parmetros un objeto de tipo CancelEventArgs, por
lo que si la validacin no es correcta, asignaremos False a la propiedad Cancel de
dicho objeto.
Validated. Este evento se produce en el caso de que la validacin haya tenido
xito.

El proyecto de ejemplo ValidarControl consta de un formulario con tres controles


TextBox. Todos tienen el valor True en su propiedad CausesValidation, y adicio-
nalmente, para el control txtImporte hemos escrito el procedimiento que actua-
r como manipulador del evento Validating; con ello impediremos el paso desde
dicho control a los dems hasta que su contenido no sea numrico. Si pasamos la
validacin, se ejecutar en ese caso el cdigo del evento Validated.
ollo
nidos 88
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

as Glosario Bibliografa
nadas
Private Sub txtImporte_Validating(ByVal sender As Object, ByVal
e As
System.ComponentModel.CancelEventArgs) Handles txtImporte.
Validating
torio Anotaciones
If Not IsNumeric(Me.txtImporte.Text) Then
e.Cancel = True
MessageBox.Show("Se requiere un nmero")
End If
End Sub

La siguiente Figura muestra esta aplicacin en funcionamiento, durante la ejecu-


cin del evento de validacin.

Figura N 31: Validacin en el formulario

Cuando escribimos cdigo de validacin empleando estos miembros de la clase


Control hemos de tener presente el comportamiento, a veces no muy intuitivo, del
sistema de validacin para controles en los formularios Windows.

Como hemos mencionado anteriormente, cuando la propiedad CausesValidation


de un control contiene True, al recibir el foco dicho control, se provocar el evento
de validacin para el control que acaba de perder el foco. Pero si pasamos el foco a
un control en el que CausesValidation contiene False, la validacin no se producir
sobre el control que acaba de perder el foco.

Esto lo podemos comprobar muy fcilmente sobre nuestro proyecto de ejemplo,


asignando al control txtFecha el valor False en su CausesValidation. A partir de
ahora, cuando estemos situados en el control txtImporte, si este no contiene un
nmero, se producir la validacin si pasamos el foco a txtNombre, pero no se
validar si pasamos a txtFecha.

1 UTILIZACIN DE CONTROLES AVANZADOS


Los controles del Cuadro de herramientas del IDE tratados hasta el momento, son
los que podramos considerar bsicos o estndar en todas las aplicaciones; no obs-
tante, esta ventana de herramientas dispone de otra serie de controles avanzados
o adicionales, que si bien, no son imprescindibles para conseguir la funcionalidad
elemental del programa, sirven como un magnfico complemento a la hora de do-
tar a nuestras aplicaciones de un interfaz de usuario plenamente operativo.

En los siguientes apartados desarrollaremos un proyecto con el nombre ControlA-


vanzado, a travs del cual, realizaremos una descripcin general de algunos de estos
controles adicionales y su modo de uso.

Como primer paso en este proyecto, eliminaremos el formulario por defecto, aa-
diendo a continuacin uno nuevo con el nombre frmPrincipal, al que daremos la
caracterstica MDI mediante la propiedad IsMdiContainer. En este formulario crea-
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
89

Lecturas Glosario Bibliografa


seleccionadas
remos un men con un conjunto de opciones generales: Abrir, Guardar, Salir, etc.

3.1. ImageList
Recordatorio Anotaciones
Este control acta como repositorio de imgenes, del que se alimentarn otros con-
troles del formulario que necesiten mostrar grficos en su interior.

Una vez aadido este control en el formulario, se situar en el panel de controles


especiales del diseador, y haciendo clic en su propiedad Images, se abrir la venta-
na de la Figura, en la que podremos aadir y quitar las imgenes que van a formar
parte de la lista del control, as como ver en el panel complementario, la informa-
cin sobre cada imagen asignada.

Figura N 32: Editor de la coleccin de imgenes

Este control es que nos permite manipular las imgenes por cdigo, por ejemplo,
para aadir nuevas imgenes, debemos usar el mtodo Add( ) de su propiedad
Images, como muestra el siguiente cdigo:
Me.imlImagenes.Images.Add(New Bitmap("tutorias.gif"))

3.2. DateTimePicker
Este control permite la seleccin e introduccin de fechas en una caja de texto con
capacidades extendidas, o bien mediante un calendario desplegable que se mostra-
r al pulsar el botn de expansin que contiene.

Figura N 33: Control DateTimePicker

Para modificar la fecha en el cuadro de texto, debemos situarnos en la parte a


modificar de la fecha y teclear el nuevo valor, o bien, con las flechas de direccin
arriba-abajo, cambiar esa parte de la fecha.
ollo
nidos 90
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

as Glosario Bibliografa
nadas
Si expandimos el calendario, podremos realizar la seleccin de un modo ms gr-
fico. Por defecto el control muestra la fecha actual, pero con la propiedad Text
podemos cambiar la fecha por cdigo, cosa que hacemos al cargar el formulario,
torio Anotaciones
asignando una fecha distinta de la actual.
Private Sub frmDatosPersonal_Load(ByVal sender As Object, ByVal
e As
System.EventArgs) Handles MyBase.Load
' modificar fecha del DateTimePicker
Me.dtpFNacim.Text = "15/06/2002"
'....
End Sub

Podemos restringir el rango de fechas a mostrar por este control con las propieda-
des MinDate y MaxDate. Si queremos, por otra parte, que la fecha se muestre con
un formato personalizado, aplicaremos dicho formato mediante la propiedad Cus-
tomFormat, teniendo en cuenta que no se har efectivo hasta que a la propiedad
Format no le asignemos el valor Custom.

3.3. NumericUpDown
Control que muestra una caja de texto con un valor numrico que podremos ir
aumentandodisminuyendo al pulsar los botones para esta labor de que dispone el
control. La siguiente Figura muestra este control en nuestro formulario de pruebas.

Figura N 34: Control NumericUpDown

Entre los eventos de que dispone este control, ValueChanged se produce cada vez
que cambia el valor del control, de modo que en este caso, vamos a cambiar el color
de fondo en funcin del nmero que contenga. Veamos el siguiente Cdigo:
Private Sub nupEdad_ValueChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles nupEdad.ValueChanged
Select Case Me.nupEdad.Value
Case 20 To 30
Me.nupEdad.BackColor = Color.Gold
Case 30 To 40
Me.nupEdad.BackColor = Color.LimeGreen
Case Else
Me.nupEdad.BackColor = Me.nupEdad.DefaultBackColor
End Select
End Sub

3.4. DomainUpDown
Este control nos permite desplazarnos por una lista de valores, al mismo estilo
que el control anterior. Dicha lista de valores la crearemos mediante la propiedad
Items, en tiempo de diseo o ejecucin. El siguiente Cdigo fuente muestra como
al cargar el formulario frmDatosPersonal, con la propiedad Items y su mtodo Ad-
dRange( ), aadimos los valores que seleccionaremos en el control en tiempo de
ejecucin.
Private Sub frmDatosPersonal_Load(ByVal sender As Object, ByVal
e As
System.EventArgs) Handles MyBase.Load
'....
' crear la lista del DomainUpDown
Me.dudCategoria.Items.AddRange(New String() {"Auxiliar", "Jefe
departamento",
"Coordinador"})
End Sub

La Figura siguiente muestra el control dudCategora, de este tipo al ser utilizado en


el formulario. En el caso de que necesitemos los valores ordenados, asignaremos
True a su propiedad Sorted.
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
91

Lecturas Glosario Bibliografa


seleccionadas

Figura N 35: Control DomainUpDown Recordatorio Anotaciones

3.5. MonthCalendar
Este control muestra en modo grfico un calendario por el que podemos desplazar-
nos para seleccionar una fecha. El control DateTimePicker utiliza internamente un
MonthCalendar para mostrar su calendario desplegable.

Por defecto se visualiza un mes, pero si asignamos a su propiedad CalendarDimen-


sions un objeto Size, podemos expandir el tamao del calendario para que muestre
varios meses. El siguiente Cdigo muestra el cdigo de un botn del formulario
mediante el que cambiamos el tamao del calendario.
Private Sub btnTamCalendario_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnTamCalendario.Click
Me.mclCalendario.CalendarDimensions = New Size(2, 2)
End Sub

Veamos el resultado de expandir el tamao del control:

Figura N 36: Control MonthCalendar

1 CREACIN DE CONTROLADORES DE EVENTOS


Cuando diseamos el interfaz de usuario (IU) y escribimos el cdigo que opera
detrs del IU de una aplicacin, necesitamos trabajar con controles y sus eventos,
propiedades y mtodos para satisfacer los requerimientos de diseo.
En el Microsoft .NET Framework, un evento es un mensaje enviado por un objeto
para indicar que se ha producido una accin invocada por un usuario o program-
ticamente. Cada evento tiene un emisor que produce el evento y un receptor que
lo captura.

A continuacin te presentamos la lectura desarrollo de componentes extrado del


libro de Francisco Charte, en ste se explica la importancia del desarrollo de com-
ponentes con Visual Basic.
ollo
nidos 92
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN
Diagrama Objetivos Inicio
ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

Desarrollo Actividades Autoevaluacin


as Glosario Bibliografa de contenidos
nadas

LECTURA SELECCIONADAS N 2
Lecturas Glosario Bibliografa
seleccionadas
torio Anotaciones Desarrollo de componentes 5
En casi todos los ejemplos que hemos desarrollado hasta ahora, desde los primeros
captulos, hemos estado utilizando multitud de clases para, bien directamente o tras
la creacin
Recordatorio de un objeto, acceder a servicios concretos de la plataforma .NET. En
Anotaciones
ios ltimos captulos esos objetos los hemos creado de forma visual, arrastrndolos
sobre un contenedor y configurando su funcionamiento mediante la edicin de
propiedades. Cuando un objeto puede manipularse de esta forma, mediante un di-
seador, hablamos de componentes en lugar de llamarlos simplemente objetos. Un
componente, por tanto, es un objeto creado a partir de una clase, como cualquier
otro, pero que dispone de elementos que facilitan su tratamiento visual.

A pesar del gran abanico de componentes de todo tipo existentes en la plataforma


.NET, est clara la imposibilidad de cubrir las necesidades de todos los desarro-
lladores. Por eso existen las terceras empresas dedicadas a la creacin y venta de
componentes para las distintas herramientas, no siendo la plataforma .NET una
excepcin. Nosotros, como desabolladores, tambin podemos crear componentes,
ya sea para nuestros propios proyectos o para proveerlos a terceros.

A diferencia de lo que ocurre con otros aspectos del desarrollo de aplicaciones con
Visual Basic, como son ASP.NET y ADO.NET que incorporan importantes mejoras
en la versin 2012, la creacin de componentes no ha experimentado cambios no-
tables en esta versin respecto a las anteriores. Por ello la metodologa que va a
conocer podra aplicarse igualmente a Visual Basic .NET 2010.

El objetivo de este captulo es iniciarle en el desarrollo de componentes .NET, cla-


ses que pueden utilizarse genricamente y de manera indistinta en una aplicacin
Windows, una aplicacin Web u otro tipo de proyecto. Posteriormente, en loscap-
tulos siguientes, entraremos en los detalles especficos de la creacin de con-troles
para formularios Windows, controles ASP.NET y componentes que pueden vincu-
larse a orgenes de datos.

Conceptos bsicos
Antes de entrar en los detalles del desarrollo de componentes no est de ms que
establezcamos los conceptos bsicos que deberemos conocer, as como la termi-
nologa que va a utilizarse en el resto del captulo.

Entre otros elementos, Visual Basic cuenta con un diseador para formularios Win-
dows v otro para formularios Web, que hemos conocido en captulos previos, de tai
forma que el diseo de interfaces de usuario Windows y Web se lleva a cabo con
operaciones de arrastrar y soltar. Estos diseadores permiten seleccionar los com-
ponentes, alojarlos en un contenedor, personalizarlos editando sus propiedades,
asociar cdigo a los eventos, etc.

Para desempear su funcin, un cierto diseador actuara bsicamente sobre dos


elementos: un contenedor y uno o ms componentes. El contenedor es tambin un
componente, aunque con la particularidad de poder alojar otros en su interior. Un
ejemplo de contenedor es un formulario Windows o una pgina Web.
Una clase escrita en Visual Basic puede ser alojada en una biblioteca y utilizada des-
de otra aplicacin directamente, como si de un componente se tratase. Dicha clase,
sin embargo, no podra aadirse a la paleta de componentes de un diseador a
menos que est derivada de Sys-em.ComponentModel .Component o imple-mente
la interfaz IComponent de ese mismo mbito con nombre.

De forma anloga, una clase no podr considerarse un control a menos que est

5 Ocharte Ojeda, Francisco. Programacin con Visual Basic 2012. Madrid: Anaya Multimedia; 2011. p 551-
555.
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
93

Lecturas Glosario Bibliografa


seleccionadas
derivada, directa o indirectamente, de la clase System.Windows.Forms.Control, en
el caso de controles para formularios Windows, o System.Web.GUI.Control, para
los controles ASP.NET.
Recordatorio Anotaciones

Para resumir este punto en una frase, haciendo referencia a los distintos conceptos
comentados, podramos decir que los componentes y controles pueden ser
alojados en un contenedor y personalizados mediante un diseador.

Cundo un objeto es un componente?


Ya sabemos que para que un objeto pueda ser considerado un componente debe
poder manipularse visualmente mediante un diseador pero, qu diferencia
existe en una clase de componente para contar con esa posibilidad? Existen dos
opcio-nes: o dicha clase implementa la interfaz IComponent directamente o he-
reda esa impiementacin de la clase Compcnent. Ambos elementos, la interfaz
ICompo-nenc y la clase Component, se encuentran definidos en el mbito Syscem.
Com-ponentMdel. Otro requerimiento indispensable es que la clase disponga de
un constructor que no necesite parmetro alguno ya que, de lo contrario, no po-
dran crearse objetos visualmente, arrastrndolos sobre un contenedor.
La interfaz IComponent establece las propiedades y mtodos indispensables para
que una clase pueda ser considerada como molde para crear componentes. En
realidad los miembros son tan slo dos: la propiedad Site y el mtodo Disposed().
La primera facilitar el acceso a la interfaz ISice del contenedor donde se inserte el
componente, medio por el cual se establecer la comunicacin entre componente
y contenedor.

El mtodo Disposed() es heredado por la interfaz IComponent de la interfaz IDis-


posed, de la cual est derivada. Dicho mtodo se encargar de liberar los re-cursos
cuando el componente sea destruido.

Aunque podramos implementar manualmente la interfaz IComponent en


cualquier clase propia, a fin de convertirla en una clase de componente, resulta
mucho ms fcil derivar, directa o indirectamente, de la clase Component. Esta es la
base genrica de la mayora de los componentes que hemos utilizado en captulos
previos, especialmente al trabajar con formularios Windows. Component se en-
carga de implementar los miembros de IComponent y, adems, nos ofrece algunas
pro-piedades v mtodos protegidos, que podemos usar al derivar de ella.

En la prctica, por tanto, para crear una nueva clase de componente lo que
haremos ser tomar como base la clase Componen- o, en su defecto, otra clase
que, directa o indirectamente, est derivada de Component.

Con esto podremos centrarnos en el desarrollo de la funcionalidad propia del


componente, sin preocuparnos demasiado por los detalles de implementacin ge-
nrica de cualquier componente.

Nota
Al definir una clase de componente hemos de tener en cuenta que, aunque puede
crearse y ser usado mediante cdigo como cualquier otra clase, el objetivo es facili-
tar la manipulacin en un entorno visual. Con este fin es fundamental | que la ciase
defina mediante propiedades y eventos todos los atributos con que puedan contar
los objetos, en lugar de recurrir a mtodos para efectuar dicha configuracin. Debe
tener en cuenta que los diseadores son capaces de mostrar las propiedades con
que cuenta un componente y facilitar su edicin, pero no existe la posibilidad de
invocacin a mtodos durante el diseo.
Diagrama Objetivos Inicio

ACTIVIDAD N 2:
Desarrollo Actividades Autoevaluacin
de contenidos
Esta actividad puede consultarla en su aula virtual.

Lecturas Glosario Bibliografa


seleccionadas
ollo
nidos 94
Actividades Autoevaluacin UNIDAD III:Objetivos
Diagrama
PROGRAMACIN
Inicio
ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

Desarrollo Actividades Autoevaluacin


as Glosario Bibliografa de contenidos
nadas

CONTROL DE LECTURA N2
Lecturas Glosario Bibliografa
torio Anotaciones Esta actividad puede consultarla en su aula virtual.
seleccionadas

Diagrama Objetivos Inicio

Recordatorio Anotaciones

AUTOEVALUACIN N III
Desarrollo Actividades Autoevaluacin
de contenidos
A continuacin se presentan algunas preguntas con varias alternativas, slo una es la
respuesta, marque la que considere correcta.
1. La descripcin que define mejor el concepto 'clase' en la programacin orientada a
Lecturas Glosario objetos es:
Bibliografa
seleccionadas
a) Un concepto similar al de 'array'
b) Un tipo particular de variable
c) Un modelo o plantilla a partir de la cual creamos objetos
Recordatorio Anotaciones
d) Una categoria de datos ordenada secuencialmente

2. Qu elementos definen a un objeto?


a) Sus cardinalidad y su tipo
b) Sus atributos y sus mtodos
c) La forma en que establece comunicacin e intercambia mensajes
d) Su interfaz y los eventos asociados

3. Qu cdigo tiene que ver con la herencia?


a) public class Componente extends Producto
b) public class Componente inherits Producto
c) public class Componente implements Producto
d) public class Componente belong to Producto

4. Qu significa instanciar una clase?


a) Duplicar una clase
b) Eliminar una clase
c) Crear un objeto a partir de la clase
d) Conectar dos clases entre s

5. Qu significa sobrecargar un mtodo?


a) Editarlo para modificar su comportamiento
b) Cambiarle el nombre dejndolo con la misma funcionalidad
c) Crear un mtodo con el mismo nombre pero diferentes argumentos
d) Aadirle funcionalidades a un mtodo

6. Qu es una excepcin?
a) Un objeto que se instancia cuando se produce un error
b) Un objeto que no puede ser instanciado
c) Un bucle que no finaliza
d) Un tipo de evento muy utilizado al crear interfaces

7. Qu es el encapsulamiento en la Programacin Orientada a Objetos?


a) Codificar de manera que se entienda la programacin.
b) Ocultar los miembros de una clase
c) Utilizar clases de tipo Encapsul
d) Transformar el objeto a clases superiores
LABORATORIO DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
95

Lecturas Glosario Bibliografa


seleccionadas
8. Qu es la herencia en la Programacion Orientada a Objetos?
a) Hacer uso de la clase Inherits
b) Transformar las variables en otras.
Recordatorio Anotaciones
c) Implementar mtodos con el mismo nombre.
d) Creacin de clases en base a otras obteniendo sus caractersticas.

9. La interfaz de Visual Basic 2012 se conoce como:


a) MDI
b) POO
c) SDI
d) IDE

10. El objeto principal sobre el que se construyen las aplicaciones en Microsoft Visual
Basic 2012 es:
a) Ventana
b) Formulario
c) Botones
d) Control

11. Los botones, etiquetas y formularios de Microsoft Visual Basic 2012 son:
a) Objetos
b) Controles
c) eventos
d) ninguno de los anteriores

12. Los miembros de una clase son:


a) Procedimientos y funciones
b) Propiedades y eventos
c) Mtodos y propiedades
d) Todas son correctas

13. La propiedad Text es propio de:


a) El ttulo en el caso de los formularios
b) El texto que contienen los botones
c) El texto de las etiquetas
d) Todas son correctas

14. El Lenguaje Visual Basic se llama as:


a) Porque su entorno de diseo es visual y bsico
b) Porque bsicamente se visualiza.
c) Por su entorno de desarrollo y porque est basado en el lenguaje de programa-
cin BASIC
d) Ninguna de las anteriores

15. La propiedad Visible la podemos definir:


a) En la ventana de propiedades.
b) Mediante cdigo de programacin.
c) En tiempo de ejecucin.
d) Todas son correctas
16. La propiedad Click es propio de:
a) El Mouse.
b) Un botn
ollo
nidos 96
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS Y PROYECTOS AVANZADOS

as Glosario Bibliografa
nadas
c) Todos los controles
d) Ninguna es correcta

torio Anotaciones
17. Cuando un usuario interacta con un objeto se produce un:
a) Suceso
b) Evento
c) Click
d) Mtodo

18. La estructura del bucle For... Each sirve para:


a) Crear objetos de manera repetitiva.
Diagrama Objetivos Inicio
b) Realizar el mismo conjunto de instrucciones, un determinado nmero de veces
c) Realizar distintas instrucciones, un determinado nmero de veces
d) Recorrer una coleccin ejecutando instrucciones.
Desarrollo Actividades Autoevaluacin
de contenidos

BIBLIOGRAFIA III:
Lecturas Glosario Bibliografa
seleccionadas
James Martin y James J, Odell. Anlisis y diseo orientado a objetos. Londres: Prentice-
Hall Hispanoamericana, S.A.; 2000.
Ocharte Ojeda, Francisco. Programacin con Visual Basic 2012. Madrid: Anaya Multi-
Recordatorio Anotaciones
media; 2011.
Snchez Flores, Cristian. Desarrollando aplicaciones con Visual Basic.Net 2008. Per:
Macro 2008.
comentario"
c) MostrarNombre.Text= Comentario
d) Circunf= 2* PI* R --PI est definido en la seccin declaraciones.
LABORATORIO DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
97

Diagrama Objetivos Inicio Lecturas Glosario Bibliografa


seleccionadas

Desarrollo
UNIDAD IV: ACCESO A DATOS
Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

DIAGRAMA DE PRESENTACIN DE LA UNIDAD


Diagrama
Lecturas Objetivos
Glosario Inicio
Bibliografa
seleccionadas

CONTENIDO EJEMPLOS ACTIVIDADES


Desarrollo Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

BIBLIOGRAFA AUTOEVALUACIN
Lecturas Glosario Bibliografa
seleccionadas

CONOCIMIENTOS PROCEDIMIENTOS ACTITUDES


Recordatorio Anotaciones

TEMA 1: Introduccin al Ac- 1. Utiliza procedimientos Valora el desarrollo tecnol-


ceso a Datos para la conexin de un gico, informtico y el uso de
1. ADO .NET proyecto de Visual Basic la computadora como herra-
mienta primordial, as como el
2. Objetos comunes de con una base de datos
software de oficina dentro del
ADO.NET relacional. desarrollo de su carrera.
3. El explorador de servi- 2. Utiliza la clase dataset
dores para la conexin a datos
en entornos desconec-
4. Trabajar con bases de
tados.
datos en el Explorador
de servidores 3. Utiliza datatables para
dar mantenimiento a
TEMA 2: Trabajar con las tablas de la base de
Datos
datos.
1. El objeto Connection
2. El objeto DataAdapter
Actividad N 1
3. El objeto Dataet Crea formularios de acceso
4. El control DataGrid a datos para dar manteni-
miento a tablas principales
Lectura Seleccionada N1
y principal-detalle, utilizan-
Representacin de las enti- do ADO .NET
dades en el diseo de formu-
larios. Rebecca M. Riordan.
Diseo de Base de datos re- 4. Construye un proyecto
lacionales con Access y SQL de sistema de informa-
Server. p 203-209 cin.
TEMA 3: Creacin de proyec-
tos de acceso a datos. Actividad N 2
1. Generar y poblar Data- Construye una aplicacin
Sets de acceso a datos utilizan-
do formularios MDI y con-
2. Modificar un DataSet troles.
3. Actualizar un DataSet a
una fuente de datos. Tarea Acadmica N2
4. Enlazar y formatear da- Crea un programa de acce-
tos en controles so a datos.
Lectura Seleccionada N2
1. La Interfaz como me-
diadora.Rebecca M. Riordan.
Diseo de Base de datos re-
lacionales con Access y SQL
Server. p 203-209
Autoevaluacin Nro 4.
ollo
nidos 98
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas
TEMA 1: Introduccin al Acceso a Datos 6
1 ADO .NET
torio Anotaciones
Independientemente de las operaciones que hagamos sobre los datos, existen cier-
tos conceptos fundamentales que debemos conocer sobre los datos en ADO.NET.
Es til conocer la arquitectura de los datos en ADO.NET, cules son los principales
componentes de datos, y cmo se acoplan las piezas.

ADO.NET se define como un conjunto de clases para trabajar con datos. ADO
.NET Proporciona:
Un sistema diseado para entornos desconectados.
Un modelo de programacin con soporte avanzado de XML.
Un conjunto de clases, interfaces, estructuras y enumeraciones que gestionan el
acceso a datos desde el .NET Framework.

1.1. Componentes de ADO .NET


Los componentes de ADO.NET han sido diseados para separar el acceso a datos
de la manipulacin de los datos. Existen dos componentes principales de ADO.
NET que lo cumplen: el componente DataSet y los proveedores de datos .NET. Los
proveedores de datos .NET constan de un conjunto de componentes que incluyen
los objetos Connection, Command, DataReader y DataAdapter. Los componentes
del proveedor de datos .NET estn diseados explcitamente para la manipulacin
de datos desconectados.

ADO.NET y Windows Forms proporcionan componentes para el consumidor de


datos que podemos utilizar para mostrar nuestros datos. Incluyen controles como
DataGrid, que pueden ser enlazados a datos, y propiedades de enlace a datos en la
mayora de controles estndares de Windows, como los controles TextBox, Label,
ComboBox y ListBox.

El .NET Framework incluye numerosos proveedores de datos .NET, incluyendo el


proveedor de datos de .NET para SQL Server, el proveedor de datos de .NET OLE
DB para SQL, y el proveedor OLE DB para Microsoft Jet.

1.2. Entornos conectados


Un entorno conectado es aquel en el que un usuario o una aplicacin estn conec-
tados continuamente a una fuente de datos. Durante muchos aos de la historia de
la informtica, el nico entorno disponible era el entorno conectado.

Un escenario conectado proporciona las siguientes ventajas:


Un entorno conectado es ms fcil de mantener.
La concurrencia se controla ms fcilmente.
Es ms probable que los datos estn ms actualizados que en un escenario des-
conectado.

Un escenario conectado tiene los siguientes inconvenientes:


Debe mantenerse una conexin de red constante.
Un escenario conectado proporciona una escalabilidad limitada.

He aqu algunos ejemplos en los que debe utilizarse una conexin continua:
Una fbrica que requiere una conexin en tiempo real para controlar la salida
de produccin y el almacn.
Un agente de bolsa que requiere una conexin constante a los valores del mer-
cado.

6 Adaptado de: Acceso a datos con ADO.NET Microsoft Oficial.


LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
99

Lecturas Glosario Bibliografa


seleccionadas
1.3. Entornos desconectados
Con la llegada de Internet, los entornos desconectados se han convertido en algo
habitual, y con el creciente uso de dispositivos de mano, los escenarios desconec-
tados se estn convirtiendo en algo casi universal. Equipos porttiles, Pocket PCs y
Recordatorio Anotaciones

Tablet PCs permiten utilizar aplicaciones sin conexin a los servidores o a las bases
de datos.

En numerosas situaciones, la gente no trabaja en entornos totalmente conectados o


desconectados, sino en un entorno que combina ambas opciones.

Un entorno desconectado es aquel en el que un usuario o una aplicacin no estn


conectados constantemente a una fuente de datos. Las aplicaciones de Internet uti-
lizan frecuentemente arquitecturas desconectadas. Se abre la conexin, se recupe-
ran los datos y la conexin se cierra. El usuario trabaja con los datos en el navegador
y la conexin vuelve a abrirse para actualizar u otras peticiones.

Los usuarios mviles que trabajan con equipos porttiles son tambin los usuarios
principales de los entornos desconectados. Los usuarios pueden llevarse un subcon-
junto de datos en un equipo desconectado y posteriormente fusionar los cambios
con el almacn de datos central.

Un entorno desconectado proporciona las siguientes ventajas:


Las conexiones se utilizan durante el menor tiempo posible, permitiendo que
menos conexiones den servicio a ms usuarios.
Un entorno desconectado mejora la escalabilidad y el rendimiento de las aplica-
ciones, maximizando la disponibilidad de conexiones.

Un entorno desconectado tiene los siguientes inconvenientes:


Los datos no siempre estn actualizados.
Pueden producirse conflictos de cambios que deben solucionarse.
La transmisin de datos puede percibirse ms lenta de lo que sera en entornos
conectados.

He aqu algunos ejemplos en los que podra ser apropiado un entorno desconec-
tado:
Una aplicacin que mantiene datos de clientes en un equipo porttil de un
representante.
Una aplicacin que hace un seguimiento de lluvias y precipitaciones.
Una aplicacin que un granjero utiliza para contar el ganado. La aplicacin
est en el dispositivo basado en Microsoft Windows CE del granjero que ejecuta
Microsoft SQL Server 2012 Windows CE Edition.

Gestin de actualizaciones en una aplicacin desconectada


En un entorno desconectado, varios usuarios pueden modificar los datos de los
mismos registros al mismo tiempo; por ello, nuestra aplicacin debe gestionar con-
flictos en las actualizaciones de datos. Existen varias formas para gestionarlos:
Permitir que prevalezcan las actualizaciones ms recientes.
Permitir que prevalezcan las primeras actualizaciones realizadas.
Escribir cdigo en la aplicacin que permita a los usuarios determinar qu cam-
bios deberan conservarse. Las soluciones especficas pueden variar dependien-
do de los requerimientos de negocio de una determinada aplicacin.

1 CONCEPTOS GENERALES
Los proveedores de datos de .NET y el espacio de nombres System.Data proporcio-
nan los objetos ADO.NET que utilizaremos en un escenario desconectado.
ollo
nidos 100
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas

torio Anotaciones

Figura N 38: Objetos Comunes de ADO


Fuente: Acceso a datos con ADO.NET - Microsoft Press

ADO.NET proporciona un modelo de objetos comn para proveedores de datos


de .NET. La siguiente tabla describe los principales objetos ADO.NET que utilizare-
mos en un escenario desconectado.

Cuadro N 11
Objetos comunes de ADO

1 EL EXPLORADOR DE SERVIDORES
A continuacin, aprenderemos a utilizar el Explorador de servidores para agregar
conexiones a bases de datos y visualizar elementos de bases de datos como tablas.

Crear un nuevo proyecto


5. Iniciar un nuevo proyecto de Microsoft Visual Basic .NET basado en la plan-
tilla Windows Application.
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
101

Lecturas Glosario Bibliografa


seleccionadas
6. Poner el nombre TitlesDataGrid al proyecto, establecer la ubicacin, y hacer
clic en Aceptar.

Mostrar las capacidades de Server Explorer utilizando la tabla Titles Recordatorio Anotaciones

1. En el Explorador de servidores, en Servidores, expandir el nodo nombre_


del_pc, expandir el nodo Servidores SQL Server, y expandir el nodo nom-
bre_del_pc/NETSDK para que se muestren todas las bases de datos SQL dis-
ponibles en el equipo.
2. Expandir el nodo de la base de datos Pubs, expandir el nodo Tablas bajo
Pubs, y expandir los campos bajo la tabla Titles.
3. Hacer clic con el botn derecho en la tabla Titles y explicar las opciones que
aparecen.
4. Hacer clic en Recuperar datos de la tabla, y mostrar los datos de los campos
de la tabla en la ventana de resultados. Explicar que los datos pueden actua-
lizarse aqu, y que se aplicarn las limitaciones impuestas por el diseo de la
tabla SQL. Cerrar la ventana de resultados.
5. Hacer clic en varios campos de la tabla Titles en el Explorador de servidores
y explicar de qu forma la informacin sobre el tipo y longitud de los datos
que se muestra en la ventana Propiedades puede resultar til para crear una
aplicacin.

Agregar Connection y el DataAdapter al formulario


1. En el Explorador de servidores, arrastrar la tabla Titles a Form1. Cuando se
arrastre la tabla al formulario, se crearn SqlConnection1 y SqlDataAdapter1
y se aadirn a la bandeja de componentes.
2. En la ventana Propiedades, cambiar la propiedad Name de SqlConnec-
tion1 por PubsConn y cambiar la propiedad Name de SqlDataAdapter1 por
PubsSqlDataAdapter.
3. Expandir la propiedad InsertCommand de PubsSqlDataAdapter. Verificar
que la propiedad Connection est establecida en PubsConn. Explicar que el
objeto de conexin es la fuente de datos de DataAdapter. Tambin puede
explicarse que DataAdapter gestiona los comandos SQL Select, Insert, Delete
y Update.

Generar el DataSet para la tabla Products


4. En la ventana Propiedades, en el rea de descripcin de la parte inferior de la
lista de propiedades, hacer clic en Generar Dataset.
5. En el cuadro de dilogo Generar Dataset, escribir PubsDataSet en el cuadro
de texto Nuevo.
6. En el resto de cuadros de texto, dejar los valores predeterminados. Hacer clic
en Aceptar.
PubsDataSet1 debera aparecer en la bandeja de componentes.

Agregar un DataGrid al formulario y establecer sus propiedades


1. En la ficha Windows Forms del Cuadro de herramientas, agregar un control
DataGrid al formulario.
2. En la ventana Propiedades, poner al control DataGrid el nombre TitlesData-
Grid.
3. En la ventana Propiedades, establecer la propiedad DataSource del control Da-
taGrid en PubsDataSet1, y establecer la propiedad DataMember para Titles.
4. Ajuste el tamao del formulario y el control DataGrid para que todas las filas
y columnas estn visibles.
La rejilla de datos debera mostrar los nombres de los campos de la tabla Titles.

Poblar el DataSet con los datos de la tabla Titles


- Abrir un controlador de eventos para el evento Form1_Load. En el controla-
dor de eventos Form1_Load, invocar el mtodo Fill del adaptador de datos
ollo
nidos 102
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas
para poblar la tabla Titles con datos. El cdigo debera ser como el siguiente:
- PubsSqlDataAdapter.Fill(PubsDataSet1)

torio Anotaciones
Probar la aplicacin
1. Ejecutar la aplicacin.
Los datos de Titles deberan poblar la rejilla de datos.
2. Mostrar la funcionalidad de la rejilla de datos utilizando las barras de despla-
zamiento y modificando los anchos de las columnas.

Explicar que esta aplicacin requerira ahora un mayor desarrollo: agregar ms


capacidades de navegacin, personalizar el formulario para ajustarse a los reque-
rimientos de diseo de negocio, agregar acceso a datos especfico del negocio y
actualizar capacidades.

1 TRABAJAR CON BASES DE DATOS EN EL EXPLORADOR DE SERVIDORES


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

Figura N 39: Explorador de servidores

4.1. Abrir el Explorador de servidores


Podemos abrir el Explorador de servidores en cualquier momento durante el pro-
ceso de desarrollo, mientras trabajamos con cualquier tipo de proyecto o elemento.
Abrir el Explorador de servidores
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
103

Lecturas Glosario Bibliografa


seleccionadas
En el men Ver, hacer clic en Explorador de servidores.
O
Si la ficha Explorador de servidores se muestra en el extremo izquierdo de la
pantalla, hacer clic en esa ficha. Recordatorio Anotaciones

4.2. Agregar y eliminar conexiones a datos


El Explorador de servidores muestra las conexiones a bases de datos bajo el nodo
Conexiones de datos. Despus de establecer una conexin, podemos disear pro-
gramas para abrir conexiones y recuperar y manipular los datos. De modo prede-
terminado, el Explorador de servidores muestra conexiones a datos y enlaces a
servidores utilizados con anterioridad.

Agregar una conexin a datos en el Explorador de servidores


1. En el men Herramientas, hacer clic en Conectar con base de datos.
Se abre el cuadro de dilogo Propiedades del vnculo de datos.
2. En la ficha Proveedor del cuadro de dilogo Propiedades del vnculo de da-
tos, seleccionar un proveedor.
3. En la ficha Conexin del cuadro de dilogo Propiedades del vnculo de da-
tos, proporcionar la informacin que se solicita. Los campos de entrada que
se muestran pueden variar en funcin del proveedor seleccionado en la ficha
Proveedor.
Por ejemplo, si seleccionamos el proveedor OLE DB para SQL Server, la
ficha Conexin muestra campos para el nombre de servidor, el tipo de au-
tenticacin y la base de datos.
5. Hacer clic en Aceptar para establecer la conexin de datos.
El cuadro de dilogo Propiedades del vnculo de datos se cierra, y la nueva
conexin de datos aparece debajo del nodo Conexiones de datos, con el
nombre del servidor y de la base de datos a la que se accede. Por ejemplo,
si creamos una conexin de datos a una base de datos denominada NWind
en un servidor llamado Server1, aparece una nueva conexin con el nombre
Server1.NWind.dbo bajo el nodo Conexiones de datos.

Eliminar una conexin de datos desde el Explorador de servidores


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

4.3. Arrastrar y soltar recursos de datos


Podemos arrastrar elementos desde el Explorador de servidores y soltarlos en el Di-
seador de Windows Forms. Ubicar elementos en el Diseador de Windows Forms
crea nuevos recursos de datos que estn preconfigurados para recuperar informa-
cin de fuentes de datos seleccionadas.

Crear un nuevo componente de datos utilizando el Explorador de servidores


Podemos crear un componente de datos preconfigurado para hacer referencia
a un determinado recurso.
1. En la vista de Diseo, abrir el formulario al que deseamos agregar un compo-
nente de datos.
2. En el Explorador de servidores, seleccionar el elemento de datos que desea-
mos utilizar. Un ejemplo de elemento de datos es un campo o una tabla.
3. Arrastrar el elemento desde el Explorador de servidores a la superficie del
diseador.
ollo
nidos 104
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas
4.4. Visualizar elementos de la base de datos
Podemos utilizar el Explorador de servidores para visualizar y recuperar informa-
cin de todas las bases de datos instaladas en un servidor. Podemos hacer una lista
torio Anotaciones de tablas, vistas, procedimientos almacenados y funciones de la base de datos en
el Explorador de servidores, expandir tablas individuales para hacer una lista de
sus columnas y disparadores, y hacer clic con el botn derecho sobre la tabla para
seleccionar el Diseador de tablas del men contextual.

Los proveedores de datos de .NET y el espacio de nombres System.Data proporcio-


nan los objetos ADO.NET que utilizaremos en un escenario desconectado.

4.5. Las clases Connection


En los ejemplos con datos que vamos a realizar, se ha utilizado SQL Server 2012
como servidor de datos, y fundamentalmente, la base de datos Northwind.

El primer paso obligado en un acceso a datos consiste en establecer una conexin


con un almacn de datos. Esto lo vamos a conseguir gracias a las clases Connection
de ADO .NET, que nos permitirn conectarnos a un origen de datos.

Debemos recordar que existen dos implementaciones para algunos de los objetos
de ADO .NET, cada uno especfico del origen de datos con el que nos vamos a co-
nectar. Esto ocurre con el objeto Connection, que tiene dos versiones, una como
proveedor de datos de SQL Server, a travs de la clase System.Data.SqlClient.Sql-
Connection, y otra como proveedor de datos OLEDB, a travs de la clase Sysem.
Data.OleDb.OleDbConnection.

Por norma general, del objeto Connection utilizaremos los mtodos Open( ) y
Close( ), para abrir y cerrar conexiones respectivamente, con el almacn de datos
adecuado. Aunque el .NET Framework implementa el recolector de basura que
gestiona de forma automtica los recursos y objetos que no son utilizados, es reco-
mendable cerrar las conexiones de forma explcita utilizando el mtodo Close( ).

Las conexiones se abrirn de forma explcita utilizando el mtodo Open(), pero


tambin se puede hacer de forma implcita utilizando un objeto DataAdapter, esta
posibilidad la veremos ms adelante.

Cuando ejecutamos el mtodo Open() sobre un objeto Connection (SqlConnec-


tion o OleDbConnection), se abrir la conexin que se ha indicado en su propie-
dad ConnectionString, es decir, esta propiedad indicar la cadena de conexin que
se va a utilizar para establecer la conexin con el almacn de datos correspondien-
te. El mtodo Open() no posee parmetros.

El constructor de la clase Connection se encuentra sobrecargado, y en una de sus


versiones recibe como parmetro una cadena que ser la cadena de conexin que
se aplique a su propiedad ConnectionString.

Si hacemos uso de la clase SqlConnection, en la cadena de conexin no podremos


especificar una DSN de ODBC, ya que la conexin se va a realizar en este caso
directamente con SQL Server. Y si utilizamos la clase OleDbConnection debemos
especificar el proveedor OLEDB que se va a utilizar para establecer la conexin,
una excepcin es el proveedor OLEDB para ODBC (MSDASQL), que no puede ser
utilizado, ya que el proveedor OLEDB de .NET no soporta el proveedor de ODBC,
en este caso deberemos realizar la conexin utilizando el proveedor adecuado al al-
macn de datos. Los proveedores OLEDB que son compatibles con ADO .NET son:
SQLOLEDB: Microsoft OLE DB Provider for SQL Server.
MSDAORA: Microsoft OLE DB Provider for Oracle.
Microsoft.Jet.OLEDB.4.0: OLE DB Provider for Microsoft Jet.
La sintaxis utilizada para indicar la cadena de conexin, con las particularidades
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
105

Lecturas Glosario Bibliografa


seleccionadas
propias de cada proveedor, veremos que es muy similar a la utilizada en ADO cl-
sico. El Cdigo fuente siguiente muestra un ejemplo de conexin con un servidor
SQL Server 2012, y su posterior desconexin, utilizando un objeto SqlConnection.
Debemos importar el espacio de nombres Data.SqlClient para poder utilizar el Recordatorio
ob- Anotaciones
jeto. Este cdigo lo podemos asociar a la pulsacin de un botn en un formulario.
Imports System.Data.SqlClient
'....
Try
' crear el objeto de conexin
Dim oConexion As New SqlConnection()
' pasar la cadena de conexin
oConexion.ConnectionString = "server=(local);" & _
"database=Northwind;uid=sa;pwd=;"
' abrir conexin
oConexion.Open()
MessageBox.Show("Conectado")
' cerrar conexin
oConexion.Close()
MessageBox.Show("Desconectado")
Catch oExcep As SqlException
' si se produce algn error,
' lo capturamos mediante el objeto
' de excepciones particular para
' el proveedor de SQL Server
MessageBox.Show("Error al conectar con datos" & _
ControlChars.CrLf & oExcep.Message & ControlChars.CrLf & oExcep.
Server)
End Try

El Cdigo fuente siguiente muestra la misma operacin pero usando el objeto de


conexin para el proveedor de OLEDB. Observe el lector las diferencias en las
cadenas de conexin y el objeto de excepcin con respecto al anterior ejemplo, as
como el espacio de nombres a importar.
Imports System.Data.OleDb
'....
Try
' crear el objeto de conexin
Dim oConexion As New OleDbConnection()
oConexion.ConnectionString = "Provider=SQLOLEDB;" & _
"Server=(local);Database=Northwind;uid=sa;pwd=;"
' abrir conexin
oConexion.Open()
MessageBox.Show("Conectado")
' cerrar conexin
oConexion.Close()
MessageBox.Show("Desconectado")
Catch oExcep As OleDbException
' si se produce algn error,
' lo capturamos mediante el objeto
' de excepciones particular para
' el proveedor de OLEDB
MessageBox.Show("Error al conectar con datos" & _
ControlChars.CrLf & _
oExcep.Message & ControlChars.CrLf & _
oExcep.Source())
End Try

TEMA 2: Trabajar con Datos 7


ADO.NET proporciona todos los componentes necesarios para conectarnos a fuentes
de datos y trabajar con datos en nuestras aplicaciones. En el presente tema, aprende-
remos a utilizar objetos ADO.NET para conectarnos a una base de datos, recuperar
modificar y transmitir datos actualizados a la base de datos. Tambin aprenderemos
cmo mostrar datos en un formulario Windows Forms utilizando el control DataGrid.
Finalmente, aprenderemos cmo utilizar el Asistente para formularios de datos para
automatizar el proceso de trabajar con datos. El asistente simplifica la tarea de agregar
controles y establecer propiedades a unos pocos pasos sencillos.
ollo
nidos 106
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas
1 EL OBJETO CONNECTION
Antes de trabajar con datos, es necesario establecer primero una conexin con
una fuente de datos. Para conectar con una fuente de datos, escogemos el tipo de
torio Anotaciones
conexin, especificamos la fuente de datos, y abrimos la conexin a la fuente de
datos. Cuando acabamos de trabajar con los datos, cerraremos la conexin.

Podemos utilizar el objeto Connection para conectar a una fuente de datos espec-
fica. Podemos utilizar SqlConnection para conectar a bases de datos SQL Server o
OleDbConnection para conectar a otros tipos de fuentes de datos.

Despus de escoger el tipo de conexin, utilizamos una propiedad ConnectionS-


tring para especificar el proveedor de datos, la fuente de datos, y dems informa-
cin utilizada para establecer la conexin. El formato de estas cadenas difiere li-
geramente entre el espacio de nombres SqlClient y el espacio de nombres OleDb.

El objeto Connection soporta un mtodo Open que abre la conexin despus de


que se hayan establecido las propiedades de la conexin, y un mtodo Close que
cierra la conexin a la base de datos despus de que todas las transacciones se hayan
liberado.
El siguiente ejemplo muestra cmo utilizar un objeto Connection, la propiedad
ConnectionString y el mtodo Open para conectarnos a una base de datos SQL
Server utilizando el Data Provider .NET de SQL Server:
Dim PubsSQLConn As SqlClient.SqlConnection
PubsSQLConn = New SqlClient.SqlConnection( )
PubsSQLConn.ConnectionString = "Integrated Security=True;" & _
"Data Source=local;Initial Catalog=Pubs;"
PubsSQLConn.Open( )

2 EL OBJETO DATAADAPTER
Tras establecer una conexin con una fuente de datos, podemos utilizar un adap-
tador de datos para intercambiar datos entre la fuente de datos y un dataset. En
muchas aplicaciones, esto significa leer datos de una base de datos en un dataset
mediante un adaptador de datos y a continuacin escribir los datos cambiados des-
de el dataset al adaptador de datos y nuevamente a la base de datos. Sin embargo,
un adaptador de datos puede mover datos entre cualquier fuente y un dataset. Por
ejemplo, podra existir un adaptador que mueva datos entre un servidor que ejecu-
te Microsoft Exchange y un dataset.

Visual Studio incorpora dos adaptadores de datos principales para utilizarse con
bases de datos:
OleDbDataAdapter es apropiado para utilizarlo con cualquier fuente de datos
que proporcione un proveedor OLE DB.
SqlDataAdapter es especfico a SQL Server. Como no funciona a travs de una
capa OLE DB, es ms rpido que OleDbDataAdapter. Sin embargo, slo puede
ser utilizado con SQL Server.

Podemos instanciar el DataAdapter utilizando la palabra clave Dim y pasando una


cadena de consulta y un objeto Connection como parmetros. El DataAdapter veri-
ficar si la Connection est abierta, y si no lo est, la abrir para nosotros y la cerrar
cuando nuestra llamada al mtodo se complete. Esta aproximacin es til si ya he-
mos establecido las propiedades de un objeto Connection en nuestra aplicacin y
slo necesitamos abrir la conexin para poblar las tablas de datos.

El siguiente ejemplo muestra cmo crear una instancia de una clase Sql Client Da-
taAdapter y acceder a la tabla Titles en la base de datos pubs.

7 Adaptado de: Acceso a datos con ADO.NET Microsoft Oficial


LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
107

Lecturas Glosario Bibliografa


seleccionadas

Dim PubsSQLConn As SqlClient.SqlConnection


PubsSQLConn = New SqlClient.SqlConnection( )
PubsSQLConn.ConnectionString = "Integrated Security=True;" & _
Recordatorio Anotaciones
"Data Source=local;Initial Catalog=Pubs;"
Dim PubsAdapter As SQLDataAdapter = New SQLDataAdapter _ ("Select
* from Titles", PubsSQLConn)
' Code to populate the dataset
Dim titlesDataset As DataSet = New DataSet
PubsAdapter.Fill(titlesDataset)
' Code to bind the dataset to form controls might go here

DataAdapter soporta mtodos especficos para mover datos entre el dataset y la


fuente de datos. Podemos utilizar un adaptador de datos para realizar las siguientes
operaciones:
Recuperar filas de una fuente de datos y poblarlas en tablas de datos correspon-
dientes en un dataset.
Para recuperar filas de una fuente de datos y poblar un dataset, se utiliza el mtodo
Fill de SqlDataAdapter. Cuando invocamos el mtodo, se invoca una sentencia
SQL SELECT en la fuente de datos. Ejecutar este mtodo abrir y cerrar el
objeto de conexin.
Transmitir los cambios realizados a una tabla dataset a la fuente de datos corres-
pondiente.
Para transmitir los cambios en una tabla dataset a la fuente de datos, se utiliza el
mtodo Update del adaptador. Cuando invocamos el mtodo, ejecuta cualquier
sentencia SQL INSERT, UPDATE o DELETE que sea necesaria, dependiendo
de si el registro afectado es nuevo, modificado o borrado. Igual al caso anterior,
ejecutar este mtodo abrir y cerrar el objeto conexin.
' Code to manipulate the data locally by using the DataSet
' goes here
' Update the database by means of the data adapter
PubsAdapter.Update (PubsDataSet)
' Create the Connection, the DataAdapter, and the DataSet,
' and populate the dataset
Dim NWindConn As OleDb.OleDbConnection
NWindConn = New OleDb.OleDbConnection( )
NWindConn.ConnectionString = "Provider= " & _
"Microsoft.Jet.OLEDB.4.0;Data Source=c:\NWind.mdb"
Dim NWindAdapt As New OleDb.OleDbDataAdapter("SELECT * " & _
"from Customers", NWindConn)
Dim NWindDataSet As DataSet = New DataSet( )
NWindAdapt.Fill(NWindDataSet, "customersTable")
' Code to manipulate the data locally by using the DataSet
' goes here
' Update the database by means of the data adapter
NWindAdapt.Update (NWindDataSet.Tables("customersTable"))

3 EL OBJETO DATASET
Despus de especificar los datos que queremos recuperar, el prximo paso es po-
blar un dataset con datos desde la base de datos. Los datasets almacenan datos en
un cach desconectado. La estructura de un dataset es similar a la de una base de
datos relacional y ofrece un modelo de objetos jerrquico de tablas, filas y colum-
nas. Adems, contiene restricciones y relaciones que estn definidas para el dataset.
Un dataset es un contenedor, de modo que necesitamos poblarlo con datos. Pode-
mos poblar un dataset de varios modos:
Invocar el mtodo Fill de un adaptador de datos. Llamando este mtodo hace
que el adaptador ejecute una sentencia SQL o un procedimiento almacenado
y pueble una tabla en el dataset con los resultados. Si el dataset contiene ml-
tiples tablas, probablemente tendremos adaptadores de datos separados para
cada tabla, y por tanto deberemos llamar a cada mtodo Fill de cada adaptador
por separado.
Poblar tablas manualmente en el dataset creando DataRows y aadirlas a la co-
leccin Rows de la tabla. Podemos hacer esto slo en tiempo de ejecucin.
Leer un documento XML o flujo en el dataset.
ollo
nidos 108
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas
Copiar los contenidos de otro dataset. Esta tcnica puede ser til si nuestra apli-
cacin obtiene datasets de diferentes fuentes (diferentes Servicios Web XML,
por ejemplo), pero necesita consolidarlos en un nico dataset.
torio Anotaciones

Utilizamos un DataAdapter para acceder a datos almacenados en una base de datos


y almacenar los datos en DataTables dentro de un DataSet e nuestra aplicacin.

El siguiente ejemplo muestra cmo poblar un Dataset denominado PubsDataset


con datos de una base de datos SQL utilizando un DataAdapter. Slo hay una tabla
y el dataset har referencia a ella utilizando un nmero de ndice. El comando Up-
date utliza la misma tabla para actualizar los cambios a la base de datos.
' Create the Connection, the DataAdapter, and the DataSet,
' and populate the dataset
Dim PubsSQLConn As SqlClient.SqlConnection
PubsSQLConn = New SqlClient.SqlConnection( )
PubsSQLConn.ConnectionString = "Integrated Security=True;" & _
"Data Source=local;Initial Catalog=Pubs;"
Dim PubsAdapter As SQLDataAdapter = New SQLDataAdapter _ ("Select
* from Authors", PubsSQLConn)
Dim PubsDataSet As DataSet = New DataSet( )
PubsAdapter.Fill(PubsDataSet)
' Code to manipulate the data locally by using the DataSet
' goes here
' Update the database by means of the data adapter
PubsAdapter.Update (PubsDataSet.Tables("authorsTable"))

4 EL CONTROL DATAGRID
Despus de poblar un dataset, podemos visualizar y modificar datos utilizando el
control DataGrid de Windows Forms. DataGrid muestra datos en una serie de filas y
columnas. El caso ms simple es cuando la rejilla se enlaza con una fuente de datos
que contiene una nica tabla sin relaciones. En ese caso, los datos aparecen simple-
mente en filas y columnas, como en una hoja de clculo.

Si el DataGrid se enlaza a datos con mltiples tablas relacionadas y si se activa la na-


vegacin en la rejilla, ste visualizar expansores en cada fila. Un expansor permite
la navegacin desde una tabla padre a una hija. Haciendo clic en un nodo se mues-
tra la tabla hija y haciendo clic en el botn Atrs muestra la tabla padre original. En
este modo, la rejilla muestra las relaciones jerrquicas entre tablas.

DataGrid puede proporcionar un interfaz de usuario para un dataset, navegacin


entre tablas relacionadas y ricas capacidades de formato y edicin.

La visualizacin y manipulacin de datos son funciones separadas: el control gestio-


na el interfaz de usuario, mientras que las actualizaciones de datos las gestiona la
arquitectura de enlace de datos de Windows Forms y por los proveedores de datos
ADO.NET. Por tanto, mltiples controles enlazados a la misma fuente de datos
permanecern sincronizados.

Para que el control DataGrid funcione, debemos enlazarlo con una fuente de datos
utilizando las propiedades DataSource y DataMember en tiempo de diseo o el
mtodo SetDataBinding en tiempo de ejecucin. Este enlace vincula el DataGrid a
un objeto de fuente de datos instanciado (como un DataSet o DataTable) y el con-
trol DataGrid se actualiza con los resultados de acciones realizadas sobre los datos.

La mayora de acciones especficas de datos no son realizadas por el DataGrid. Se


realiza por medio de la fuente de datos.
Para enlazar el control DataGrid a una nica tabla en el diseador
7. Establecer la propiedad del control DataSource al objeto que contiene los
elementos de datos a los que queremos enlazar.
8. Si la fuente de datos es un dataset, establecer la propiedad DataMember al
nombre de la tabla con la que queremos enlazar.
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
109

Lecturas Glosario Bibliografa


seleccionadas
9. Si la fuente de datos es un dataset o una vista de datos basada en una tabla de
un dataset, aadir cdigo al formulario para poblar el dataset.

Utilizamos enlace simple para vincular un control a un simple campo en un Data-


Recordatorio Anotaciones

Set. Por ejemplo, podramos usar enlace simple para un control TextBox o Label.
Utilizando la propiedad DataBindings de un control con capacidad de vinculacin
a datos, podemos especificar qu DataSet y qu campo enlazar con qu propiedad.

El siguiente ejemplo muestra cmo enlazar datos a un control TextBox:


Dim PubsSQLConn As SqlClient.SqlConnection
PubsSQLConn = New SqlClient.SqlConnection( )
PubsSQLConn.ConnectionString = "Integrated Security=True;" & _
"Data Source=local;Initial Catalog=Pubs;"
PubsSQLConn.Open( )
Dim PubsAdapter As SQLDataAdapter = New SQLDataAdapter _ ("Select
* from Titles", PubsSQLConn)
Dim PubsDataSet As DataSet = New DataSet( )
PubsAdapter.Fill(PubsDataSet)
TextBox1.DataBindings.Add(New Binding("Text", _
PubsDataSet, "Authors.FirstName"))

Utilizamos enlace complejo para enlazar un control a mltiples campos en un Data-


Set. Por ejemplo, utilizamos enlace complejo para un control DataGrid. Utilizando
la propiedad DataSource de estos controles, podemos especificar la tabla a utilizar.
Diagrama Objetivos Inicio

A continuacin te invitamos a disfrutar de la lectura: Representacin de las enti-


dades en el diseo de formularios de rebecca M. Riordan, en l se explica cmo
debemos construir las interfaces de acuerdo al modelo de base de datos.
Desarrollo Actividades Autoevaluacin
de contenidos

LECTURA SELECCIONADAS N 1
Lecturas Glosario Bibliografa
seleccionadas
Representacin de las entidades en el diseo de formularios
La primera decisin que hay que tomar es cmo se proyecta un formulario en el modelo
Entidad Relacin (E/R). Representa este formulario una nica entidad, dos entidades
en una asociacin
Recordatorio Anotaciones uno-a-uno, dos entidades en una asociacin uno-a-muchos o ms de
dos entidades?. Cada una de estas estructuras de estas estructuras de entidad se presta
a determinados tipos de organizacin de formularios, lo que veremos en este captulo.
Existen organizaciones que, en mi experiencia, encajan de forma natural en determina-
dos tipos de estructuras de datos.

Entidades Simples
El tipo ms sencillo de entidad a representar en un formulario es la entidad simple,
que se presenta mediante una nica tabla de la base de datos Si tal entidad participa
en cualquier asociacin, en el formulario no se incluye el lado muchos, ni ningn otro
participante.

Por ejemplo, veamos el diagrama E/R, de la Figura 14-1, que representa la entidad
Cliente sus relaciones.

La entidad Clientes es el lado muchos de todas las relaciones mostradas en el diagrama,


exceptuando la asociacin con la entidad Pedidos. En alguna parte de la aplicacin,
probablemente haya un formulario para mantener la informacin de los clientes. (Esto
es verdad aun cuando todos los datos se han capturado inicialmente como producto de
otras actividades.) Probablemente, no se desee incluir la entidad Pedidos n este formu-
lario Clientes. Los Pedidos son diferentes, desde el punto de vista lgico, y los usuarios
podrn mantenerlos en cualquier otra parte del sistema.
ollo
nidos 110
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas

torio Anotaciones

Figura 14-1. Este diagrama muestras las entidades que estn relacionadas con Clientes

La entidad Clientes, por lo tanto, est en el lado muchos de todas las entidades que
se incluyen en el formulario de mantenimiento, y, por ello, se puede tratar como una
entidad simple. Esto hace ms inmediata la organizacin del formulario. Nos hacen
falta subformularios o controles de red. Slo hay que escoger el control que represente
mejor cada uno de los campos (como se discutir en el captulo siguiente), ponerlos en
el formulario y habremos terminado.

Bueno, no slo hay que ponerlos en el formulario, habr que ordenar todos los con-
troles ingeniosamente, con un margen de siete unidades y cuatro unidades entre cada
control, y con los elementos ms importantes situados en la esquina superior izquierda,
como se describe en Gua de la interfaz Windows para el diseo de Software, de acuer-
do? Pero ya tenemos la idea. No hace falta nada complicado, a menos que dese salirse
fuera del espacio en el formulario.

Pero es complicado salirse del espacio. Tcnicamente, se pueden aadir 754 controles
durante el tiempo de vida de un formulario o informe de Microsoft Access (con los
controles posteriormente eliminados, se puede incrementar el total) y tener un mximo
de 254 controles en un formulario de Microsoft Visual Basic (contando los arrays de
controles como un nico control).

Prcticamente, no hay que pretender que los usuarios tengan que tratar a la vez con ms
de 25 30 controles o grupos de controles. (Ntese que decimos controles o grupos de
controles;: un cuadro de grupo contiene tres o cuatro botones de radio y cuenta slo
como un control lgico.) Por tanto, qu ha que hace si se tiene una entidad simple con
75 atributos? Hay que mostrar a la vez slo una parte de os datos.

La forma ms sencilla de estructurar un formulario que represente una entidad con


demasiados atributos para mostrarlos de forma cmoda es dividir los campos en grupos
o categoras. Yo suelo empezar por aislar los atributos que se usan para identificar con
firmeza a la entidad; de esta forma, no slo consigo los candidatos a ser atributos clave,
sino que tambin, sean cuales sean los atributos descriptivos, el usuario necesitar tener
la certeza de que est trabajando con el ejemplar correcto.

Para una entidad Clientes, por ejemplo, este grupo de atributos de identificacin proba-
blemente incluya los detalles del nombre y la direccin, y puede que el atributo Repre-
sentante de ventas. Para una entidad Productos, podra incluir los atributos Categora
De Producto, Nombre y Descripcin. Este grupo de atributos debe situarse en la parte
superior del formulario y siempre visible.

Los atributos a recordar se dividen en grupos que estn relacionados y que necesitan vi-
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
111

Lecturas Glosario Bibliografa


seleccionadas
sualizarse juntos. Para una entidad Clientes, podran combinarse aquellos atributos que
representan los trminos de ventas - trminos de descuentos y pagos estndar, por ejem-
plo - dentro de un grupo e informacin de contacto - oficina de compras, jefe de ventas
y dems entre otras. Para una entidad Productos, habra que combina las especifica-
Recordatorio Anotaciones
ciones tcnicas en un grupo, y los atributos relacionados al empaquetamiento en otro.

Una vez organizados los atributos en grupos, existen un par de opciones. Podra consi-
derar un control de tabulador en el formulario principal con cada grupo en un tabula-
dor distinto. Esta es la solucin que yo utilizo con mayor frecuencia,. Los controles de
tabulador proporcionan el mayor contexto a los usuarios saben de inmediato que ha
informacin adicional disponible y lo que es esa informacin. Sin embargo, si hay ms
de cinco o seis grupos, el control de tabulador no es operativo.

En este caso, habra que mover algunos o todos los grupos a un formulario auxiliar.
Los formularios auxiliares tambin son tiles, si los grupos individuales contienen ms
atributos de los que encajan con comodidad en un tabulador. Se podra permitir que los
usuarios abriesen los formularios auxiliares desde botones de rdenes del formulario
principal, en una estructura similar a la de centralita. No obstante, con demasiados bo-
tones de rdenes, el formulario se volver, una vez ms, no operativo. Una solucin me-
jor en este caso podra ser tener los formularios auxiliares disponibles desde un men.

Hay que tener cuidado de mantener el contexto a los usuarios cuando se utilizan for-
mularios auxiliares. Los usuarios siempre quieren tener la certeza de a qu ejemplar
de la entidad pertenecen los detalles mostrados. La forma ms sencilla de identificar la
entidad es tener detalles de la pantalla principal repetidos en el formulario auxiliar. En
realidad, no es necesario repetir el grupo completo de identificacin slo la parte del
grupo que enlaza el formulario auxiliar con el formulario principal.

De forma alternativa, se podran hacer modales los formularios auxiliares. Este es uno
de los pocos sitios donde la modalidad se puede justificar en un sistema, ya que ayuda
a mantener el contexto del usuario. Sin embargo, los formularios modales siempre res-
tringen al usuario, que es algo que siempre hay que evitar en la medida de lo posible. Yo
utilizo esta tcnica slo como ltima medida, cuando no existe absolutamente ningn
estado real para incluir los pocos atributos necesarios para mantener el contexto.

Mejor an que utilizar mltiples ventanas auxiliares, en teora se podra mostrar la in-
formacin secundaria en mltiples subformularios (controles Marco, en Visual Basic)
del formulario principal. A m no me gusta demasiado esta solucin, ya que es compli-
cado mantener el contexto del usuario. Hay que proporcionar algn mecanismo para
determinar qu subformulario se mostrar. Si se utiliza un men para controlarlo, no
existe ningn indicativo en el propio formulario de que hay otra informacin disponi-
ble. Si se utiliza algn control en el formulario, puede que un conjunto de botones de
radio, podra no quedar claro a los usuarios por qu cambia la apariencia de su formu-
lario. Yo creo que es preferible utilizar controles de tabulador, que es un mecanismo
establecido, mejor que inventa una nueva solucin.

Asociaciones uno-a-uno
En la mayora de los casos, los formularios que presentan informacin de dos entida-
des que poseen una asociacin uno-a-uno se pueden tratar exactamente igual que los
formularios que representan entidades simples. Se crea una consulta que combina los
campos correspondientes de las dos tablas y, despus, se trata como una entidad simple.
Si se tienen ms atributos de los que se pueden mostrar con comodidad, se aplican las
mismas tcnicas que para las entidades simples.

Si la entidad principal participa en diversas asociaciones uno-a-uno, la naturaleza e la


asociacin determina la disposicin ms natural. Si las asociaciones pueden coexistir, se
pueden tratar como un gran conjunto de registros y mostrar la informacin en un nico
formulario o en mltiples formularios, cono ya discutimos para las entidades simples.

Muchas veces, sin embargo, las asociaciones son mutuamente excluyentes, como cuan-
ollo
nidos 112
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas
do un determinado Producto puede ser una Bebida o un Queso, pero no ambos. Es un
buen momento para utilizar mltiples subformularios oo marcos, proporcionando el es-
tado real suficiente. No es necesario preocuparse de que los usuarios comprendan que
existe ms informacin relacionada disponible en un determinado contexto; no existe
torio Anotaciones
ninguna otra informacin. De hecho, utilizar un control tabulador en esta situacin
podra ser contraproducente.

Si existen problemas con el estado real, ser necesario utilizar una de las tcnicas para el
agrupamiento y muestra de las que henos hablado para las entidades simples. Si los con-
troles representan los atributos de la subclase situada en el tabulador, es mejor intentar
encontrar algn trmino genrico para la etiqueta del tabulador. Puede es confuso para
los usuarios s la etiqueta del tabulador (o la etiqueta del botn de orden) cambia cuan-
do se desplazan por la tabla.

Por la misma razn, si los usuarios pueden desplazarse por el conjunto de registros prin-
cipal, yo intento evitar tener controles que muestren los atributos de la entidad super-
clase en el primer tabulador del control tabulador. Debido a que los controles de cada
subclase son distintos, la apariencia del formulario cambiar cuando los usuarios se
desplacen por los registros. Manteniendo los atributos de subclase fuera del primer ta-
bulador, se puede mantener la apariencia estable, y se pueden proporcionar a propsi-
to, algunas mejoras de rendimiento al no recalcular la apariencia de forma innecesaria.

Asociaciones uno-a-muchos
Muchos formularios necesitan mostrar entidades que estn enlazadas mediante asocia-
ciones uno-a-muchos. Determinar la mejor organizacin de estos formularios es sen-
cillo, slo hay que recordar que el formulario necesita mostrar una asociacin uno-
a-muchos, no muchas asociaciones muchos-a-uno. Cuando se modelan asociaciones
complejas, menudo es ms sencillo pensar en trminos de registros que de ejemplares
de entidades. Por lo que, en este caso, hay que tener la certeza de que el registro de
un lado tiene que controlar la apariencia de registros del otro lado y no en sentido
contrario. Si se intenta controlar el registro de un lado de uno desde un registro el lado
muchos, nos meteremos (y el sistemas y los usuarios) en un lo.

Habiendo establecido que el registro del lado de uno controla la apariencia, es necesa-
rio decidir cmo se van a mostrar los registros del lado muchos. Existen dos opciones:
se pueden mostrar todos de una vez o de uno en uno.

La eleccin est determinada, en gran medida, por la cantidad de detalles que los usua-
rios necesiten ver de cada uno de los registros del lado muchos. Si es necesario mostrar
slo unos pocos campos, por o general se podrn mostrar todos a la vez. El formulario
mostrado en la Figura 14-2, de la base de datos ejemplo Neptuno, utiliza un subfor-
mulario para mostrar todos los campos de cada uno de los registros del lado muchos.

Figura 14-2. Este formulario muestra los registros del lado muchos en la asociacin utilizando un
subformulario de vista continua.
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
113

Lecturas Glosario Bibliografa


seleccionadas
La barra de desplazamiento vertical del subformulario indica que no estn visibles todos
los registros al mismo tiempo. Para propsitos de diseo, todava cuenta como todos de
una vez. E el prximo captulo veremos algunas formas de mostrar mltiples registros.
Yo prefiero la organizacin de formulario todos a la vez, ya que proporciona el mayor
Recordatorio Anotaciones

contexto a los usuarios. Siempre se puede proporcionar un mecanismo para mostrar


detalles adicionales en un formulario auxiliar, si se presentan problemas de estado real.
Pero este estilo de organizacin no siempre es apropiado o posible, y podra ser nece-
sario mostrar los registros del lado muchos de uno en uno. Aqu, existen dos aspectos
que hay que plantearse: dejarle claro a los usuarios que existen mltiples registros y
proporcionar un mecanismo para moverse entre registros.
Diagrama Objetivos Inicio

ACTIVIDAD N 1:
Desarrollo Actividades Autoevaluacin
de contenidos
Esta actividad puede consultarla en su aula virtual.

Lecturas
TEMA 3: Creacin de proyectos de acceso a datos.
Glosario Bibliografa
seleccionadas
A continuacin se desarrolla un proyecto de acceso a datos para una empresa ficticia,
para ello se plantea el siguiente escenario.

Recordatorio Usted
Anotacioneses un desarrollador de aplicaciones de una compaa comercial llamada Nor-

thwind Traders. El departamento en el que trabaja est desarrollando una aplicacin de


rdenes de compra que utilizar la fuerza de ventas de Northwind Traders. Usted es el
responsable de completar el cdigo de acceso a datos que utilizar objetos ADO.NET
para acceder a la base de datos Northwind. La mayor parte del cdigo ha sido escrito
por otros compaeros, y usted es el responsable de crear el cdigo que poblar y actuali-
zar las tablas Order y Order Details. Usted tambin es responsable de escribir el cdigo
de enlace a datos en el control OrderItemControl.

Las tablas Order y Order Details tienen una relacin de uno a muchos. Para escribir el
cdigo que puebla y actualiza estas tablas, debemos entender la relacin entre las tablas
y los campos relacionados. La siguiente ilustracin representa las relaciones y campos
de las tablas Order y Order Details.

1 GENERAR Y POBLAR DATASETS


A continuacin, crearemos un SQLDataAdapter utilizando el Asistente para la
configuracin del adaptador de datos y poblaremos un dataset con datos de una
base de datos en tiempo de ejecucin. Utilizaremos el Diseador de componen-
tes para agregar y configurar objetos ADO.NET. Podemos utilizar el Diseador de
componentes para agregar subcomponentes a una clase, configurarlos y codificar
sus eventos.

Empezaremos a construir las caractersticas de acceso a datos en la aplicacin de


rdenes de compra. El equipo de desarrollo ha generado parte de un cdigo de
acceso a datos preliminar que debemos completar. Nuestra responsabilidad es crear
un DataAdapter que pueda acceder y actualizar la tabla Order de la base de datos
de Northwind.

La aplicacin utiliza informacin sobre los empleados para cargar y crear entradas
de pedidos. Cada pedido se asocia a un nico empleado. La tabla Orders incluye
una columna EmployeeID que se vincula a la columna EmployeeID de la tabla Em-
ployees. El DataAdapter que creemos utilizar el valor de la variable employeeID
para determinar qu filas devolver. Decidimos utilizar el Asistente para la configura-
cin del adaptador de datos para configurar el comando SELECT del DataAdapter
y permitir que genere el comando Actualizar.

El docente proporcionar archivos de inicio asociados a este ejercicio.


Procedimiento para la implementacin
1. Abrir Visual Studio .NET, y abrir el archivo PurchaseOrderApplication.sln.
ollo
nidos 114
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas
Solicite al docente los archivos de inicio.
2. Aadir un control SQLDataAdapter a la clase OrderApplicationData. En el
Asistente para la configuracin del adaptador de datos, utilizar la informa-
torio Anotaciones cin NorthwindConnection y crear la siguiente instruccin Select de SQL:
SELECT * FROM Orders WHERE (EmployeeID = @EmployeeID)

Asegurarse de que el asistente ha creado los comandos Insert, Update y


Delete.
Cambiar el nombre del nuevo SQLDataAdapter por OrdersDataAdapter.
3. Utilizar la Lista de tareas para localizar la seccin de cdigo 'TODO: 1', y crear
una variable local para guardar una instancia de NorthwindDataSet y asignar-
le el nombre tempDataSet.
4. Utilizar la Lista de tareas para localizar la seccin de cdigo 'TODO: 2', y agre-
gar @employeeID (el global employee ID) a la coleccin Parameters de la
propiedad SelectCommand de OrdersDataAdapter y OrderDetailsDataAdap-
ter.
5. Utilizar la Lista de tareas para localizar la seccin de cdigo 'TODO: 3', e in-
vocar el mtodo Fill de OrdersDataAdapter y OrderDetailsDataAdapter para
rellenar las tablas Orders y OrderDetails de tempDataSet.
6. Colocar un punto de interrupcin al principio del procedimiento RefreshLo-
calData. Compilar y ejecutar la aplicacin. Desde el men Data, hacer clic en
Refresh Data, y avance por cada lnea de cdigo. Localizar y revisar el con-
tenido del archivo NorthwindData.XML, que se encuentra en la versin ms
reciente de la carpeta C:\Documents and Settings\All Users\ Application Data\
Northwind Traders\ PurchaseOrder\.

2 MODIFICAR UN DATASET
A continuacinejercicio, examinaremos el cdigo que crea objetos de tablas de
datos, insertaremos nuevas filas de datos y abriremos la informacin a un dataset
existente. Continuacin Considerando el siguiente escenario:
La tabla Orders utiliza una columna denominada OrderID que se incrementa auto-
mticamente para generar claves primarias cuando se crean nuevas filas en la base
de datos. Los datasets tambin generan este valor cuando se inserta una nueva fila
en la tabla Orders. La aplicacin de rdenes de compra utiliza un dataset global
denominado pendingOrdersData para almacenar todos los pedidos hasta que se
enven a la base de datos. Cada pedido se asocia a uno o ms detalles del pedido.
La tabla Orders incluye una columna OrderID que equivale a la columna OrderID
de la tabla Order Details.

Uno de sus colaboradores ha escrito un procedimiento denominado SaveOrders


que crea nuevas filas en la tabla Orders, captura el valor del OrderID generado por
el dataset y lo utiliza para crear filas en la tabla Order Details. Una vez que todas las
filas de la tabla Order Details se han creado, el procedimiento almacena la informa-
cin de rdenes en un archivo XML denominado PendingOrders.XML. Nosotros
decidimos revisar el cdigo ms estrechamente para entender cmo funciona.

Procedimiento para la implementacin


1. Abrir Visual Studio .NET, y abrir el archivo PurchaseOrderApplication.sln.
2. Colocar un punto de interrupcin al principio del procedimiento SaveOr-
ders en MainForm. Compilar y ejecutar la aplicacin. Desde el men Datos,
hacer clic en Refrescar datos. Para crear diferentes elementos del pedido,
hacer clic en el botn New Order Item y clic en el botn Save Order. Avance
por cada lnea de cdigo pulsando F10 y examine el aspecto del cdigo.
Cuando examine el cdigo, busque lo siguiente:
El procedimiento SaveOrders crea una nueva fila en la tabla Orders y asigna
las columnas a valores de los controles de MainForm. Cuando la fila se
aade a la tabla, el OrderID de incremento automtico generado por el
dataset se almacena en una variable denominada clientOrderID.
El procedimiento SaveOrders crea filas en la tabla Order Details y utiliza
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
115

Lecturas Glosario Bibliografa


seleccionadas
el valor de clientOrderID para poblar la columna OrderID de cada fila
insertada en la tabla Order Details.

1 ACTUALIZAR UN DATASET A UNA FUENTE DE DATOS Recordatorio Anotaciones

A continuacin, crearemos una relacin entre dos tablas para crear un dataset ti-
pado y para actualizar los cambios desde el dataset a un DataSource. Veamos el
siguiente escenario:
En la base de datos Northwind, cada pedido est asociado a uno o ms detalles de
pedido. La tabla Orders incluye una columna OrderID que equivale a la columna
OrderID de la tabla Order Details. Cuando creamos una nueva fila en la tabla Or-
ders, el procedimiento SaveOrders garantiza que todas las filas secundarias de la
tabla Order Details tienen el mismo OrderID que las principales de la tabla Orders.
Cuando actualizamos el dataset a una fuente de datos, en primer lugar debe actuali-
zarse la tabla Orders y, a continuacin, la tabla Order Details. Sin embargo, cuando
actualizamos una fila en la tabla Orders, la base de datos generar un nuevo Orde-
rID que puede no concordar con los valores secundarios la tabla Order Details. Esto
provoca un error cuando intentamos actualizar la tabla Order Details.

Una forma de solucionar este problema es escribir cdigo que utilice eventos del
dataset para capturar el nuevo OrderID generado por la base de datos y asignarle
todas las filas secundarias de la tabla Order Details. Sin embargo, hay otras opcio-
nes disponibles cuando se utilizan datasets tipados y DataAdapters para cada tabla
de una base de datos. En lugar de escribir cdigo para eventos del dataset, pode-
mos utilizar la opcin Actualizar DataSet del Asistente para la configuracin del
adaptador de datos. Con esta opcin habilitada, el asistente agrega una instruccin
SELECT tras las instrucciones Insert y Update para recuperar la columna Identity
generada por la base de datos.

Cuando creamos una relacin entre tablas utilizando el diseador XML, podemos
escoger cmo se gestionan las relaciones de las tablas cuando se modifica la tabla
principal. Por ejemplo, si establecemos Regla de borrado en Cascada (valor prede-
terminado), y eliminamos filas de una tabla principal, todas las filas relacionadas
de la tabla secundaria tambin se eliminan. Cuando creamos una relacin entre las
tablas Orders y Order Details, es importante establecer el valor de la opcin Regla
de borrado en Cascada (valor predeterminado) para que los cambios realizados a
una tabla principal se transmitan en cascada a las tablas secundarias.

Cuando actualizamos una fila de la tabla Orders, el DataAdapter devuelve el valor


OrderID generado por la base de datos y cambia el valor de la tabla Orders del da-
taset. Con la regla de actualizacin en cascada, todas las filas secundarias de la tabla
Order Details del dataset se cambiarn automticamente con el nuevo OrderID de
la principal. Ahora, cuando actualizamos la tabla Order Details a la base de datos,
tendr el mismo OrderID que la principal.
El docente le proporcionar los archivos de inicio asociados a este ejercicio.

Procedimiento para la implementacin


1. Abrir Visual Studio .NET, y abrir el archivo PurchaseOrderApplication.sln.
2. Utilizar el Diseador XML para crear una relacin entre las tablas Orders y
Order Details del archivo NorthwindDataSet.xsd.
3. Utilizar la Lista de tareas para localizar la seccin de cdigo TODO: 1 en
la vista de cdigo de OrderApplicationDataClass.vb y actualizar la base de
datos utilizando el mtodo Update de OrdersDataAdapter y OrderDetailsDa-
taAdapter.
La regla de actualizacin en cascada impuesta por la relacin entre las dos
tablas debera recuperar automticamente el OrderID generado por el servi-
dor. Cuando se crea una fila Order, se asigna a filas relacionadas de la tabla
Order Details en el equipo cliente.
ollo
nidos 116
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas
1 ENLAZAR Y FORMATEAR DATOS EN CONTROLES
En este ejercicio, enlazar datos a controles y formatear los datos utilizando los
eventos de la clase Binding. Revisemos el escenario
torio Anotaciones
El control OrderItemControl est bajo desarrollo y requiere cdigo para enlazar los
controles constituyentes a datos desde la tabla Products. Un mtodo en el control
denominado GetProductData ha sido creado y acepta un parmetro denominado
productsTable que contiene datos de la tabla Products. Necesitamos enlazar datos
desde esta tabla para los controles constituyentes. Tambin necesitamos convertir
los valores en la columna Price a formato monetario cuando los enlazamos al con-
trol UnitPriceTextBox.

Existen archivos de inicio asociados a este ejercicio, los cules los proporcionar el
docente.

Completemos lo siguiente:
1. Abrir Visual Studio .NET y el archivo PurchaseOrderApplication.sln.
2. Utilizar la Lista de tareas para localizar la seccin de cdigo TODO: 1 en la
vista de cdigo de OrderItemControl.vb, y asignar DataSource de Product-
NameComboBox a la DataTable pasada al procedimiento GetProductData.
Asignar DisplayMember y ValueMember de ProductNameComboBox a las
columnas ProductName y ProductID respectivamente.
3. Utilizar la Lista de tareas para localizar la seccin de cdigo 'TODO: 2', y
declarar un objeto Binding, y utilizarlo para enlazar la propiedad Text de
UnitPriceTextBox a la columna UnitPrice de la DataTable pasada al procedi-
miento GetProductData.
4. Utilizar la Lista de tareas para localizar la seccin de cdigo 'TODO: 3', y crear
un procedimiento de evento denominado DecimalToCurrency que convierte
el argumento de evento ConvertEventArgs a un formato monetario.
5. Utilizar la Lista de tareas para localizar la seccin de cdigo 'TODO: 4', y crear
un procesador de eventos para el evento Format del objeto Binding creado en
el paso 4.
6. Compilar y ejecutar la aplicacin. En la barra de herramientas, hacer clic en
el botn Actualizar, y seleccionar un nombre de empleado. Para poblar el
control OrderItemControl, hacer clic en el botn New Order Item. Navegar
a travs de los productos utilizando el control ProductNameComboBox.
Diagrama Objetivos Inicio

A continuacin te presentamos la lectura La interfaz como mediadora extrado


del libro de Francisco Charte, en ste se explica la importancia del desarrollo de
componentes con Visual Basic.
Desarrollo Actividades Autoevaluacin
de contenidos

LECTURA SELECCIONADAS N 2
Lecturas Glosario Bibliografa
seleccionadas
La Interfaz como mediadora 9
Despus de completar el anlisis de tareas descrito anteriormente, debera tenerse una
clara idea de lo que el sistema que se est diseando necesita hacer.
Recordatorio Anotaciones

Empezaremos este captulo viendo soluciones generales al diseo de interfaces y los


distintos modelos en los que hay que pensar. La cantidad de informacin que se puede
proporcionar aqu, por necesidad, es limitada.

Interfaces eficientes
En la mente de los usuarios, la interfaz de usuario de un sistema es el sistema, la mate-
ria restante se puede ignorar felizmente. El diseo de la interfaz de usuario es, por lo
tanto crucial para acertar o errar en el proyecto. Se pone bien, y los usuarios olvidarn
infelicidades ocasionales de la implementacin. Se pone mal, y dar igual lo eficiente
que sea el cdigo.

9 Rebecca M. Riordan. Diseo de Base de datos relacionales con Access y SQL Server. p 203-209.
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
117

Lecturas Glosario Bibliografa


seleccionadas
La irona aqu es que si se pone bien, nadie lo notar. En realidad, las interfaces ele-
gantes son invisibles. Incluso si se pone mal, nadie podra darse cuenta. Las interfaces
de muchos sistemas de computadoras, en particular sistemas de bases de datos, son tan
complicadas que el sistema slo ser una parte ms de mediocridad; como la genteRecordatorio
de Anotaciones
sistemas de computadoras ligeramente ofensivas esperan que sea.

Por lo que si nadie va a darse cuenta, por qu hermano?, bueno, por qu no?. Des-
pus de todo, es el trabajo. Con riesgo de sonar como una madre, si se va a disear por
completo un sistema de computadora, no tendr sentido hacerlo todo lo bien que se
pueda?. El diseo de interfaces eficientes requiere ms trabajo que slo pegarse con
una herramienta sobre bases de datos. Las interfaces eficientes tambin necesitan ms
trabajo para implementarlas, aunque este no es necesariamente el caso. Adems, la
liquidacin puede ser enorme, y no todos ellos perteneces a la categora la virtud es
la propia recompensa. Una interfaz de usuario eficiente minimiza el tiempo que los
usuarios necesitan para aprender e implementar el sistema. Una vez que el sistema est
implementado, los beneficios de productividad son mayores si los usuarios no tienen
que luchar para vencerse a s mismos. La buena suerte es que estos temas se plantearon
en los objetivos del proyecto. En realidad impactan sobre la famosa lnea base.

Las interfaces eficientes que encajan mucho con las expectativas de los usuarios y con
los procesos de trabajo tambin minimizan la necesidad de documentacin externa,
que siempre es cara. Y aunque los usuarios no sean conscientes ni se den cuenta de lo
maravillosa que es la interfaz de usuario, en realidad se darn cuenta de que el sistema
parece que funciona mejor que el diseado por la Compaa Los Usuarios Son Mal-
vados. Eso puede afectar a la lnea base de la prxima vez que aparezca un proyecto o
promocin.

Entonces, qu forma parte de una interfaz eficiente?. A mi entender, es lo que ayuda al


usuario a realizar sus tareas, y si no, le saca de su camino. Una interfaz eficiente no im-
pone requisitos a los usuarios. Nunca les fuerza a seguir sus reglas; juega con las reglas
del usuario. Una interfaz eficiente, para ser usada, no fuerza a los usuarios a aprender
una serie de temas que no les interesan. Y, finalmente, no se comporta de forma ines-
perada.

Veremos estos tres principios en este captulo, pero primero echaremos un breve vista-
zo a unos pocos modelos que resulta til considerar cuando se piensa en el diseo de
interfaces de usuario.

Modelos de Interfaz
Alan Cooper, en su esplndido libro About Face: Essentials of User Interface Design,
describe la forma en la que los usuarios ven los sistemas (y la forma en la que los sistemas
ven a los usuarios) en trminos de tres modelos: el modelo mental, el modelo manifies-
to y el modelo de implementacin. Estas tres formas distintas de ver los sistemas son
herramientas tiles para tomar decisiones sobre el diseo de la interfaz de usuario de
la aplicacin.

El modelo mental del usuario describe lo que el usuario piensa que est ocurriendo.
Esto a menudo, no coincide con lo que en realidad est pasando, pero est bien. Yo
tengo una vaga idea de que mi cuerpo quema los alimentos para generar energa de
la misma forma que mi automvil quema gasolina. Yo s que el proceso, en realidad, es
bastante diferente, pero no me importa. Yo pongo gasolina en mi coche para mantener-
lo andando, y comida en mi cuerpo para mantenerlo funcionando. Mi modelo mental
se adapta perfectamente para conseguir cosas.

Lo mismo pasa en los sistemas de computadora. Cuando se utiliza una mquina de


escribir o un procesador de textos, si se pulsa una tecla de carcter aparece un carcter.
El modelo mental es lo mismo. Lo que est ocurriendo realmente, por supuesto, es
bastante diferente. Lo que ocurre en la realidad es el modelo de implementacin. Todo
lo que ocurra bajo los escenarios como poner palancas o ejecutar cdigo es parte de la
implementacin. A los usuarios no les importa, y no se les debe forzar a ello.
ollo
nidos 118
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas
La interfaz de usuario es el modelo manifiesto que se sita entre el modelo mental y el
modelo de implementacin del desarrollador. Es decir, si se desea, el modelo del pro-
ceso que el sistema revela (manifiesta) al usuario. El objetivo al disear una interfaz es
ocultar todos los detalles posibles del modelo de implementacin. El sistema ideal enca-
torio Anotaciones
ja perfectamente con el modelo mental de usuario. A menudo, no es posible encajar el
modelo mental del proceso exactamente. Pero cuanto ms cerca nos quedemos, mejor.

Si se est suficientemente interesado en las computadoras como para estudiar esta ca-
rrera, el modelo mental no encajar con el modelo mental de los usuarios. Mi modelo
mental de utilizar un procesador de textos es que yo pulso una tecla de carcter u se
almacena un cdigo ASCII en algn sitio de la RAM. Es muy cercano al modelo de im-
plementacin, pero no se parece a lo que piensa un trabajador medio de oficina.

Este es el gran peligro del diseo de interfaces; an cuando no se est directamente in-
volucrado en la implementacin, casi seguro que sabr algo sobre ello. O se tiene el don
de olvidar temporalmente los detalles de implementacin ose pregunta a un usuario a
sueldo para que proporcione el modelo mental.

La mejor costumbre es llevar el uso formal de pruebas utilizando un prototipo del siste-
ma, aunque es posible en raras ocasiones, cualquier tipo de investigacin de uso merece
la pena. Si se ha creado un prototipo, hay que encontrar unos pocos usuarios y dejarles
jugar con l. Hay que preguntarles lo que piensan que va bien. Se obtendrn algunas
sorpresas. Sino se ha creado un prototipo, se puede preguntar sobre sistemas similares o
incluso utilizar una maqueta en papel. Yo he tenido una gran cantidad de experiencias
con esta ltima tcnica; sin embargo, he encontrado que los usuarios se ven confusos
entre una pantalla interactiva y un informe cuando ambos se presentan en papel.

Cuando se haya recopilado tanta informacin como se pueda, hay que pensar cundo el
modelo de implementacin (lo que realmente se va a hacer) se entremete en el modelo
mental de usuario y despus, resolver estas reas. Se est utilizando la terminologa
correcta?. Siempre hay que utilizar las mismas palabras que el usuario. Se est forzando
a los usuarios a pensar en edicin de registros cuando lo que ellos quieren pensar es
cambio de direcciones?. Esto podra ser un problema de terminologa o un problema
de estructura de sistema, lo que se ver ms adelante.

Niveles de usuario
No puedo imaginarme que nadie se proponga intencionadamente crear un sistema que
no sea amigable al usuario. Puede que el uso no sea una prioridad alta, pero nadie se
propone crear un sistema que es antagnico al usuario. El problema es que amigable al
usuario es una de esas bonitas expresiones bien intencionadas que no significan dema-
siado, por lo que nos dejamos llevar para encontrar una definicin ad hoc.

Dos definiciones de amigable al usuario que se suelen proponer son fcil de apren-
der y fcil de usar. Si nos ponemos en el momento de plantearnos la cuestin de lo
que significa exactamente fcil, tendremos que preguntarnos a nosotros mismos: fcil,
para quien?. El sistema que es fcil de aprender para un principiante, no necesaria-
mente es fcil de usar para un experto. La mejor solucin es considerar las necesidades
de cada nivel de usuario y acomodar cada uno con las distintas facetas de la interfaz.

Principiante
Todo el mundo es principiante en algn punto. Muy pocas personas recuerdan ese ca-
mino o pasaron directamente del estado de novato a intermedio o descartaron por
completo el sistema a favor de algn otro-. Por esta razn, hay que ser cuidadosos en dar
soporte para que los principiantes lleguen a ser usuarios expertos.

Los principiantes necesitan saber lo que hace el sistema antes de empezar a aprender
cmo usarlo. La mejor forma de presentar esta informacin es sacarla del sistema prin-
cipal. Para sistemas simples, un cuadro de dilogo de introduccin que describa el siste-
ma puede ser suficiente. (Slo hay que asegurarse de que siempre se incluya un medio
para desactivar definitivamente el cuadro de dilogo). Para sistemas ms complejos, una
visita guiada puede ser apropiada.
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
119

Lecturas Glosario Bibliografa


seleccionadas

La ayuda en lnea no es una buena opcin para los principiantes. Ellos pueden no saber
si existe o, si lo saben, no saben cmo usarla. Yo he encontrado acertada la utilizacin
de una gua de usuario en lnea; sin embargo, incluyendo un enlace desde el cuadro Recordatorio Anotaciones

de dilogo de introduccin y desde el men Ayuda. Para acertar con los principiantes,
estas guas deben estar orientadas a las tareas. Los principiantes no desean saber lo que
significa elemento de men; ellos quieren saber cmo crear una factura.

Intermedio
Para la mayora de los sistemas, casi todos los usuarios caen en la categora intermedia.
Los usuarios intermedios saben lo que hace el sistema; pero, a menudo, olvidan los deta-
lles del cmo. Este es el grupo al que hay que darle soporte directamente en la interfaz
de usuario. Afortunadamente, la interfaz de Microsoft Windows proporciona una gran
cantidad de herramientas para ayudar a estos usuarios.

Un sistema de mens bien diseado es una de las mejores herramientas para recordar a
los usuarios intermedios las posibilidades del sistema. Un vistazo rpido a los elementos
de men disponibles les recordar inmediatamente las funciones disponibles y, al mis-
mo tiempo, les permitir comenzar la tarea correspondiente.

Un excelente segundo nivel de soporte para los usuarios intermedios es la ayuda en


lnea. En este contexto, no obstante, mencionaremos que la mayora de los usuarios in-
termedios utilizarn el ndice como mecanismo de acceso a la clave principal. El ndice,
por lo tanto, debe ser tan completo como se pueda hacer.

Experto
Los usuarios expertos saben qu hacer y cmo hacerlo. Ellos estn interesados princi-
palmente en hacerlo rpidamente. Cuantos ms accesos directos se puedan crear en el
sistema, ms feliz estar este grupo de usuarios. En mi experiencia, los usuarios expertos
tienden a estar orientado al teclado, por lo que, si se est dando soporte a este grupo,
hay que asegurarse de proporcionar una forma de moverse por el sistema utilizando el
teclado.

Los usuarios expertos tambin aprecian la posibilidad de personalizar su entorno de


trabajo. Sin embargo, proporcionar esta funcionalidad puede ser un ejercicio caro, por
lo que habr que evaluar cuidadosamente los beneficios antes de incluirlo. Si se deci-
de incluir ventanas en la pantalla, hay que asegurarse de mantener los cambios entre
sesiones. Nada es tan irritante como tener que reordenar todo cada vez que se cargue
un programa.

Cmo fijar la posicin del usuario


Justo debajo de amigable al usuario, en el mundo de la bonita pero poco utilizada
terminologa, est la expresin centrado en el usuario. Qu significa?. Bueno, a di-
ferencia de amigable al usuario, sta tiene un sentido, aunque sea un tanto vago. Un
sistema est centrado en el usuario si siempre responde a las peticiones del usuario y
nunca impone un determinado mtodo de trabajo.

A veces, la forma ms sencilla de entender este principio es mediante un ejemplo. Una


de mis experiencias, un desarrollador por quien yo tengo un profundo respeto, des-
cribi su mtodo para asegurar que los usuarios introdujesen los datos en el orden
ms conveniente para el sistema. Bloque todos los controles del formulario excepto
el primero; una vez introducidos los datos en ese control, desbloqueaba el siguiente y
despus el siguiente, y as sucesivamente.

Esta tcnica no slo est todo lo lejos posible del centrado en el usuario, sino que tam-
poco va a funcionar. Los usuarios, a menudo, tienen buenas razones para introducir
datos en un determinado orden introducir los datos en ese momento podra no estar
disponible o no ser conveniente-. Si se les fuerza a hacer algo, lo harn. Introducirn
cualquier vieja tontera que el sistema acepte. Por lo que se les ha ofendido, se les ha
impuesto y, definitivamente, no se ha conseguido nada.
ollo
nidos 120
Actividades Autoevaluacin UNIDAD III: ACCESO A DATOS

as Glosario Bibliografa
nadas
Veremos en detalle este tema ms adelante, cuando discutamos la integridad de los
datos. Forzar artificialmente la integridad de los datos es la principal forma de que los
sistemas de bases de datos intenten controlas a los usuarios. La segunda forma es ser
obsesivamente modales. Un modo es una condicin de sistema que limita la interaccin
torio Anotaciones
del usuario. Los modos clsicos en un sistema de bases de datos son agregar, editar y
ver. Un sistema que necesita que el usuario vuelva al men principal antes de editar un
registro que acaba de estar mirando es ridculamente ineficiente. Exigir que se escoja
un elemento del men o se pulse un botn antes de la edicin no es mucho mejor.

Desafortunadamente, muchos diseadores utilizan este tipo de modalidad como tema


de curso. Puede que en un errneo intento de proteger a sus usuarios de cambios acci-
dentales o porque el uso de los elementos de men Agregar, Editar y Ver era frecuente
hace veinte aos, ellos perpetan el paradigma de los entornos Windows donde no es
apropiado. Yo recomiendo enrgicamente que se suponga que los usuarios saben lo que
estn haciendo. Si desean cambiar un registro, hay que darles redes de seguridad. Ni-
veles mltiples de deshacer son fciles de implementar tanto en Microsoft Access como
en Microsoft Visual Basic .NET. Incluso se podra incluir una opcin del men Volver
al ltimo estado guardado, para permitir que los usuarios descarten todos los cambios
sobre el registro actual.

A m no me gusta pedir a los usuarios que confirmen los cambios antes de guardar
un registro, aunque en algunas situaciones podra estar justificado. La idea general de
guardar es extraa para la mayora de los usuarios. Recurdese el modelo mental de
los usuarios. Ellos han realizado un cambio, y ahora les estamos preguntado si desean
realizar el cambio, lo que es bastante confuso. Una vez que identifiquen lo que significa,
la mayora de las personas cogern la costumbre de elegir Aceptar cada vez que apa-
rezca el cuadro de dilogo de confirmacin, por lo que el cuadro de dilogo no tendr
demasiado sentido.

Los mensajes de confirmacin de este tipo son otro ejemplo de imposiciones al usuario
sin conseguir demasiado. En los pocos casos que he implementado mensajes de confir-
macin (normalmente a peticin del cliente), he proporcionado un mecanismo para
desactivarlos (generalmente en el cuadro de dilogo Propiedades).
Diagrama Objetivos Inicio

ACTIVIDAD N 2:
Desarrollo Actividades Autoevaluacin
de contenidos
Puede consultar esta actividad en su aula virtual
Diagrama Objetivos Inicio

Lecturas Glosario Bibliografa


seleccionadas
Tarea Acadmica N2
Desarrollo Actividades Autoevaluacin
de contenidos
Puede consultar esta actividad en su aula virtual
Diagrama Objetivos Inicio
Recordatorio Anotaciones

Lecturas Glosario Bibliografa


seleccionadas
AUTOEVALUACIN IV
Desarrollo Actividades Autoevaluacin
de contenidos
A continuacin se presentan algunas preguntas con varias alternativas, slo una es la
respuesta, marque la que considere correcta.
Recordatorio Anotaciones
1. La clase DataReader permite:
Lecturas
seleccionadas
Glosario
a) Exponer los datos secuenciales y solo lectura.
Bibliografa

b) Exponer los datos de avance y retroceso.


c) Exponer los datos para su modificacin.
Recordatorio Anotaciones
d) Exponer los datos para ordenarlos y filtrarlos.
2. Qu componentes de software se encarga de compilar el cdigo fuente de una
aplicacin a cdigo MSIL?
a) Cada uno de los distintos compiladores de los lenguajes .NET
b) El CLR
c) El Compilador JIT
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
121

Lecturas Glosario Bibliografa


seleccionadas
d) Compiladores JIT incluidos en el CLR.

3. Para la ejecucin de un procedimiento almacenado desde Microsoft Visual Basic


2012, es necesario utilizar una clase: Recordatorio Anotaciones

a) SqlDataAdapter
b) DataSet
c) SQLDataReader
d) SQLCommand

4. Puede una aplicacin .NET tener componentes escritos en distintos lenguajes de


programacin de alto nivel?
a) Si, una aplicacin .NET puede tener componentes escritos en cualquier lengua-
je de programacin de alto nivel
b) Si, siempre que el lenguaje de alto nivel se adapte a las reglas de las especifica-
ciones CTS y CLS
c) No, una aplicacin .NET debe estar escrita en un nico lenguaje
d) Si, pero con un lmite de dos lenguajes diferentes por aplicacin

5. Identifique la sintaxis correcta en el uso de la clase SQLDataAdapter


a) Dim ada as SqlDataAdapter(SentenciaSQL,Conexin)
b) Dim ada as new SqlDataAdapter(Conexin,SentenciaSQL)
c) Dim ada as new SqlDataAdapter(SentenciaSQL,Conexin)
d) Dim ada new SqlDataAdapter(Conexin,SentenciaSQL)

6. Cules de los siguientes NO es componente de la plataforma .NET?


a) Entorno de Ejecucin
b) Sistemas Operativos
c) Servidores
d) Smart Clients

7. La clase SQLConnection permite:


a) La ejecucin de sentencias SQL en la Base de datos.
b) La conexin a una base de datos de SQL Server.
c) La conexin a cualquier fuente de datos.
d) La ejecucin de procedimientos almacenados.

8. Cul de las siguientes no es una clase de ADO.NET?


a) SqlDataReader
b) SqlDataAdapter
c) SqlDataSet
d) SqlCommand

9. Para qu tipos de escenarios de acceso a bases de datos es utilizado el DataSet?


a) Para escenarios desconectados
b) Para escenarios conectados
c) Para escenarios mixtos.
d) Para ninguno
10. En la implementacin de un proyecto de base de datos, Qu es un DataSet?
a) Un cach de memora interna de datos.
b) La representacin de entidades en el lado del cliente.
c) Un contenedor de tablas de la base de datos.
d) Ninguno es correcto.
ollo
nidos 122
Actividades Autoevaluacin Diagrama Objetivos
UNIDAD
Inicio
III: ACCESO A DATOS

Desarrollo Actividades Autoevaluacin


as Glosario Bibliografa de contenidos
nadas

BIBLIOGRAFIA DE LA UNIDAD IV:


Lecturas Glosario Bibliografa
seleccionadas
torio Anotaciones Riordan, Rebecca M. Diseo de Bases de datos relacionales con Access y SQL Server.
Espaa: McGRAW-HILL INTERAMERICANA S.A.; 2004.
Delgado, Albert. Microsoft SQL Server 2012. Madrid: Pearson Education S.A.; 2011.
Recordatorio Anotaciones Ocharte Ojeda, Francisco. Programacin con Visual Basic 2012. Madrid: Anaya Multi-
media; 2011.

GLOSARIO
Administracin de Base de Datos Relacional: Tcnica de admistracin de bases de datos
en la que la informacin se guarda en tablas de datos bidimensionales. El programa que
funciona con dos tablas de datos al mismo tiempo, relaciona la informacin mediante
vinculaciones establecidas por una columna o campos comunes.
Acceso: La manera en la cual los archivos o conjunto de datos son referenciados por la
computadora.
Base de Datos: Es una serie de datos organizados y relacionados entre s, los cuales son
recolectados y explotados por los Sistemas de Informacin de una empresa o negocio
en particular.
Buscadores: O tambin llamados motores de bsqueda, son herramientas que permi-
ten clasificar la informacin que existe en la red y hacerla localizable en poco tiempo
segn las preferencias del usuario.
Campo: Unidad bsica de una base de datos, un campo puede ser, por ejemplo, el
nombre de una persona. Los nombres de los campos, no pueden empezar con espacios
en blanco y caracteres especiales. No pueden llevar puntos, ni signos de exclamacin o
corchetes. Si pueden tener espacios en blanco en el medio.
Datos estadsticos: estos almacenan informacin estadstica sobre los datos en la base
de datos.
El DBMS: es un conjunto de programas que se encargan de manejar la creacin y todos
los accesos a las bases de datos.
ELIMINACION: Es una solicitud de eliminacin que se expresa de forma muy parecida
a una consulta. Sin embargo, en vez de presentar tuplas al usuario, quitamos las tuplas
seleccionadas de la base de datos. Slo puede eliminar tuplas completas; no se puede
eliminar nicamente valores de determinados atributos.
Facilidad de Consultas: Permitir al usuario hacer cuestiones sencillas a la base de datos.
Este tipo de consultas tienen como misin proporcionar la informacin solicitada por
el usuario de una forma correcta y rpida.
Formulario: es el elemento en forma de fecha que permite la gestin de los datos de
una forma mas cmoda y visiblemente mas atractiva
Gestor de Base de Datos: Es un conjunto de programas que permiten crear y mantener
una base de datos, asegurando su integridad, confidencialidad y seguridad
Independencia de los datos: Se refiere a la proteccin contra los programas de apli-
caciones que pueden originar modificaciones cuando se altera la organizacin fsica y
lgica de las bases de datos.
JDBC: La Conectividad de Bases de Datos Java (Java Database Connectivity, JDBC) es
una especificacin de la interfaz de aplicacin de programa (application program in-
terface, API) para conectar los programas escritos en Java a los datos en bases de datos
populares.
La manipulacin de datos: la manipulacin de datos es la recuperacin de informacin
almacenada en la base de datos
Lenguaje de consulta: Son los lenguajes en el que los usuarios solicitan informacin de
la base de datos. Estos lenguajes son generalmente de ms alto nivel que los lenguajes
de programacin. Los lenguajes de consulta pueden clasificarse como procedimentales
y no procedimentales
Manipulacin de Base de Datos: Usando la base de Datos -- el usuario puede aadir,
borrar y modificar informacin a la base de datos as como tambin hacer consultas
Modelo de base de datos orientado a objetos: es una adaptacin a los sistemas de bases
de datos. Se basa en el concepto de encapsulamiento de datos y cdigo que opera sobre
LABORATORIO DE PROGRAMACIN
UNIDAD III: ACCESO A DATOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
123

Lecturas Glosario Bibliografa


seleccionadas
estos en un objeto.
Modelos de Red: Este modelo permite la representacin de muchos a muchos de una
Base de Datos. El modelo de red evita redundancia en la informacin, a travs de la
incorporacin de un tipo de registro denominado el conector. Recordatorio Anotaciones

Nivel logico: definicin de las estructuras de datos que constituyen la base de datos
Reglas de Integridad: Son restricciones que definen los estados de consistencias de las
bases de datos.
DBMS: Es un conjunto de programas que se encarga de manejar la cremacin y todos
los acceso a las bases de datos.
DDL: Es un lenguaje de definicin de datos
Rectngulos: es parte de la estructura de base de datos y son aquellos que representan
un conjunto de entidades
Recuperacin: Proporcionar como mnimo el mismo nivel de recuperacin que los sis-
temas de bases de datos actuales. De forma que, tanto en caso de fallo de hardware
como de fallo de software, el sistema pueda retroceder hasta un estado coherente de
los datos.
Sistema de Administracin de Base de Datos: Es el softwware que controla la organiza-
cin, almacenamiento, recuperacin, seguridad e integridad de los datos en una base
de datos
SISTEMA GESTOR DE BASE DE DATOS: Es un conjunto de programas que permi-
ten crear y mantener una base de datos, asegurando su integridad, confidencialidad y
seguridad.
Software: Es un sistema manejador de bases de datos que permite al usuario accesar
con facilidad a los datos almacenados o que ande ser almacenados
Transaccin: es una secuencia de operaciones de acceso a la base de datos que consti-
tuye una unidad lgica de ejecucin.
Transacciones compartidas: Las transacciones compartidas soportan grupos de usua-
rios en estaciones de trabajo, los cuales desean coordinar sus esfuerzos en tiempo real,
los usuarios pueden compartir los resultados intermedios de una base de datos. La tran-
saccin compartida permite que varias personas intervengan en una sola transaccin.
TUPLAS: Es la representacin de una fila en una de las tablas que se esta almacenando
datos. Y las cuales sern llamadas por los administradores de Base de Datos en el tiempo
de ejecucin de un sistema.
Usuario final: es quien accesa a las bases de datos por medio de un lenguaje de consulta
o de programas de aplicacin.
ollo
nidos 124
Actividades Autoevaluacin ANEXO

as Glosario Bibliografa
nadas
Clave de respuestas a autoevaluaciones

Cuadro N 12
torio Anotaciones
Clave de respuesta de las autoevaluaciones