You are on page 1of 278

Desarrollo

de Sistemas
Empresariales
DESARROLLO DE SISTEMAS EMPRESARIALES 2

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 3

Índice
Presentación 5
Red de contenidos 7
Unidad de Aprendizaje 1 10
INTRODUCCIÓN AL DESARROLLO DE LOS SISTEMAS DE INFORMACIÓN
1.1 Tema 1 : Introducción al Desarrollo de los Sistema de Información 12
1.1.1 : Introducción 12
1.1.2 : Etapas del ciclo del desarrollo del sistema 17
1.1.3 : Herramientas que se utilizan en las etapas del ciclo del desarrollo 21
1.1.4 : Roles en el desarrollo de un sistema de información 23

Unidad de Aprendizaje 2 31
INTRODUCCIÓN AL NET FRAMEWORK 4.5
2.1 Tema 2 : Conceptos básicos del .NET Framework 33
2.1.1 : Arquitectura del .NET Framework, definición básica 33
2.1.2 : Aplicaciones Windows Form 36
2.1.3 : Principales Controles 41
2.1.4 : Variables y Tipos de datos 55
2.1.5 : Estructuras de control: if, switch 58
2.1.6 : Manejo de una clase, definir propiedades y métodos 64
2.1.7 : Definición de un constructor 68
2.1.8 : Manejo de un objeto: instancia de una clase 69

Unidad de Aprendizaje 3 93
ADMINISTRACIÓN DE DATOS
3.1 Tema 3 : Recuperación de datos 95
3.1.1 : Consulta de datos 95
3.1.2 : Ordenar registros 97
3.1.3 : Consultas condicionales 98
3.1.4 : Combinación de tablas 101

3.2 Tema 4 : Lenguaje de manipulación de datos 113


3.2.1 : Insertar datos 113
3.2.2 : Actualizar datos 116
3.2.3 : Eliminar datos 117

3.3 Tema 5 : Manejo de Procedimientos almacenados 121


3.3.1 : Procedimientos almacenados 121
3.3.2 : Paso de parámetros 124
3.3.3 : Modificación de datos por medio de procedimientos almacenados 127

Unidad de Aprendizaje 4 137


OPERACIONES CONECTADAS A UN ORIGEN DE DATOS
4.1 Tema 6 : Introducción a ADO.NET 139
4.1.1 : Arquitectura del ADO.NET 139
4.1.2 : Proveedores de ADO.NET 141

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 4

54.2 Tema 7 : Recuperación de datos 159


4.2.1 : Consulta de datos: La clase DataAdapter 159
4.2.2 : Poblar un DataSet: Uso de DataAdapter 160
4.2.3 : Utilizar parámetros con DataAdapter 160
4.2.4 : Manejo de Procedimientos Almacenados y parámetros 161

4.3 Tema 8 : Manipulación de datos 178


4.3.1 : Actualizar datos: La clase Command 178
4.3.2 : Ejecutar T-SQL o Procedimientos: La clase SqlCommand 179
4.3.3 : Manejo de parámetros en el proceso de actualización 179

Unidad de Aprendizaje 5 197


OPERACIONES DESCONECTADAS DE DATOS
5.1 Tema 9 : Manipulación de datos desconectados 199
5.1.1 : La clase DataSet 200
5.1.2 : La clase DataTable 201
5.1.3 : La clase DataColumn 202
5.1.4 : La clase DataRow 203
5.1.5 : La clase DataView 203

Unidad de Aprendizaje 6 215


INTRODUCCIÓN A LINQ
6.1 Tema 10 : Introducción a LINQ 217
6.1.1 : Componentes de LINQ 218
6.1.2 : LINQ to SQL 219
6.1.3 : Expresiones LAMBDA y el lenguaje LINQ 221

Unidad de Aprendizaje 7 246


MANEJO DE REPORTES
7.1 Tema 11 : Manejo de reportes 248
7.1.1 : Trabajando con Crystal Reports 248
7.1.2 : Definiendo el origen de datos del reporte 249
Cargando y visualizando los datos del reporte en el control
7.1.3 : 249
CrystalReportViewer

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 5

Presentación
Desarrollo de Sistemas Empresariales pertenece a la línea de tecnología y se dicta
en la carrera de Administración y Sistemas de la institución. El curso brinda un
conjunto de herramientas de programación para trabajar con las librerías de ADO.Net
que permita al alumno crear aplicaciones para el manejo de datos.

El manual del curso ha sido diseñado bajo la modalidad de unidades de aprendizaje,


que se desarrollan durante semanas determinadas. En cada una de ellas, hallará los
logros, que debe alcanzar al final de la unidad; el tema tratado, el cual será
ampliamente desarrollado; y los contenidos, que debe desarrollar, es decir, los
subtemas. Por último, encontrará las actividades que deberá desarrollar en cada
sesión, que le permitirán poner en práctica lo aprendido en la clase.

El curso es eminentemente práctico. Se inicia con una introducción al desarrollo de los


sistemas de información. Posteriormente, se revisa los conceptos básicos del .Net
Framework en Visual Studio, luego se realiza un repaso de las operaciones básicas de
manipulación de datos (Data Manipulation Lenguaje – DML) para hacer uso de
comandos que se emplean en la consulta, inserción, modificación y eliminación de los
mismos en SQL Server. A continuación, aprenderemos a manejar la programación por
medio de ADO.NET de forma conectada, desconectada y LINQ, finalizando con la
creación de reportes con Crystal Reports.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 6

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 7

Red de contenidos
DESARROLLO DE SISTEMAS EMPRESARIALES

Introducción al Desarrollo de los Sistemas de


Información

Introducción al Desarrollo de los


Sistema de Información

Introducción al NET FRAMEWORK 4.5

Conceptos básicos del .NET Framework

Administración de Datos

Recuperación de datos

Lenguaje de manipulación de datos

Manejo de Procedimientos
almacenados

Operaciones conectadas a un origen de datos

Introducción a ADO.NET

Recuperación de datos

Manipulación de datos

Operaciones desconectadas de datos

Manipulación de datos desconectados

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 8

DESARROLLO DE SISTEMAS EMPRESARIALES

Introducción a LINQ

Introducción a LINQ

Manejo de Reportes

Manejo de Reportes

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 9

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 10

UNIDAD

1
INTRODUCCIÓN AL
DESARROLLO DE LOS
SISTEMAS DE INFORMACIÓN
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno identifica las etapas del ciclo de vida del
desarrollo de un sistema, así como los roles de las personas que intervienen en
el proceso.

TEMARIO

1.1 Tema 1 : Introducción al Desarrollo de los Sistema de Información


1.1.1 : Introducción
1.1.2 : Procesos organizacionales
1.1.3 : Etapas del ciclo del desarrollo del sistema
1.1.4 : Herramientas que se utilizan en las etapas del ciclo del desarrollo
1.1.5 : Roles en el desarrollo de un sistema de información

ACTIVIDADES PROPUESTAS

 Los alumnos identifican e implementan las etapas del ciclo de desarrollo


del sistema para un sistema de información.
 Los alumnos definen los roles de las personas en el desarrollo de un
sistema de información.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 11

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 12

1.1. TEMA 1: INTRODUCCIÓN AL DESARROLLO DE LOS


SISTEMA DE INFORMACIÓN
1.1.1. Introducción

Un Sistema de Información es un conjunto de elementos que interactúan entre sí con


la finalidad de alcanzar uno o varios objetivos que se presentan en una institución,
organización o empresa, entre ellos el control de lo que ocurre dentro y la toma de
decisiones. Además es necesario conocer:

1.1.1.1. Concepto de Dato

Es la representación simbólica de un hecho o evento, o de los atributos o propiedades


de una entidad o ente. Se denomina así a todo lo que existe y posee propiedades; por
ejemplo, la entidad ALUMNO tiene propiedades, como nombre, edad, dirección,
especialidad, etc., y valores válidos llamado DOMINIO y pueden ser alfabéticos,
numéricos o alfanuméricos.

1.1.1.2. Concepto de Información

La información adopta formas muy diversas. Por ejemplo:


 SIGNOS ESCRITOS: libros, periódicos, facturas, letras de cambio, cartas,
jeroglífico, dibujos, partituras, musicales, inscripciones en piedra, papiro, etc.
 SONIDOS: lenguaje hablado, música, silbidos, sonidos de tambores entre
tribus.
 SEÑALES DE CUALQUIER TIPO: señales de tráfico, señales de humo entre
los indios del lejano oeste, señales de bandera en carrera de autos, etc.

La información es un dato organizado e interpretado en forma significativa para el


receptor con valor real y perceptible para las decisiones presentes y futuras. La
información se obtiene asociando hechos en un contexto determinado.

Figura 1: Información como resultado del procesamiento de datos

1.1.1.3. Tipos de Información

La información tiene carácter económico cuando se vincula o asocia a las actividades


de una organización, produciéndose diferentes tipos. A continuación, se mencionan
algunos tipos, según su clasificación:
a. Tiempo de utilidad: Permanente o variable.
b. Elaboración: Primaria, intermedia y de resultados.
c. Tratamiento: Elaborada y no elaborada.
d. Complejidad: Suficiente, insuficiente y redundante.
e. Confiabilidad: Segura e incierta.

Una misma información puede estar dentro de uno, en varios o en todos los tipos de
clasificación, antes mencionados.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 13

1.1.1.4. La Información como Recurso Estratégico

La información es un recurso importante para una empresa. Ésta proporciona los


conocimientos indispensables para la realización de su actividad y se ha convertido,
de hecho, en un verdadero recurso estratégico que se puede denominar como el
principal activo intangible de la empresa.

En la actualidad, la información tiene valor estratégico que permite:


 Incrementar la productividad y la eficiencia de una empresa.
 Identificar segmentos del mercado, como herramienta de competitividad al
permitir el liderazgo en la reducción de costos.
 Incrementar la innovación, como catalizador al permitir el trabajo conjunto de
grupos separados geográficamente.
 Fortalecer los procesos para la toma de decisiones.

La información es un recurso que ayuda a controlar otros recursos. Para crecer y


desarrollarse, las personas necesitan alimentos; para tomar decisiones y multiplicar su
capacidad intelectual, se necesita de la información.

A diferencia de otros recursos, la información no se agota, sino que puede ampliarse y


mejorarse con las críticas y comentarios. Como todo recurso, se debe planificar,
adquirir o incorporar, administrar, controlar, separar o suprimir.

Es por ello de vital importancia que la dirección tenga una visión clara sobre la
“Economía de la Información”, la forma en la que la información añade valor a la
empresa y la relación entre el valor y el costo de la misma. La globalización de la
economía amplía el valor de la información para la empresa y pone a su alcance
nuevas oportunidades de negocio.

1.1.1.5. Sistemas de Información

Un sistema de información realiza cuatro actividades básicas: Entrada,


Almacenamiento, Procesamiento y Salida de información. A continuación, se definen
cada una de estas actividades:

 Entrada de información: Proceso mediante el cual el sistema de información


toma los datos que requiere para procesar la información. Las entradas pueden
ser manuales o automáticas. Las entradas manuales son proporcionadas en
forma directa por el usuario, mientras que las automáticas provienen o son
tomados de otros sistemas o módulos. Esto último, se denomina interfaces
automáticas.
 Almacenamiento de información: El sistema puede recordar la información
guardada en la sesión o proceso anterior. Esta información suele ser
almacenada en estructuras de información denominadas archivos.
 Procesamiento de información: Realiza cálculos de acuerdo con una
secuencia de operaciones preestablecida. Estos cálculos pueden efectuarse
con datos introducidos en el sistema o con datos que están ya almacenados.
 Salida de información: Permite mostrar la información procesada al exterior
(en pantalla o impresa) o bien los datos de entrada al exterior. Las unidades
típicas de salida son las impresoras, estaciones de trabajo, USB, CD, la voz,
los graficadores y los plotters, entre otros. Es importante aclarar que la salida
de un sistema de información puede constituir la entrada a otro sistema de
información o módulo.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 14

Figura 2: Actividades básicas de un sistema de Información

1.1.1.6. Tipos de Sistemas de Información

Figura 3: Tipos de sistemas de información, modelo pirámide


Fuente.- Tomado de http://joseluisafa.blogspot.pe/2012/04/tipos-de-sistemas-de-informacion.html

 Sistema de Procesamiento de Transacciones: Gestiona la información


referente a las transacciones producidas en una empresa, son llamados TPS
(Transaction Processing Sytem). Sus características son:

a. Ahorro de la mano de obra, debido a que automatizan las tareas operativas


de la organización.
b. Es el tipo de sistema de información que implanta la empresa.
c. Son intensivos en entrada y salida de información, sus procesos pueden
ser simples o complejos
d. Son recolectores de información, a través de estos sistemas se cargan a
las base de datos para explotarlos en otros sistemas.
e. Fáciles de justificar ante la dirección general.
f. Ejemplos: Compras, Cuentas Corrientes, Remuneraciones.

 Sistema de Gestión de Información: están orientados a solucionar problemas


empresariales en general, proporcionan información para la toma de
decisiones. Sus características son:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 15

a. Ayudan a los directivos y empleados con problemas estructurados a nivel


táctico.
b. Ayudan a hacer pronósticos de tendencias e identifican oportunidades.
c. Detectan problemas en la ejecución de procesos establecidos.
d. Facilitan el seguimiento del desempeño organizacional e incrementa el
control de los diferentes niveles de dirección.
e. Permite que la información pueda ser copia y exportada hacia otras
herramientas para favorecer el análisis de los datos.

 Sistema de Soporte de Decisiones: herramienta para realizar el análisis de


las diferentes variables de negocio con la finalidad de apoyar el proceso de
toma de decisiones. Sus características son:

a. Son introducidos después de implantar los sistemas de Procesamiento de


Transacciones.
b. Sirve de apoyo a los mandos intermedios y a la alta gerencia.
c. Son intensivos en cálculos y escasos en entradas y salidas de información.
d. Suelen ser sistemas interactivos y amigables, con altos estándares de
diseño gráfico y visual.
e. Suelen ser desarrollados por el usuario final.

 Sistema de Información Ejecutiva: herramienta orientada a los usuarios de


nivel gerencial diseñado para soportar la toma de decisiones estructurada a
través del uso de poderosas interfaces gráficas y capacidades de
comunicación. Sus características:

a. Sistemas a nivel estratégico.


b. Usado por usuarios de alta dirección.
c. Acomoda las capacidades y funcionamiento de la empresa a los cambios
del entorno presente y futuros.

Además podemos mencionar:

 Sistema de Automatización de Oficinas: aplicaciones destinadas a ayudar al


trabajo diario del administrativo de una empresa. Sus características:

a. Control de calendarios y agenda.


b. Manejo de correos electrónicos.
c. Es utilizando por oficinistas, operadores, administrativos.

 Sistema Experto: emulan el comportamiento de un experto en un dominio


concreto. Es una aplicación informática capaz de solucionar un conjunto de
problemas que exigen un gran conocimiento sobre un determinado tema. Sus
características:

a. Está basada en el conocimiento, en base a hechos.


b. Modela el proceso del razonamiento humano.
c. Obtiene información de una base de datos y realiza cálculos numéricos
mucho más rápido que cualquier ser humano.
d. A pesar que el costo inicial es alto, por la capacidad de duplicación el costo
finalmente el bajo.
e. Estos sistemas no se ven afectados por condiciones externas.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 16

 Sistema de Planificación de Recurso: es un sistema de información integral


que incorpora procesos operativos y de negocios de una empresa, por ejemplo:
producción, ventas, compras, logística, contabilidad, de gestión de proyectos,
etc.

Este sistema actúa de forma que hace optimizar el desarrollo empresarial,


participa en la reducción de tiempo y de los costos de los procesos, así como
hace incrementar el rendimiento de la empresa. Sus características:

a. Integrales: porque permite controlar los diferentes procesos de la empresa,


entendiendo que las áreas de la empresa se relacionan entre sí, es decir,
que el resultado de un área es el punto de inicio de otra área.
b. Modulares: estos sistemas entienden que una empresa es un conjunto de
áreas que se encuentran interrelacionados entre sí a través de la
información la cual comparten y que se genera a partir de sus procesos.
c. Adaptables: están creados para adaptarse a la idiosincrasia de cada
empresa.

1.1.1.7. Definiciones de Organización

Si reflexionamos sobre nuestras vidas diríamos que transcurre en organizaciones. Por


ejemplo, la familia a la que pertenecemos es una de ellas. Otras son la escuela y la
universidad por la que pasamos buen tiempo. Después viene el ejercicio de la
profesión o de alguna actividad y también lo hacemos en una organización
vinculándonos con muchas otras. Es más, estamos rodeados de organizaciones como
las instituciones del estado, las entidades benéficas, un club, una institución religiosa,
u otras de ámbito y envergadura mayor, como las organizaciones internacionales.

Las organizaciones que citamos como ejemplos y algunas que omitimos, todas
cumplen alguna función en la sociedad y en la economía. No solo nos referimos a las
que tienen fines lucrativos sino también a las que no los tienen. Por ejemplo, las que
tienen propósitos altruistas o sociales. La organización, en este sentido, es una
empresa o una institución cualquiera.

1.1.1.8. Enfoques de las organizaciones

Administrar una organización requiere manejar algunos enfoques prácticos de ella


para optimizar su funcionamiento, para que logre su finalidad, para ordenarla
adecuadamente definiendo las actividades que realizará.

El estudio de la organización se ha enriquecido con la contribución de varias ciencias.


Entre ellas, la perspectiva de sistemas, que ha aportado una concepción que nos
permite visualizarla de una manera dinámica y comprender, en sus procesos internos,
su estructura y funcionamiento, así como sus interacciones y relaciones con el
entorno.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 17

Figura 4: Organización como Sistema

1.1.2. Etapas del Ciclo del Desarrollo del Sistema

El ciclo de vida de los sistemas, es el proceso evolutivo que se sigue al implementar


un sistema o subsistema de información basado en computadora. El SLC 1consiste en
una serie de tareas que siguen de cerca los pasos del enfoque de sistema. Puesto que
las tareas siguen un patrón ordenado y se llevan a cabo en forma descendente, el SLC
también se conoce como enfoque de cascada para la creación y uso de sistemas.

Figura 5: Ciclo de Vida de un Sistema

El ciclo de vida de un sistema es un proceso por el cual los analistas de sistemas, los
ingenieros de software, los programadores, y los usuarios finales elaboran sistemas de
información y aplicaciones informáticas. El ciclo de vida del desarrollo de un sistema
consta de seis actividades:

a. Investigación Preliminar
b. Análisis de Sistemas
c. Diseño del Sistema
d. Desarrollo del Sistema
e. Implementación del Sistema
f. Mantenimiento del Sistema

a. Investigación Preliminar

1 SLC,System Life Cycle (Ciclo de Vida de los Sistemas)

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 18

Un resultado importante de la investigación preliminar es la determinación de que el


sistema solicitado sea factible. En la investigación preliminar, existen tres aspectos
relacionados con el estudio de factibilidad:

 Factibilidad Técnica. ¿Puede realizarse en el equipo actual, la tecnología


existente del software y el personal disponible? Si se necesita nueva tecnología
¿Cuál es la posibilidad de desarrollarla?

 Factibilidad Económica. Que los beneficios (tangibles e intangibles) superen


a los costos; que los índices financieros que se calculen sean aceptables, de
acuerdo con políticas y estándares generales y específicos; que el proyecto
tenga contenido económico y esté contemplado en el presupuesto respectivo.
Como mínimo deben calcularse las siguientes razones.

o Tasa Interna de Retorno.


o Valor Neto Presente.
o Período de Recuperación.
o Y, el total de los beneficios netos.

Dependiendo de los resultados de este estudio se determinará si se continúa o


no con el proyecto

 Factibilidad Operacional. Si se desarrolla e implanta, ¿Será utilizado el


sistema?, ¿Existirá cierta resistencia al cambio por parte de los usuarios que
de cómo resultado una disminución de los posibles beneficios de la aplicación?

La Investigación Preliminar lo lleva a cabo un pequeño equipo de personas (en


ocasiones una o dos) que está familiarizado con técnicas de sistemas de información;
dicho equipo comprende la parte de la empresa u organización que participará se verá
afectada por el proyecto y es gente experta en los procesos de análisis y diseño de
sistemas. En general, las personas que son responsables de evaluar la factibilidad son
analistas capacitados o directivos.

b. Análisis de Sistemas

El aspecto fundamental del análisis de sistemas es comprender todas las facetas


importantes de la parte de la empresa que se encuentra bajo estudio. Los analistas, al
trabajar con los empleados y administradores, deben estudiar los procesos de una
empresa para dar respuesta a las siguientes preguntas:
 ¿Qué es lo que hace?
 ¿Cómo se hace?
 ¿Con qué frecuencia se presenta?
 ¿Qué tan grande es el volumen de transacciones o de decisiones?
 ¿Cuál es el grado de eficiencia con que se efectúan las tareas?
 ¿Existe algún problema?
 Si existe un problema. ¿Qué tan serio es?
 Si existe un problema. ¿Cuál es la causa de lo que origina?

Para contestar estas preguntas, el analista conversa con varias personas para reunir
detalles relacionados con los procesos de la empresa, sus opiniones sobre por qué
ocurren las cosas, las soluciones que proponen y sus ideas para cambiar el proceso.
Se emplea cuestionarios para obtener esta información cuando no es posible

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 19

entrevistar, en forma personal, a los miembros de grupos grandes dentro de la


organización.

Así mismo, las investigaciones detalladas requieren el estudio de manuales y reportes,


la observación en condiciones reales de las actividades de trabajo y, en algunas
ocasiones, muestras de formas y documentos con el fin de comprender el proceso en
su totalidad.

Conforme se reúnen los detalles, los analistas estudian los datos sobre requerimientos
con la finalidad de identificar las características que debe tener el nuevo sistema,
incluyendo la información que deben producir los sistemas junto con características
operacionales tales como controles de procesamiento, tiempos de respuesta y
métodos de entrada y salida.

c. Diseño de Sistema

El diseño de un sistema de información produce los detalles que establecen la forma


en la que el sistema cumplirá con los requerimientos identificados durante la fase de
análisis.

Los especialistas en sistemas se refieren, con frecuencia, a esta etapa como diseño
lógico en contraste con la de desarrollo del software, a la que denominan diseño físico.
Los analistas de sistemas comienzan el proceso de diseño identificando los reportes y
demás salidas que debe producir el sistema. Hecho lo anterior se determinan con toda
precisión los datos específicos para cada reporte y salida. Es común que los
diseñadores hagan un bosquejo del formato o pantalla que esperan que aparezca
cuando el sistema esté terminado. Lo anterior se efectúa en papel o en la pantalla de
una terminal utilizando para ello algunas de las herramientas automatizadas
disponibles para el desarrollo de sistemas.

Los documentos que contienen las especificaciones de diseño representan a éste de


muchas maneras (diagramas, tablas y símbolos especiales). La información detallada
del diseño se proporciona al equipo de programación para comenzar la fase de
desarrollo de software.

Los diseñadores son los responsables de dar a los programadores las


especificaciones de software completas y claramente delineadas. Una vez comenzada
la fase de programación, los diseñadores contestan preguntas, aclaran dudas y
manejan los problemas que enfrentan los programadores cuando utilizan las
especificaciones de diseño. Encontramos las siguientes fases del diseño:

 Elección de una solución de diseño entre las soluciones candidatas.


 Evaluación del hardware y software requeridos.
 Diseño e Integración del nuevo sistema.

d. Desarrollo del Sistema

Una vez que sabemos qué funciones debe desempeñar nuestro sistema de
información (análisis) y hemos decidido cómo vamos a organizar sus distintos
componentes (diseño), es el momento de pasar a la etapa del Desarrollo del Sistema.

Para esta fase, hemos de seleccionar las herramientas adecuadas, un entorno de


desarrollo que facilite nuestro trabajo y un lenguaje de programación apropiado para el
tipo de sistema que vayamos a construir. La elección de estas herramientas

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 20

dependerá en gran parte de las decisiones de diseño que hayamos tomado hasta el
momento y del entorno en el que nuestro sistema deberá funcionar.

A la hora de programar, deberemos procurar que nuestro código no resulte


indescifrable. Para que nuestro código sea legible, hemos de evitar estructuras de
control no estructuradas, elegir cuidadosamente los identificadores de nuestras
variables, seleccionar algoritmos y estructuras de datos adecuadas para nuestro
problema, mantener la lógica de nuestra aplicación lo más sencilla posible, comentar
adecuadamente el texto de nuestros programas y, por último, facilitar la interpretación
visual de nuestro código mediante el uso de sangrías y líneas en blanco que separen
distintos bloques de código.

Además de las tareas de programación asociadas a los distintos componentes de


nuestro sistema, en la fase de Desarrollo del Sistema también hemos de encargarnos
de la adquisición de todos los recursos necesarios para que el sistema funcione (por
ejemplo, las licencias de uso del sistema gestor de bases de datos que vayamos a
utilizar).

En esta fase, serán necesarios realizar pruebas para detectar los errores que se hayan
podido cometer en las etapas anteriores del proyecto (y, eventualmente, corregirlos).

La búsqueda de errores puede adoptar distintas formas, en función del contexto y de


la fase del proyecto en la que nos encontremos:

 Las pruebas de unidad sirven para comprobar el correcto funcionamiento de


un componente concreto de nuestro sistema. Es este tipo de pruebas, el
"probador" debe buscar situaciones límite que expongan las limitaciones de la
implementación del componente, ya sea tratando este como una caja negra
("pruebas de caja negra") o fijándonos en su estructura interna ("pruebas de
caja blanca").
 Las pruebas de integración son las que se realizan cuando vamos juntando
los componentes que conforman nuestro sistema y sirven para detectar errores
en sus interfaces. En algunas empresas, como Microsoft, se hace una
compilación diaria utilizando los componentes del sistema tal como estén en
ese momento (Daisy build) y se somete al sistema a una serie de pruebas
básicas (la prueba de humo, smoke test) que garanticen que el proyecto podrá
seguir avanzando al día siguiente.

e. Implementación del Sistema

Concluidas las etapas de desarrollo de un sistema de información (análisis, diseño y


desarrollo), llega el instante Implementar el Sistema.

De cara a su instalación, hemos de planificar el entorno en el que el sistema debe


funcionar, tanto hardware como software: equipos necesarios y su configuración física,
redes de interconexión entre los equipos y de acceso a sistemas externos, sistemas
operativos (actualizados para evitar problemas de seguridad), bibliotecas y
componentes suministrados por terceras partes, etc.

Para asegurar el correcto funcionamiento del sistema, resulta esencial que tengamos
en cuenta las dependencias que pueden existir entre los distintos componentes del
sistema y sus versiones. Una aplicación puede que solo funcione con una versión
concreta de una biblioteca auxiliar. Un disco duro puede que solo rinda al nivel
deseado si instalamos un controlador concreto. Componentes que por separado

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 21

funcionarían correctamente, combinados causan problemas, por lo que deberemos


utilizar solo combinaciones conocidas que no presenten problemas de compatibilidad.

Si nuestro sistema reemplaza a un sistema anterior o se despliega paulatinamente en


distintas fases, también hemos de planificar cuidadosamente la transición del sistema
antiguo al nuevo de forma que sus usuarios no sufran una disrupción en el
funcionamiento del sistema.

f. Mantenimiento del Sistema

La etapa de mantenimiento consume típicamente del 40 al 80 por ciento de los


recursos de una empresa de desarrollo de software. De hecho, con un 60% de media,
es probablemente la etapa más importante del ciclo de vida del software. Dada la
naturaleza del software, que ni se rompe ni se desgasta con el uso, su mantenimiento
incluye tres facetas diferentes:

 Eliminar los defectos que se detecten durante su vida útil (mantenimiento


correctivo).
 Adaptarlo a nuevas necesidades (mantenimiento adaptativo), cuando el
sistema ha de funcionar sobre una nueva versión del sistema operativo o en un
entorno hardware diferente, por ejemplo.
 Añadirle nueva funcionalidad (mantenimiento perfectivo), cuando se proponen
características deseables que supondrían una mejora del sistema ya existente.

1.1.3. Herramientas que se utilizan en la etapa del ciclo de desarrollo

La tecnología CASE2 es la automatización del desarrollo software para mejorar la


calidad del sistema de información:

 Permitir aplicaciones prácticas de metodologías estructuradas, al ser realizadas


con una herramienta consigue agilizar el trabajo.
 Facilitar la realización de prototipos.
 Simplificar el mantenimiento de los programas.
 Estandariza la documentación
 Aumentar la portabilidad de las aplicaciones.
 Facilitar la reutilización de componentes software.
 Permitir un desarrollo y un refinamiento visual de las aplicaciones.

No existe una única clasificación de las herramientas CASE, podrían clasificarse


atendiendo a:

 Las plataformas que soportan.


 Las fases del ciclo de vida del desarrollo de sistemas que cubren.
 Las arquitecturas de las aplicaciones que producen.
 Su funcionalidad.

Las herramientas CASE, en función de las fases del ciclo de vida abarcadas, se
pueden agrupar de la forma siguiente:
 Herramientas integradas, I-CASE (CASE integrado): abarcan todas las fases
del ciclo de vida del desarrollo de sistemas. Son llamadas también CASE
workbench.

2 CASE, Computer Aided Software Engineering (Ingeniería de Software Asistida por


Computadora)

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 22

Ventajas:

o Integra el ciclo de vida


o Permite lograr importantes mejoras de productividad a mediano plazo
o Permite un eficiente soporte al mantenimiento de sistemas
o Mantiene la consistencia de los sistemas a nivel corporativo

Desventajas:

o Es costoso
o Depende del hardware y software
o Es eficiente solamente para soluciones complejas

 Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o front-


end, orientadas a la automatización y soporte de las actividades desarrolladas
durante las primeras fases del desarrollo: análisis y diseño.
Ventajas:
o Se utiliza en plataforma PC, es aplicable a diferentes entornos.
o Menor costo.

Desventajas:

o Permite mejorar la calidad de los sistemas pero no mejorar la


productividad.
o No permite la integración del ciclo de vida.

 Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back-


end, dirigidas a las últimas fases del desarrollo: construcción e implantación.

Ventajas:

o Permite lograr importantes mejoras de productividad a corto plazo.


o Permite un eficiente soporte al mantenimiento de sistemas.

Desventajas:

o No garantiza la consistencia de los resultados a nivel corporativo


o No garantiza la eficiencia del análisis y diseño.
o No permite la integración del ciclo de vida.

 Juegos de herramientas o Tools-Case, son el tipo más simple de


herramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentro de
este grupo, se encontrarían las herramientas de reingeniería, orientadas a la
fase de mantenimiento.

En el mercado actual, se pueden citar, entre otras, algunas herramientas


distribuidas por fases de desarrollo como para:

Análisis y Diseño

o Prokit Workbench de McDonnell-Douglas


o Desing Aid Nastec
o Analyst/Designer Toolkit de Yourdon
o Excelerator de Index Technology

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 23

o Pose de Computer System Advisers

Diseño de Archivos y Base de Datos

o Chen Toolkit de Chen & Associates


o IDMS/Architect de Cullinet Software
o Automate Plus de LBMS
o Case Designer de Oracle
o Synon
o Oracle
o Informix

Programación

o APS de Sage Software


o Transforms de Transform Logic
o Talon Pansophic System
o Decase de DEC COBOL 2/ Worbench de Micro Focus
o Snap CASE para AS/400

El uso de las herramientas CASE puede mejorar la productividad en el desarrollo de


una aplicación de bases de datos. Y por productividad se entiende tanto la eficiencia
en el desarrollo, como la efectividad del sistema desarrollado. La eficiencia se refiere
al coste, tanto en tiempo como en dinero, de desarrollar la aplicación. La efectividad se
refiere al grado en que el sistema satisface las necesidades de los usuarios. Para
obtener una buena productividad, subir el nivel de efectividad puede ser más
importante que aumentar la eficiencia.

1.1.4. Roles en el desarrollo de un sistema de información

El desarrollo de software es una actividad que, dada su complejidad, debe


desarrollarse en grupo. Además, esta actividad requiere de distintas capacidades, las
que no se encuentran todas en una sola persona. Por ello, se hace necesario formar el
grupo de desarrollo con las personas que cubran todas las capacidades requeridas.

Cada una de esas personas aportará al grupo parte del total de las capacidades
necesarias para llevar a cabo con éxito el desarrollo. Por ello, es que cada persona
debe tener un rol dentro del grupo, que viene dado por su experiencia y capacidades
personales. A continuación, describimos software. Estos roles que vamos a describir
son administrador de proyecto, analista, diseñador, programador, tester, asegurador
de calidad, documentador, ingeniero de manutención, ingeniero de validación y
verificación, administrador de la configuración y por último, el cliente.

a. Administrador de Proyectos

Es la persona que administra y controla los recursos asignados a un proyecto, con el


propósito de que se cumplan correctamente los planes definidos. Los recursos
asignados pueden ser recursos humanos, económicos, tecnológicos, espacio físico,
etc. En un proyecto, siempre debe existir un administrador. No obstante, un
administrador puede dirigir más de un proyecto.

Objetivos:

 Tener el producto a “tiempo”, “bajo presupuesto” y con requisitos de calidad


definidos.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 24

 Trabaja en el proyecto de principio a fin.


 Maneja el equipo e proyectos.
 Desarrolla y monitorea los planes del proyecto.
 Asigna recursos o presupuesto.
 Actúa como contacto primario para el proyecto completo. (Enlace entre la
administración y trabajadores del proyecto).
 Observar cada actividad para detectar y resolver inconvenientes.

b. Analista de Sistemas

El analista de sistemas generalmente valora la manera que funcionan los negocios


examinando la entrada, el procesamiento de datos y la salida de información con el
propósito de mejorar los procesos organizacionales.

Muchas mejoras al apoyo para las funciones de los negocios, es por medio del uso de
sistemas de información computarizados. Entre los papeles que desempeña el analista
de sistemas:

 Consultores externos para negocios


 Experto de soporte dentro de un negocio
 Agente de cambio en situaciones tanto internas como externas

Los analistas poseen un amplio rango de habilidades. La primera y principal es que el


analista soluciones problemas, le gusta el reto de analizar un problema y encontrar
una respuesta funcional. Los analistas de sistemas requieren habilidades de
comunicación que les permitirá relacionarse en forma significativa con muchas
personas, así como habilidades de computación. Para su éxito, es necesario que se
involucre con el usuario final.

Los analistas proceden sistemáticamente. El marco de referencia para su enfoque


sistemático es proporcionado por lo que es llamado el ciclo de vida del desarrollo de
sistemas.

Los analistas también usan el enfoque de reingeniería asistida por computadora, para
aplicar reingeniería inversa y de software para extender la vida del software legado.

El analista de sistemas debe manejar cuatro puntos fundamentales del proyecto:


 Iniciación del proyecto
 Determinación de la factibilidad del proyecto
 Calendarización del proyecto
 Administración de los miembros del equipo del análisis de sistema

Si un proyecto solicitado satisface estos criterios, entonces puede ser elaborado un


estudio de la factibilidad de sus méritos operacionales, técnicos y económicos. Por
medio del estudio de factibilidad, los analistas de sistemas recopilan datos que
permiten a la administración decidir si continúan con un estudio de sistema completo.

La planeación del proyecto incluye la estimación del tiempo requerido por cada una de
las actividades del analista, su calendarización y la agilización de ellas, si es necesario
para asegurar que un proyecto sea terminado a tiempo. Una técnica de que dispone el
analista de sistemas para la calendarización de tareas es la gráfica de Gantt, que
despliega actividades en forma de barrasen una gráfica.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 25

Una segunda técnica, llamada PERT (evaluación de programas y técnicas de


revisión), despliega las actividades como flechas en una red. El PERT ayuda a que el
analista determine la ruta crítica y el tiempo de holgura, que es la información
requerida para el control efectivo del proyecto.

Cuando es necesario terminar un proyecto en menor tiempo, el analista puede reducir


la duración total del proyecto identificación y agilizando las actividades principales.
Una vez que un proyecto es viable, el analista de sistemas debe administrar a los
miembros del equipo, sus actividades, tiempo y recursos. La mayor parte de esto se
logra mediante la comunicación con los miembros del equipo. Los equipos están
constantemente buscando un balance entre el trabajar sobre las tareas y el mantener
las relaciones con el equipo. Es importante que el equipo de análisis de sistemas
ponga objetivos de productividad razonables para las salidas tangibles y las
actividades del proceso. Las fallas del proyecto pueden ser evitadas, por lo general,
examinando las motivaciones de los proyectos solicitados, así como los motivos del
equipo para recomendar o evitar un proyecto particular.

Para que el trabajo de los analistas tenga sentido para todos los integrantes del grupo,
se hace necesario ponerse de acuerdo en la forma como se realizará la especificación,
así como la forma como el resto del grupo la entenderá. Esto sugiere el uso de un
estándar para realizar la fase de análisis del problema. En el caso del estándar de la
ESA, el análisis se divide en dos fases: especificación de requisitos de usuario y
especificación de requisitos de software. Los analistas deben liderar ambas fases.

c. Analista Funcional

El Analista Funcional es el vínculo entre los interesados en el proyecto (stakeholders)


y el equipo de desarrollo. Para ello, utiliza distintas técnicas y habilidades (lluvia de
ideas, análisis de costo-beneficio, generar participación activa, etc.), para asistir a los
líderes del proyecto en el logro de los objetivos propuestos. Su misión consiste en
elaborar el análisis funcional de las nuevas aplicaciones para la organización, así
como actualizar y mejorar las ya existentes; es decir, debe controlar, analizar y
supervisar el desarrollo funcional de las aplicaciones informáticas, asegurando su
correcta explotación y su óptimo rendimiento.

Realiza una labor de asesoramiento y capacitación, con el fin de evitar cualquier


problema que pueda surgir con los programas y obtener así el máximo rendimiento de
los mismos.

Otras funciones son evaluar tanto la viabilidad técnica como la económica de los
desarrollos de las aplicaciones que se han de ejecutar, y preparar y elaborar toda la
documentación técnica y de usuario de cada aplicación.

Entre las competencias blandas de un analista funcional encontramos:

 Gestión del proyecto en general.


 Comunicación interpersonal.
 Comprensión de procesos empresariales.
 Conocimiento de la Organización.
 Capacidad de Negociación.
 Adaptación al Cambio.
 Investigación y Proactividad.

Entre las competencias Técnicas del analista funcional:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 26

 Conocimiento de la herramienta.
 Configuración del Proceso.
 Identificación de Roles y Perfiles.
 Migración de Datos.
 Especificaciones de Desarrollos.

d. Analista de Negocios

Un Analista del Negocio es cualquier persona que ejecute actividades de análisis del
negocio, sin importar cual sea su rol en la organización. Los Analistas del Negocio
incluyen también analistas de sistemas de negocios, analistas de sistemas, ingenieros
de requisitos, analistas de procesos, gerentes de producto, propietarios de producto,
analistas corporativos, arquitectos del negocio, consultores de administración o
cualquier otra persona que ejecute disciplinas relacionadas como gerencia de
proyectos, desarrollo de software, aseguramiento de la calidad y diseño de interacción.

Un analista del negocio es quien lidera y coordina todo el proceso de identificación,


documentación, organización y administración de requisitos del negocio delimitando la
organización que está siendo modelada. Esto es, un conocedor de los procesos del
negocio, alguien capaz de ejecutar tareas como los siguientes:

 Evaluar la organización objetivo, es decir, hacia dónde va la compañía.


 Establecer y ajustar objetivos.
 Mantener las reglas del negocio.
 Identificar las metas del negocio.
 Encontrar a los actores y casos de uso del negocio (las actividades del negocio
y quien las realiza).

Es recomendable que un analista del negocio sea un buen facilitador y tenga


excelentes habilidades de comunicación; además, tener conocimiento del dominio del
negocio es esencial para actuar en este papel. Un analista del negocio debe estar
preparado además para:

 Entender los requisitos de los usuarios, sus estrategias y sus metas.


 Realizar un análisis costo beneficio para cualquier cambio que se sugiera en la
organización.
 Discutir y apoyar a quienes mercadean y venden el producto final del proyecto.

Adicionalmente, un buen analista del negocio:

 Hace análisis arquitectónico del negocio.


 Construye pruebas de concepto arquitectónicas para el negocio.
 Hace análisis de los casos de uso del negocio.
 Prioriza los casos de uso del negocio.
 Analiza la operación del negocio.
 Diseña la operación del negocio.

e. Diseñador

Es el encargado de generar el diseño del sistema. Entre sus funciones:

 Generar el diseño arquitectónico y diseño detallado del sistema.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 27

 Generar prototipos rápidos del sistema.


 Generar el documento del diseño arquitectónico del software y manteniendo
actualizado durante el proyecto.
 Velar porque el producto final se ajuste al diseño realizado.

El propósito del diseño es el de crear una estructura interna limpia y relativamente


simple, también llamada a veces una arquitectura. Un diseño es el producto final del
proceso del diseño. Así, una de las metas en el diseño de software es derivar una
arquitectura del sistema.

f. Programador

Los programadores deben convertir la especificación en código fuente ejecutable


utilizando uno o más lenguajes de programación, entre sus principales objetivos
tenemos los siguientes:

 Debe ser capaz de reducir la complejidad del software.


 Reducir el tiempo de codificación, aumentando la productividad del
programador.
 Disminuir el número de errores que ocurre durante el proceso de desarrollo.
 Disminuir el esfuerzo de corregir errores en secciones de código que se
encuentren deficientes, reemplazando secciones cuando se descubran
técnicas más confiables y eficientes
 Disminuir los costos del ciclo de vida del software.

Para alcanzar estos objetivos, es importante escoger las herramientas de desarrollo


apropiadas. De esto dependerán en parte poder alcanzar los objetivos, y por lo tanto,
el éxito del proyecto.

g. Tester

El desarrollo de un sistema de software requiere la realización de una serie de


actividades de producción. En dichas actividades, existe la posibilidad de que
aparezcan errores. Dichos errores pueden aparecer desde el primer momento del
proceso.

El tester es el encargado de asegurar la calidad de cada uno de los productos


(documentos, prototipos, etc.).

Entre sus tareas:

 Construir y aplicar los planes de prueba unitarios, de modulo, de sistema y


aceptación parcial, actualizándolos en todo momento.
 Velar por la complejidad y exactitud de los documentos del proyecto Coordinar
las inspecciones.
 Velar por la adhesión al estándar adaptado para el desarrollo.
 Velar por la calidad del producto.

Entre sus objetivos:

 Diseñar tests que en forma sistemática, permita eliminar diferentes clases de


errores con la mínima cantidad de tiempo y esfuerzo.
 Aplicar métodos para diseñar casos de tests efectivos.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 28

 Construir buenos casos de test que tengan altas probabilidades de encontrar


errores aún no descubiertos.
 Proveer una buena indicación de la confiabilidad del software y algunas
indicaciones de la calidad del software.

h. Asegurador de calidad

Es la persona creada para solucionar el problema; será el encargado de estar en cada


paso del proceso de creación de software para asegurar que este sea terminado
dentro de los tiempos establecidos de la manera más adecuada y con la certeza de
que ha sido creado con la menor cantidad de fallas.

Este rol desempeña las siguientes actividades:

Revisar:

 Documentos de requisitos de Usuario y Software.


 Plan de administración del proyecto.
 Plan de testeo.
 Fase de diseño arquitectónico.
 Fase de diseño detallado.
 Políticas de control de cambios, control de errores y control de la configuración.
 Documentación.

Los roles del asegurador se conectan a este con el mismo propósito: Revisar que cada
proceso se cumpla bien y dentro del tiempo.

El Asegurador de calidad debe ser una persona muy familiarizada con el proceso de
desarrollo de proyectos, con esto se tiene la certeza de que la persona será capaz de
resolver los problemas que surjan. Su plan de trabajo es de los más extensos debido a
que debe estar involucrado en todas las fases del proyecto.

i. Administrador de configuraciones

En el desarrollo de sistemas o aplicaciones con el tiempo, ha evolucionado para


ofrecer infinidad de herramientas de trabajo, lenguajes de programación y hardware.
De esta manera, el desarrollar un sistema uniforme se ha convertido en un problema;
por este motivo, se necesitan los Administradores de Configuración.

El Administrador de Configuraciones es la persona creada para llevar a cabo el


desarrollo de sistemas en forma ordenada y estructurada.

Aplica dirección y vigilancia técnica y administrativa a:

 Identificar y documentar las características funcionales y físicas de ítems de


configuración.
 Auditar los ítems de configuración para verificar cumplimiento de
especificaciones, control de interfaces y documentos, así como otros requisitos
adicionales que pueda definir el contrato.
 Controlar cambios a los ítems de configuración y su documentación
relacionada.
 Registrar y reportar información necesaria para administrar ítems de
configuración en forma efectiva, incluyendo el estatus de cambios propuestos y
el estatus de implementación de cambios aprobados.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 29

 Mantener el repositorio del proyecto actualizado con las últimas versiones de


todos los entregables del proyecto.
 Administrar el software utilizado para el control de versiones.
 Definir y controlar perfiles de acceso a los archivos del proyecto.
 Velar por la completitud y exactitud del repositorio del proyecto.

Las personas en dentro de este rol pueden manejar tres cosas: actividades
administrativas, auxiliares, y técnicas.

Una vez que el proyecto empiece, debe realizar las cinco actividades principales
durante el ciclo de vida del software:

 Identificación de configuración de software.


 Control de versiones.
 Control de cambios de software.
 Auditorías de configuración de software.
 Contabilidad del estatus de configuración de software.

j. Documentador

La documentación es necesaria para informar a todos los miembros del equipo de


desarrollo acerca del estado y evolución del proyecto.

Si la documentación no es adecuada, o lo suficientemente clara, puede generar


conflictos durante el ciclo de vida de desarrollo del software e incluso en etapas
posteriores.

El objetivo principal del rol de documentador es el de mantener la información


generada durante el proceso de desarrollo; además de permitir el almacenamiento y
recuperación de la documentación de los procesos y productos más recientes durante
el desarrollo, manteniéndola al día de manera consistente y construir el manual de
usuarios del sistema.

Entre las actividades se menciona:

 Debe diseñar y construir un repositorio de información compartido, donde se


almacenará la documentación.
 Especificar el formato que será usado para elaborar la documentación.
 Elaborar el manual de uso del sistema

Para cada uno de estos roles, se definen sus objetivos, actividades, interacción con
otros roles, herramientas a utilizar, perfil de las personas en ese rol y un plan de
trabajo.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 30

Resumen
1. Un Dato es la representación simbólica de un hecho o evento. La información es
un dato organizado en forma significativa para el receptor con valor real y
perceptible para las decisiones presentes y futuras.

2. Un Sistema de Información es un conjunto de elementos que interactúan entre


sí, con el fin de apoyar las actividades de una empresa o negocio. Un sistema de
información realiza cuatro actividades básicas: entrada, almacenamiento,
procesamiento y salida de información.

3. El ciclo de vida de un sistema es el proceso evolutivo que se sigue al


implementar un sistema o subsistema de información basado en computadora. El
SLC consiste en una serie de tareas que siguen de cerca los pasos del enfoque
de sistema.

4. La tecnología CASE es la automatización del desarrollo de software para mejorar


la calidad del sistema de información. El uso de las herramientas CASE puede
mejorar la productividad en el desarrollo de una aplicación de bases de datos. Y
por productividad se entiende tanto la eficiencia en el desarrollo, como la
efectividad del sistema desarrollado.

5. El desarrollo de software es una actividad que, dada su complejidad, debe


desarrollarse en grupo. Además, esta actividad requiere de distintas capacidades,
las que no se encuentran todas en una sola persona. Por ello, se hace necesario
formar el grupo de desarrollo con las personas que cubran todas las capacidades
requeridas.

Pueden revisar los siguientes enlaces para ampliar los conceptos vistos en esta
unidad:

o http://es.wikipedia.org/wiki/Sistema_de_informaci%C3%B3n
o http://www.monografias.com/trabajos29/ciclo-sistema/ciclo-sistema.shtml
o http://grupo3seccionb.blogspot.com/
o http://paulchasiluisa.galeon.com/
o https://ekipo6.wordpress.com/2007/10/15/roles-en-el-desarrollo-de-software/
o http://es.scribd.com/doc/6371079/Roles-Desarrollo-Software
o http://es.scribd.com/doc/6371079/Roles-Desarrollo-Software

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 31

UNIDAD

2
INTRODUCCIÓN AL NET
FRAMEWORK 4.5
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno describe el funcionamiento de una aplicación
en Visual Studio bajo la Arquitectura del .NET Framework 4.5. Además,
soluciona casos prácticos donde intervienen los elementos de una aplicación
orientada a objetos bajo el lenguaje C#.

TEMARIO

2.1 Tema 2 : Conceptos básicos del .NET Framework


2.1.1 : Arquitectura del .NET Framework, definición básica
2.1.2 : Aplicaciones Windows Form
2.1.3 : Principales Controles
2.1.4 : Variables y Tipos de datos
2.1.5 : Estructuras de control: if, switch
2.1.6 : Manejo de una clase, definir propiedades y métodos
2.1.7 : Definición de un constructor
2.1.8 : Manejo de un objeto: instancia de una clase

ACTIVIDADES PROPUESTAS

 Los alumnos identifican los elementos del .Net Framework.


 Los alumnos crean interfaces usando los controles básicos de Windows
Forms.
 Los alumnos crean clases y sus respectivas instancias que luego usarán
en aplicaciones Windows Forms.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 32

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 33

2.1. TEMA 2: CONCEPTOS BÁSICOS DEL .NET FRAMEWORK


2.1.1. Arquitectura del .NET Framework, definición básica

.NET Framework es una plataforma de desarrollo para compilar aplicaciones de


Windows, Windows Phone, Windows Server y Microsoft Azure. Está formado por
Common Language Runtime (CLR), que es el motor de ejecución que controla las
aplicaciones en ejecución y la biblioteca de clases de .NET Framework, que
proporciona una biblioteca de código probado y reutilizable al que pueden llamar los
desarrolladores desde sus propias aplicaciones, la cual incluye clases, interfaces y
tipos de valor que son compatibles con una amplia gama de tecnologías..NET
Framework proporciona un entorno de ejecución administrado, un desarrollo e
implementación simplificado, e integración con una gran variedad de lenguajes de
programación, incluidos Visual Basic y Visual C#.

Figura 6: Arquitectura del .NET Framework

Especificación Común de Lenguajes (CLS)

Es un conjunto de directivas proporcionadas por Microsoft para el desarrollo de


lenguajes compatibles con .NET. Además:

 Fijan las características comunes de los lenguajes.


 Los fabricantes pueden apliarlas o modificarlas.
 Todos los lenguajes .NET producen código administrable.
 .NET puede ejecutar también código generado por lenguajes que no sigan
CLS.
 La elección de un lenguaje u otro no dependerá de la velocidad de ejecución.
 Posibilidad de crear una aplicación con componentes desarrollados en distintos
lenguajes.
 La curva de aprendizaje para un nuevo lenguaje .NET es menor.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 34

Biblioteca de Clases Base

Es un conjunto de clases que permiten a todos los lenguajes .NET realizar tareas
comunes (entrada/salida, acceso a Bases de Datos, interfaz de usuario, etc.). Además:

 Su forma de acceso es común a todos los lenguajes.


 Permiten su modificación mediante herencia.
 Colección de código OO que puede ser empleado desde cualquier lenguaje
.NET.
 Contiene los tipos básicos, clases I/O, seguridad, etc.

Figura 7: Biblioteca de Clases de .NET Framework

Common Language Runtime (CLR)

.NET Framework proporciona un entorno en tiempo de ejecución denominado


Common Language Runtime (Entorno Común de Ejecución para Lenguajes), que
ejecuta el código y proporciona servicios que facilitan el proceso de desarrollo.

Figura 8: Common Language Runtime (CLR)

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 35

Los compiladores y las herramientas exponen la funcionalidad de Common Language


Runtime y permiten escribir código con las ventajas que proporciona este entorno de
ejecución administrado. El código desarrollado con un compilador de lenguaje
orientado al tiempo de ejecución se denomina código administrado. Este código se
beneficia de características como la integración entre lenguajes, el control de
excepciones entre lenguajes, la seguridad mejorada, la compatibilidad con la
implementación y las versiones, un modelo simplificado de interacción y servicios de
generación de perfiles y depuración.

El motor en tiempo de ejecución ofrece las siguientes ventajas:

 Mejoras en el rendimiento.
 Capacidad para utilizar fácilmente componentes desarrollados en otros
lenguajes.
 Tipos extensibles que proporciona una biblioteca de clases.
 Características del lenguaje como herencia, interfaces y sobrecarga para la
programación orientada a objetos.
 Compatibilidad con el control de excepciones estructurado.
 Compatibilidad con atributos personalizados.
 Recolección de elementos no utilizados

Servicios del .NET Framework

Los servicios que ofrece .NET Framework a las aplicaciones en ejecución son los
siguientes:

 Sistema de tipos comunes, en los lenguajes de programación tradicionales,


el compilador define los tipos básicos, lo que complica la interoperabilidad entre
lenguajes. En .NET Framework, los tipos básicos los define el sistema de tipos
de .NET Framework y son comunes a todos los lenguajes que tienen como
destino .NET Framework.
 Biblioteca de clases extensa, en lugar de tener que escribir cantidades
extensas de código para controlar operaciones comunes de programación de
bajo nivel, los programadores pueden usar una biblioteca de tipos accesible en
todo momento y sus miembros desde la biblioteca de clases de .NET
Framework.
 Ejecución en paralelo, .NET Framework ayuda a resolver conflictos entre
versiones y permite que varias versiones de Common Language Runtime
coexistan en el mismo equipo. Esto significa que también pueden coexistir
varias versiones de las aplicaciones, y que una aplicación se puede ejecutar en
la versión de .NET Framework con la que se compiló.
 Compatibilidad con múltiples versiones (multi-targeting), al usar la
Biblioteca de clases portable de .NET Framework, los desarrolladores pueden
crear ensamblados que funcionen en varias plataformas, como Windows 7,
Windows 8, Windows 8.1, Windows Phone y Xbox 360.

Objetivos del .NET Framework

 Centrarse en el desarrollo de la lógica de Negocios.


 Proporcionar un entorno coherente de programación orientada a objetos.
 Minimizar conflictos: implantación y versiones.
 Proporcionar ejecución segura de código.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 36

 Eliminar problemas de rendimiento de código interpretado o con scripting3.


 Ofrece al programador una experiencia coherente entre tipos de aplicaciones
muy diferentes como las basadas en Windows o de tipo Web.
 Reducir la complejidad de servicios Web.

2.1.2. Aplicaciones Windows Form

Windows Forms es una de las dos tecnologías que se utiliza en Visual Studio para
crear aplicaciones cliente inteligentes basadas en Windows que se ejecutan en .NET
Framework. Windows Forms es especialmente adecuado para escenarios de
desarrollo rápido de aplicaciones donde la prioridad principal es una interfaz gráfica de
usuario. El Diseñador de Windows Forms se utiliza para crear la interfaz de usuario, y
permite obtener acceso a otras características de diseño y ejecución, tales como las
siguientes:

 Uso avanzado de bases de datos mediante DataGridView.


 Barras de herramientas y otros elementos de interfaz de usuario que pueden
tener el aspecto y el comportamiento de Microsoft Windows XP, Microsoft
Office o Microsoft Internet Explorer.

2.1.2.1. Creación de un nuevo proyecto Windows Forms

Inicie Visual Studio 2013, luego elija la opción de Nuevo proyecto… o también desde
el menú Archivo / Nuevo / Proyecto…

Figura 9: Visual Studio 2013

3Scripting, es un tipo de lenguaje de programación, son interpretados comando por comando


cada vez que se ejecutan.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 37

En el presente manual, usaremos Aplicaciones de Windows Forms bajo


el lenguaje de Visual C#.

En el cuadro Nuevo proyecto, elegimos el lenguaje Visual C#, luego se escoge


Aplicación de Windows Forms y después asignamos el nombre y la ubicación donde
se almacenarán los elementos del proyecto. Al finalizar, presionamos el botón
Aceptar.

Figura 10: Creación de un proyecto Windows Forms en Visual C#

También, es posible cambiar la configuración para guardar un nuevo proyecto usando el menú
Herramientas / Opciones…, en Proyectos y soluciones / General se desmarca la opción
Guardar nuevos proyectos al crearlos.

Figura 11: Cuadro de Opciones

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 38

Luego, cuando se crea un nuevo proyecto, donde no es necesario asignar un nombre, la


pantalla cambiará de la siguiente forma:

Figura 12: Nuevo proyecto

Después, debe guardarse el proyecto con la opción de Guardar todo desde la


Barra de herramientas Estándar o desde el menú Archivo / Guardar todo.
En el cuadro Guardar proyecto, asignamos el nombre y la ubicación donde se
almacenarán los elementos del proyecto. Al finalizar, presionamos el botón Guardar.

Figura 13: Cuadro de Guardar proyecto

Es importante que reconozcas la forma en que trabajarás con el Visual


Studio al momento de crear proyectos.

En el presente manual, los proyectos se guardarán al momento de


crearlos.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 39

2.1.2.2. Partes del Entorno de Desarrollo Integrado (IDE) de Visual Studio

Figura 14: Partes del IDE de Visual Studio

a. Explorador de Soluciones

El Explorador de soluciones proporciona una vista


organizada de los proyectos y sus archivos, así como
acceso rápido a los comandos relativos a ellos.
Normalmente, una barra de herramientas asociada a
esta ventana ofrece los comandos que se utilizan con
más frecuencia con el elemento resaltado en la lista.

Para tener acceso al Explorador de soluciones,


seleccione menú Ver / Explorador de soluciones.

b. Cuadro de Herramientas

El Cuadro de herramientas muestra iconos para controles y


otros elementos que puede agregar a proyectos de Visual
Studio.

Para abrir el Cuadro de herramientas, seleccione menú Ver /


Cuadro de herramientas.

Los iconos del Cuadro de herramientas se pueden arrastrar a


la vista de diseño. Cualquier acción agrega el código básico
para crear una instancia del elemento Cuadro de
herramientas en el archivo de proyecto activo.

El Cuadro de herramientas solo muestra los elementos que son adecuados para el tipo
de archivo con el que usted está trabajando. Puede buscar en el Cuadro de
herramientas para filtrar más los elementos que aparecen.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 40

c. Ventana Propiedades

La Ventana Propiedades permite cambiar las


propiedades y eventos en tiempo de diseño de los
objetos seleccionados en el formulario actual. También,
puede usarlo para editar y ver las propiedades de los
archivos, los proyectos y la solución.

Para activarlo, seleccione menú Ver / Ventana


Propiedades. También, puede abrirla presionando F4.

La Ventana Propiedades muestra distintos tipos de


campos de edición, según las necesidades de una
propiedad determinada. Entre estos campos de
edición, se incluyen cuadros de edición, listas
desplegables y vínculos a cuadros de diálogo de editor
personalizado. Las propiedades que se muestran en gris son de solo lectura.

Existen otros elementos que se verán de acuerdo como se avance en el


presente manual.

2.1.2.3. Compilar e Iniciar la Ejecución del Proyecto

Con el entorno de desarrollo integrado (IDE) de Visual Studio, resulta fácil compilar un
proyecto y ejecutar la aplicación resultante. Tenemos las siguientes maneras:

 Presione F5 en el IDE de Visual Studio. Se compilará el proyecto y ejecuta la


aplicación en el depurador de Visual Studio.
 Seleccione menú Depurar / Iniciar depuración. Se compilará el proyecto y
ejecuta la aplicación en el depurador de Visual Studio.
 Presione CTRL+F5 en el IDE de Visual Studio. Se compilará el proyecto y
ejecuta la aplicación sin depurar.

2.1.2.4. Archivo Principal: Program.cs

Permite indicar el nombre del formulario que se muestra al ejecutar el proyecto.

Conforme agregue otros formularios al proyecto ingrese a este archivo e


indique el nombre del formulario a ejecutar.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 41

2.1.3 Principales Controles

Los formularios Windows Forms proporcionan controles y componentes que realizan


varias funciones. A continuación, se describen algunos de los principales controles de
formularios Windows Forms:

2.1.3.1 Form (Formulario)

El formulario es el primer objeto o control que se visualiza al


crear un proyecto Windows Forms y constituye la pantalla o
ventana donde se colocan otros objetos o controles como
etiquetas, controles de texto, botones, etc. Además, permite
que se escriban los códigos para cada control en el lenguaje
C# necesario para su correcto uso.

Propiedades

 Name: Obtiene o establece el nombre del control.


 BackColor: Obtiene o establece el color de fondo del control.
 BackgroundImage: Establece una imagen como fondo del formulario.
 BackgroundImageLayout: Diseño de la imagen de fondo, sus valores son:
None, Tile, Center, Stretch, Zoom.
 ControlBox: Determina si la ventana tiene o no botones de control.
 Font: Obtiene o establece la fuente del texto que muestra el control.
 ForeColor: Obtiene o establece el color de primer plano del control.
 FormBorderStyle: Establece el estilo del borde del formulario
 Icon: Indica el ícono del formulario es decir aquel que va en la barra de título,
se visualizará también en la barra de tareas de windows cuando el formulario
se minimiza.
 MaximizeBox: Permite que el botón de maximizar que se encuentra en los
botones de control se encuente habilitado o no.
 MinimizeBox: Permite que el botón de minimizar que se encuentra en los
botones de control se encuentren habilitado o no.
 ShowIcon: Indica si un ícono se muestra o no en la barra de título del
formulario.
 ShowInTaskbar: Determina si el formulario aparece en la barra de tareas de
windows.
 Text: Obtiene o establece el texto asociado al control.
 WindowState: Determina el estado visual inicial del formulario, sus valores
son: Normal, Minimized, Maximized,

Métodos

 Show(): Muestra el formulario.


 ShowDialog(): Muestra el formulario como un cuadro de diálogo modal.
 Close(): Cierra el formulario.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 42

Eventos

 Load: Tiene lugar cuando el usuario carga el formulario.

 FormClosing: Tiene lugar cuando el usuario cierra el formulario y especifica


qué se realizará antes de cerrarlo.

Para este control y los demás mencionados en el presente manal, solo


se listan las principales propiedades, métodos y eventos el resto se
deja para su propia investigación.

2.1.3.2 Label (Etiqueta)

El control Label se utiliza para mostrar texto que el usuario no puede


cambiar.

Propiedades

 Name.
 AutoSize: Obtiene o establece un valor que indica si el control cambia
automáticamente de tamaño para mostrar todo su contenido.
 BackColor.
 BorderStyle: Obtiene o establece el estilo de borde del control.
 Font.
 ForeColor.
 Text.
 TextAlign: Obtiene o establece la alineación del texto de la etiqueta.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 43

2.1.3.3 TextBox (Cuadro de texto)

El control TextBox muestra texto que puede ser editado por los usuarios
en tiempo de ejecución o ser modificado mediante programación.

Propiedades

 Name.
 BackColor.
 BorderStyle.
 Enabled: Obtiene o establece un valor que indica si el control puede responder
a la interacción del usuario.
 Font.
 ForeColor.
 MaxLength: Obtiene o establece el número máximo de caracteres que el
usuario puede escribir o pegar en el control.
 Multiline: Obtiene o establece un valor que indica si es un control TextBox
multilínea.
 PasswordChar: Obtiene o establece los caracteres utilizados para enmascarar
caracteres de una contraseña en un control TextBox de una sola línea.
 ReadOnly: Obtiene o establece un valor que indica si el texto del cuadro de
texto es de solo lectura.
 Text.
 TextAlign: Obtiene o establece cómo se alinea el texto en un control TextBox.
 Visible: Obtiene o establece un valor que indica si se muestra el control y
todos sus controles secundarios.

Métodos

 Clear():Borra todo el texto del control de cuadro de texto.


 Focus():Establece el foco de entrada en el control.

Eventos

 KeyPress: Se produce cuando se presiona una tecla mientras el control tiene


el enfoque.

 Leave: Se produce cuando el control pierde el enfoque.

 TextChanged: Se produce cuando cambia el contenido del control.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 44

2.1.3.4 ComboBox (Cuadro combinado)

Muestra una lista desplegable de elementos.

Propiedades

 Name.
 BackColor.
 DataSource: Obtiene o establece el origen de datos del control.
 DisplayMember: Obtiene o establece el valor que se va a mostrar en el
control.
 DropDownStyle: Obtiene o establece el estilo del control, sus valores son:
Simple, DropDown, DropDownList.
 Enabled.
 Font.
 ForeColor.
 Items: Representa la colección de los elementos que contiene el ComboBox.
 MaxLength.
 SelectedIndex: Obtiene o establece el índice que especifica el elemento
seleccionado actualmente.
 SelectedValue: Obtiene o establece el valor especificado por la propiedad
ValueMember.
 Text.
 ValueMember: Obtiene o establece el valor real para los elementos del control.
 Visible.

Métodos

 Focus().

Eventos

 Leave.

 SelectionChangeCommitted: Se produce cuando el usuario cambia el


elemento seleccionado y se muestra dicho cambio en ComboBox.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 45

2.1.3.5 ListBox (Cuadro de lista)

Muestra una lista de elementos.

Propiedades

 Name.
 BackColor.
 BorderStyle.
 DataSource.
 DisplayMember.
 Enabled.
 Font.
 ForeColor.
 Items.
 SelectedIndex.
 SelectedValue.
 ValueMember.
 Visible.

Métodos

 Focus().

Eventos

 DoubleClick: Se produce cuando se hace doble clic en el control.

 Leave.

 SelectedIndexChanged: Se produce cuando se ha modificado la propiedad


SelectedIndex.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 46

2.1.3.6 RadioButton (Boton de opción)

Muestra un botón que puede activarse o desactivarse.

Propiedades

 Name.
 AutoSize.
 BackColor.
 CheckAlign: Obtiene o establece la ubicación de la parte de casilla del control
RadioButton.
 Checked: Obtiene o establece un valor que indica si el control está activado,
sus valores son: False, True.
 Enabled.
 Font.
 ForeColor.
 Text.
 TextAlign.
 Visible.

Métodos

 Focus().

Eventos

 CheckedChanged: Se produce cuando cambia el valor de la propiedad


Checked.

 Leave.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 47

2.1.3.7 CheckBox (Casilla de verficación)

Muestra una casilla y una etiqueta para texto. Se utiliza en general para
establecer opciones.

Propiedades

 Name.
 AutoSize.
 BackColor.
 CheckAlign.
 Checked.
 CheckState: Obtiene o establece el estado del CheckBox.
 Enabled.
 Font.
 ForeColor.
 Text.
 TextAlign.
 Visible.

Métodos

 Focus().

Eventos

 CheckedChanged.

 Leave.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 48

2.1.3.8 NumericUpDown (Cuadro de número)

Muestra una lista de números a través de la cual los usuarios se pueden


desplazar mediante botones hacia arriba y hacia abajo.

Propiedades

 Name.
 AutoSize.
 BackColor.
 BorderStyle.
 DecimalPlaces: Obtiene o establece la alineación de las posiciones decimales
que se van a mostrar en el cuadro de número.
 Enabled.
 Font.
 ForeColor.
 Increment: Obtiene o establece el valor en que se incrementa o disminuye el
cuadro de número cuando se hace clic en los botones Arriba o Abajo.
 Maximum: Obtiene o establece el valor máximo del cuadro de número.
 Minimum: Obtiene o establece el valor mínimo del cuadro de número.
 TextAlign.
 ThousandsSeparator: Obtiene o establece un valor que indica si se mostrará
un separador de miles en el cuadro de número cuando sea necesario.
 UpDownAlign: Obtiene o establece la alineación de los botones Arriba y Abajo
del cuadro de número.
 Value: Obtiene o establece el valor asignado al control.
 Visible.

Métodos

 Focus().

Eventos

 Leave.

 ValueChanged: Se produce cuando se ha cambiado, de algún modo, la


propiedad Value.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 49

2.1.3.9 DateTimePicker (Control de fecha)

Muestra un calendario gráfico que permite que los usuarios seleccionen


una fecha o una hora.

Propiedades

 Name.
 CalendarFont: Obtiene o establece el estilo de fuente que se aplica al
calendario.
 CalendarForeColor: Obtiene o establece el color de primer plano del
calendario.
 CustomFormat: Obtiene o establece la cadena de formato personalizado de
fecha y hora. Tiene efecto cuando el valor de la propiedad Format es Custom.
 DropDownAlign: Obtiene o establece la alineación del calendario desplegable
en el control DateTimePicker.
 Enabled.
 Font.
 Format: Obtiene o establece el formato de fecha y hora que se muestra en el
control, sus valores son: Long, Short, Time, Custom.
 MaxDate: Obtiene o establece la fecha y hora máximas que se pueden
seleccionar en el control.
 MinDate: Obtiene o establece la fecha y hora mínimas que se pueden
seleccionar en el control.
 ShowCheckBox: Obtiene o establece un valor que indica si se muestra una
casilla a la izquierda de la fecha seleccionada.
 ShowUpDown: Obtiene o establece un valor que indica si se utiliza un control
de número para ajustar el valor de fecha y hora.
 Value.
 Visible.

Métodos

 Focus().

Eventos

 Leave.

 ValueChanged.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 50

2.1.3.10 ListView (Lista con vista)

Muestra los elementos por medio de una de las cuatro vistas


disponibles. Las vistas son los siguientes:
Solo texto
Texto con iconos pequeños
Texto con iconos grandes
Una vista Detalles

Propiedades

 Name.
 BackColor.
 BorderStyle.
 CheckBoxes: Obtiene o establece un valor que indica si se va a mostrar una
casilla junto al elemento del control.
 Columns: Obtiene la colección de todos los encabezados de columna que
aparecen en el control.
 Enabled.
 Font.
 ForeColor.
 FullRowSelect: Obtiene o establece un valor que indica si al hacer clic en un
elemento se seleccionan todos sus subelementos.
 GridLines: Obtiene o establece un valor que indica si aparecen líneas de
cuadrícula entre las filas y las columnas que contienen los elementos y
subelementos del control.
 Items: Obtiene una colección que contiene todos los elementos del control.
 View: Obtiene o establece cómo se muestran los elementos en el control.
 Visible.

Métodos

 Focus().

Eventos

 Leave.

 SelectedIndexChanged: Se produce cuando cambia la colección


SelectedIndices.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 51

2.1.3.11 Button (Botón de comando)

Inicia, detiene o interrumpe un proceso.

Propiedades

 Name.
 AutoSize.
 BackColor.
 Enabled.
 Font.
 ForeColor.
 Image: Obtiene o establece la imagen que se muestra en un control de botón.
 ImageAlign: Obtiene o establece la alineación de la imagen en el control de
botón.
 Text.
 TextAlign.
 TextImageRelation: Obtiene o establece la posición del texto y de la imagen
entre sí.
 Visible.

Métodos

 Focus().

Eventos

 Click: Se produce cuando se hace clic en el control.

 Leave.

 MouseHover: Se produce cuando el puntero del mouse se sitúa sobre el


control.

 MouseLeave: Se produce cuando el puntero del mouse deja el control.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 52

2.1.3.12 GroupBox (Control de grupo)

Agrupa un conjunto de controles (tales como botones de radio) en un


marco con etiqueta, que no permite el desplazamiento.

Propiedades

 Name.
 AutoSize.
 BackColor.
 Enabled.
 Font.
 ForeColor.
 Text.
 Visible.

Métodos

 Focus().

2.1.3.13 TabControl (Control de fichas)

Proporciona una página con fichas para organizar y tener acceso a


controles agrupados de forma eficiente.

Propiedades

 Name.
 Enabled.
 Font.
 TabPages: Obtiene la colección de páginas de fichas de este control de fichas.
 Visible.

TabPage

Representa una sola ficha en un control TabControl.

Propiedades

 Name.
 BackColor.
 Font.
 ForeColor.
 Text.

Eventos

 Click: Se produce cuando se hace clic en el control.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 53

2.1.3.14 DataGridView

El control DataGridView proporciona una tabla personalizable para


mostrar datos. La clase DataGridView habilita la personalización de
celdas, filas, columnas y bordes.

Propiedades

 Name.
 AllowUserToAddRows: Obtiene o establece un valor que indica si se muestra
al usuario la opción de agregar filas.
 AllowUserToDeleteRows: Obtiene o establece un valor que indica si el
usuario puede eliminar filas del control DataGridView.
 AllowUserToResizeColumns: Obtiene o establece un valor que indica si los
usuarios pueden cambiar el tamaño de las columnas.
 AlternatingRowsDefaultCellStyle: Obtiene o establece el estilo de celda
predeterminado que se aplicará a las filas impares del control DataGridView.
 AutoSizeColumnsMode: Obtiene o establece un valor que indica cómo se
determina el ancho de las columnas.
 BorderStyle.
 CellBorderStyle: Obtiene el estilo de borde de celda del control DataGridView.
 ColumnHeadersVisible: Obtiene o establece un valor que indica si se muestra
la fila de encabezados de columna.
 Columns: Obtiene una colección que contiene todas las columnas del control.
 DataSource.
 DefaultCellStyle: Obtiene o establece el estilo de celda predeterminado que se
va a aplicar a las celdas del control DataGridView si no se establece ninguna
otra propiedad de estilo de celda.
 Enabled.
 GridColor: Obtiene o establece el color de las líneas de cuadrícula que
separan las celdas de DataGridView.
 Rows: Obtiene una colección que contiene todas las filas del control
DataGridView.
 ScrollBars: Obtiene o establece el tipo de las barras de desplazamiento que
se muestran en el control DataGridView.
 SelectionMode: Obtiene o establece un valor que indica cómo se pueden
seleccionar las celdas del control DataGridView.
 Visible.

Métodos

 Focus().

Eventos

 CellContentClick: Se produce cuando se hace clic en el contenido de una


celda.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 54

 DoubleClick: Se produce cuando se hace doble clic en el control.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 55

2.1.4. Variables y Tipos de datos

Una variable representa un valor de un tipo determinado de dato o un objeto de una


clase. El valor que la variable almacena puede cambiar, pero el nombre sigue siendo
el mismo.

A continuación, se listan los principales tipos de datos:

2.1.4.1. string

Variable que permite almacenar una cadena o secuencia de caracteres.

Declaración y asignación

C# al ser un lenguaje orientado a objetos, una variable string también se


define como un objeto string, el cual presenta propiedades y métodos,
entre ellos:
 Length, devuelve el número de caracteres de la cadena.
 Substring(), extrae una subcadena.
 ToLower(), convierte la cadena a minúsculas.
 ToUpper(), convierte la cadena a mayúsculas.
 IndexOf(), devuelve la posición al buscar una subcadena dentro
de la cadena.
 Trim(), quita los espacios en blanco al inicio y final de la cadena.

Por ejemplo:

2.1.4.2. char

Variable que permite almacenar un carácter.

Declaración y asignación

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 56

2.1.4.3. int

Variable que permite almacenar números enteros. Es equivalente al tipo int32.

Declaración y asignación

C# además posee otros tipos enteros como los siguientes:


 int16, cuyo valor va desde -32768 hasta 32767.
 int32, cuyo valor va desde -2,147,483,648 hasta 2,147,483,647.
 int64, cuyo valor va desde -9,223,372,036,854,775,808 hasta
9,223,372,036,854,775,807. Es equivalente a long.

2.1.4.4. double

Variable que permite almacenar números decimales de 64 bits, se debe usar el sufijo d
o D.

Declaración y asignación

2.1.4.5. decimal

Variable que permite almacenar números decimales de 128 bits, se debe usar el sufijo
m o M.

Declaración y asignación

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 57

2.1.4.6. bool

Variable que permite almacenar un valor booleano o lógico ya sea true (Verdadero) o
false (Falso).

Declaración y asignación

2.1.4.7. DateTime

Variable que permite almacenar fechas y horas.

Declaración y asignación

DateTime además posee las siguientes propiedades y métodos:


 Day, obtiene el día del valor representado.
 Month, obtiene el mes del valor representado.
 Year, obtiene el año del valor representado.
 ToDay, obtiene la fecha actual.
 Hour, obtiene la hora del valor representado.
 Minute, obtiene los minutos del valor representado.
 Second, obtiene los segundos del valor representado.
 Now, obtiene la hora actual.
 TimeOfDay, obtiene la hora del día del valor representado.
 toString(), convierte la fecha en string.
 AddDays(), suma un número de días al valor representado.
 AddMonths(),suma un número de meses al valor representado.
 AddYears(),suma un número de años al valor representado.

2.1.4.8. Arreglos

Son matrices unidimensionales que permiten almacenar más de un valor, su tipo


depende de cómo sea declarado.

Declaración y asignación

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 58

2.1.4.9. Instancia a una Clase

Es posible realizar una instancia hacia una clase existente o creada en el proyecto,
con ello creamos un objeto que tendrá las propiedades y métodos de la clase
instanciada.

Declaración y asignación

2.1.5. Estructuras de control: if, switch

2.1.5.1. Estructura if

Una instrucción if permite ejecutar una sentencia o bloque de sentencias si se cumple


la condición evaluada al inicio, caso contrario se ejectutará otra sentencia o grupo de
sentencias.

En la condición a evaluar, se pueden utilizan los siguientes operadores de


comparación:

Operador Descripción Ejemplo


> Mayor que a>b
< Menor que a<b
>= Mayor o igual que a>=b
<= Menor o igual que a<=b
== Igual a a==b
!= Diferente de a!=b

Además de los operadores lógicos:

Operador Descripción Ejemplo


&& Y lógico 4>3 && 5<3
|| O lógico 3!=5 || 4==3

Sintaxis1: Solo para el caso verdadero (son necesarios las llaves {}).

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 59

Sintaxis2: Para el caso verdadero y falso (son necesarios las llaves {}).

Sintaxis3: Para una sentencia en el caso verdadero y falso (no se usan llaves {}).

Ejemplo1: Si el stock es menor a 10, el estado será “Realizar pedido”, caso contrario
el estado será “Stock regular”.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 60

Ejemplo2: Si el tiempo de servicio es superior a 5, calcula el 15% de beneficio junto al


mensaje “Accede a beneficios”, caso contrario calcula el 3% de beneficio junto al
mensaje “Todavía no cumple con el tiempo establecido”.

Ejemplo3: Si el tiempo de servicio es superior a 5 y el tipo de empleado es Nombrado


(N), calcula un beneficio de 20% junto al mensaje “Accede a beneficio”.

También es posible usar la estructura if en su modo anidado:

Sintaxis4:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 61

Ejemplo4: Si el stock es a partir de 100, el estado será “Stock normal”, si el stock es a


partir de 50, el estado será “Stock intermedio”, si el stock es a partir de 10, el estado
será “Stock regular”, caso contrario el estado será “Realizar pedido”.

Otra forma de usar las condiciones en C#, es usando el siguiente


Operador condiconal:

Sintaxis:

Ejemplo:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 62

2.1.5.2. Estructura switch

Una instrucción switch permite elegir uno entre varios bloques de sentencia,
dependiendo del valor de la variable evaluada al inicio.

Sintaxis1: Para un caso en general, donde los valores son constantes que se
comparan con el valor de la variable.

Sintaxis2: En caso de evaluar números, donde los valores de las contantes numéricas
pueden ser números específicos o rangos (de 2 a 5 o de 6 a 10).

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 63

Sintaxis3: En caso de evaluar caracteres, donde los valores de las contantes pueden
ser letras o textos.

Ejemplo: Se calcula el monto del pasaje en función al destino.

La instrucción default es opcional y se ejecuta cuando ninguno de las


constantes señaladas en los casos se cumple.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 64

2.1.6. Manejo de una clase, definir propiedades y métodos

2.1.6.1. Clases

Una clase es un componente importante de la programación orientada a objetos,


permite crear tipos personalizados propios mediante la agrupación de variables de
otros tipos, métodos y eventos.

Cada clase definida puede tener distintos miembros de clase, entre los que se incluyen
las propiedades que describen los datos de clase, los métodos que definen el
comportamiento de la clase y los eventos que proporcionan comunicación entre
distintos objetos y clases.

Sintaxis:

Ejemplo1: Crearemos la clase Estudiante.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 65

2.1.6.2. Propiedades y Campos

Las propiedades y campos representan la información que contiene una clase.

Los campos se parecen a las variables, ya que se pueden leer y establecer


directamente. Las propiedades tienen procedimientos get y set, que proporcionan el
control sobre cómo se establecen o devuelven los valores.

Sintaxis:

La mayoría de las propiedades tienen métodos get y set para retornar y establecer el
valor de la propiedad. Sin embargo, se pueden crear propiedades de solo lectura o
solo escritura omitiendo el método de propiedad get o set.

Sintaxis: Solo Lectura

Sintaxis: Solo Escritura

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 66

Ejemplo2: En la clase anterior Estudiante, crearemos dos propiedades: Nombre y


Edad.

2.1.6.3. Métodos

Un método representa la acción que se puede realizar en una clase.

Para ejecutar varias sentencias y devolver un valor, utilice la siguiente sintaxis:

Para ejecutar varias sentencias y no devolver un valor, utilice la siguiente sintaxis:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 67

Ejemplo3: En la clase anterior Estudiante, crearemos un método: Estado que en


función a la edad devolverá el mensaje “Mayor de Edad” o “Menor de Edad”.

2.1.6.4. Modificadores y niveles de acceso

Todas las clases y miembros de clase pueden especificar el nivel de acceso que
proporcionan a otras clases mediante los modificadores de acceso.

Entre ellas tenemos los siguientes:

Modificador Descripción
Puede obtener acceso al tipo o miembro cualquier
public otro código del mismo ensamblado o de otro
ensamblado que haga referencia a este.

Solamente puede obtener acceso al tipo o miembro


private
el código de la misma clase.

Solamente puede obtener acceso al tipo o miembro


protected el código de la misma clase o de una clase
derivada.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 68

2.1.7 Definición de un Constructor

Un constructor es un método de clase que se ejecuta automáticamente cuando se


crea un objeto de un tipo determinado. Normalmente, los constructores inician los
miembros de datos del nuevo objeto. Un constructor se puede ejecutar solo una vez
cuando se crea una clase. Además, el código del constructor siempre se ejecuta antes
que cualquier otro código en una clase.

Sintaxis:

Ejemplo4: En la clase anterior Estudiante, definiremos un constructor que inicie el


valor del campo _edad a 5.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 69

2.1.8 Manejo de un objeto: instancia de una clase

Un objeto es una entidad concreta basada en una clase, la cual realiza una instancia
de una clase.

Los objetos se pueden crear con la palabra clave new seguida del nombre de la clase
en la que se basará el objeto.

Sintaxis:

Ejemplo5: Para crear un objeto basado en la clase anterior Estudiante, definir valores
a sus propiedades y acceder a su método usaremos:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 70

LABORATORIO 1: Creación de Formularios (GUI - Interfaz Gráfica de Usuario)

Caso1: Cree el siguiente formulario: Form1

Implemente un formulario donde se pueda registrar la siguiente información en dos


fichas usando los controles tabControl, tabPage, Label, TextBox, DateTimePicker,
GroupBox, RadioButton, NumericUpDown, ListBox, ComboBox, CheckBox y Button:

GUI del Formulario

Procedimiento:

En el Form1, agregue los siguientes controles y cambie sus respectivas propiedades:

 Un tabControl.
 En tabPage1, cambie la propiedad:
o Text a Principal
 Tres Label, cambie su propiedad Text según el modelo.
 Un TextBox, cambie las propiedades:
o Name a txtNombre
o MaxLength a 30
 Un DateTimePicker, cambie sus propiedades:
o Name a dtpFechaNac
o Format a Short
o Value a 01/01/1970
 Un GroupBox, cambie la propiedad:
o Text a Género
 Dos RadioButton, cambie sus propiedades:
o Name a rbtMasculino y rbtFemenino respectivamente.
o Text a Masculino y Femenino respectivamente.
 Un NumericUpDown, cambie sus propiedades:
o Name a nudHijos.
o Maximum a 10.
 En tabPage2, cambie la propiedad:
o Text a Otros

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 71

 Dos Label, cambie su propiedad Text según el modelo.


 Un ListBox, cambie sus propiedades:
o Name a lstAreas.
o Items con los valores Sistemas, Administración, Contabilidad, Ventas y
Atención al Cliente.
 Un ComboBox, cambie sus propiedades:
o Name a cboDistrito.
o DropDownStyle a DropDownList.
o Items con los valores Lima, Callao, Independencia y SMP.
 Un CheckBox, cambie sus propiedades:
o Name a chkAsegurado.
o Text a Trabajador Asegurado.
 Un Button, cambie sus propiedades:
o Name a btnCerrar.
o Text a Cerrar Formulario.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 72

Caso2: Cree el siguiente formulario: Form2

Implemente una clase que permita controlar el registro de pagos a los empleados de
una empresa. Dicho empleado cuenta con los siguientes datos: Nombre, Categoría
(que puede ser A, B, C o D), Minutos de tardanza y Horas extra. Considere que por
cada categoría se establece un Sueldo como se muestra a continuación:

Categoría Sueldo (En S/.)


A 2800
B 2300
C 1900
D 1600
Consideraciones:
 Por cada Minuto de tardanza, se le hará un descuento de S/. 10.0 y por cada
Hora extra se le adiciona S/. 25.0.
 En caso no tenga Minutos de tardanza, recibirá un incentivo del 10% sobre el
Sueldo según su categoría.
 Los Minutos de tardanza y Horas extra tendrán el valor 0 al iniciar la clase.
 Como resumen, se muestra el Total de registros.

GUI del Formulario

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 73

Procedimiento:

1. En el proyecto, agregue un archivo de clase: Desde el Explorador de


soluciones, haga Clic derecho en el nombre del proyecto / Opción Agregar
/ Clase…

2. En el cuadro, Agregar nuevo elemento, escriba el nombre de la clase:


clsEmpleado. Luego, presione el botón Agregar.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 74

3. En el archivo de clase, defina los campos, propiedades y métodos:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 75

4. En el proyecto, agregue un Windows Forms: Desde el Explorador de


soluciones, haga Clic derecho en el nombre del proyecto / Opción Agregar
/ Windows Forms…

5. En el cuadro, Agregar nuevo elemento, deje el nombre por defecto. Luego,


presione el botón Agregar.

6. En el Form2, agregue los siguientes controles y cambie sus respectivas


propiedades:

Asigne a los controles los siguientes nombres:

Control Nombre
TextBox1 txtNombre
ComboBox1 cboCategoria
NumericUpDown1 nudMinutos
NumericUpDown2 nudHoras
Button1 btnRegistrar
ListView1 lvEmpleados
Label7 lblRegistros
Button2 btnCerrar

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 76

7. En el Form2, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario y agregue los siguientes tres procedimientos:

Haga el llamado de los procedimientos indicados en el evento Load del formulario:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 77

Haga doble clic en el botón Registrar Datos para habilitar el evento Click y escriba:

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

8. Para ejecutar el Form2, abra el archivo Program.cs y cambie:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 78

9. Obtendrá el siguiente resultado:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 79

Caso3: Cree el siguiente formulario: Form3

Implemente una clase que permita controlar el registro de compras de boletos aéreos
de una Agencia de Viajes en Lima. Se debe considerar los siguientes datos: Nombre
del cliente, Destino, Cantidad y Fecha de registro. Considere que cada Destino tendrá
un Costo de Boleto como se muestra a continuación:

Destino Costo de Boleto (En $)


Argentina 720
Colombia 480
Brasil 860
Uruguay 390
Puerto Rico 950

Consideraciones:
 Se debe calcular el valor del Subtotal (Costo de Boleto por Cantidad), el IGV
(18% sobre el Subtotal) y el Neto a pagar.
 Realice la validación del cuadro de texto para el ingreso de solo textos
alfabéticos.
 La Cantidad tendrá el valor 0 al iniciar la clase.
 La Fecha de registro será una propiedad de solo lectura y será capturada
desde el sistema.
 Como resumen se muestra el Total pagado (Suma de todo el Neto a pagar) y el
Total de registros.

GUI del Formulario

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 80

Procedimiento:

1. En el proyecto, agregue un archivo de clase: Desde el Explorador de


soluciones, haga Clic derecho en el nombre del proyecto / Opción Agregar
/ Clase…

2. En el cuadro, Agregar nuevo elemento, escriba el nombre de la clase:


clsAgencia. Luego presione el botón Agregar.

3. En el archivo de clase, defina los campos, propiedades y métodos:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 81

4. En el proyecto, agregue un Windows Forms: Desde el Explorador de


soluciones, haga Clic derecho en el nombre del proyecto / Opción Agregar
/ Windows Forms…

5. En el cuadro, Agregar nuevo elemento, deje el nombre por defecto. Luego,


presione el botón Agregar.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 82

6. En el Form3, agregue los siguientes controles y cambie sus respectivas


propiedades:

Asigne a los controles los siguientes nombres:

Control Nombre
TextBox1 txtCliente
ComboBox1 cboDestino
NumericUpDown1 nudCantidad
Button1 btnRegistrar
ListView1 lvBoletos
Label7 lblFecha
Label8 lblTotalPagado
Label9 lblRegistros
Button2 btnCerrar

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 83

7. En el Form3, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario y agregue los siguientes tres procedimientos:

Inicialice el valor del acumulador totalPagado en 0, luego haga el llamado de los


procedimientos indicados y muestre la fecha del sistema en el evento Load del
formulario:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 84

Haga doble clic en el botón Registrar Datos para habilitar el evento Click y escriba:

Elija el control txtCliente y haga doble clic en el evento KeyPress desde la ventana de
Propiedades:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 85

En el evento KeyPress, escriba:

Con relación a este código tenemos:


Char.IsLetter, evalúa si es un carácter alfabético.
Char.IsControl, evalúa si se presiona la tecla retroceso.
Char.IsSeparator, evalúa si se presiona la barra separadora.
e.KeyChar, representa lo que se ingresa por teclado.
e.Handled, desbloquea (false) o bloquea (true) el ingreso del texto.

Además, también está disponible:


Char.IsNumber, evalúa si es un carácter numérico.

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

8. Para ejecutar el Form3, abra el archivo Program.cs y cambie:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 86

9. Obtendrá el siguiente resultado:

Caso4: Cree los siguientes formularios: Form4 y Form5

Implemente un primer formulario (Form4) que abra un segundo formulario (Form5) y


envie los datos ingresados hacia el primer formulario.

GUI de los Formularios

Procedimiento:

1. En el proyecto, agregue un Windows Forms: Desde el Explorador de


soluciones, haga Clic derecho en el nombre del proyecto / Opción Agregar
/ Windows Forms…

2. En el cuadro, Agregar nuevo elemento, deje el nombre por defecto. Luego,


presione el botón Agregar.

3. En el Form4, agregue los siguientes controles y cambie sus respectivas


propiedades:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 87

Asigne a los controles los siguientes nombres:

Control Nombre
Label4 lblNombre
Label5 lblDistrito
Button1 btnObtenerDatos
Button2 btnCerrar
4. En el proyecto, agregue un Windows Forms: Desde el Explorador de
soluciones, haga Clic derecho en el nombre del proyecto / Opción Agregar
/ Windows Forms…

5. En el cuadro, Agregar nuevo elemento, deje el nombre por defecto. Luego,


presione el botón Agregar.

6. En el Form5, agregue los siguientes controles y cambie sus respectivas


propiedades:

Asigne a los controles los siguientes nombres:

Control Nombre
TextBox1 txtNombre
ComboBox1 cboDistrito
Button1 btnEnviarDatos
Button2 btnCerrar

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 88

7. En el Form5, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario, defina el Delegado y Evento que serán los
encargados de enviar la información de este formulario (Form5) hacia el otro (Form4),
luego haga el llamado del procedimiento indicado en el evento Load del formulario:

Un Delegado es un tipo que define una firma de método y puede


proporcionar una referencia a cualquier método con una firma
compatible. Puede invocar (o llamar) al método a través del delegado.
Los delegados se utilizan para pasar métodos como argumentos a otros
métodos.

Haga doble clic en el botón Enviar Datos para habilitar el evento Click y escriba:

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

8. En el Form4, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario y cree el siguiente procedimiento:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 89

Haga doble clic en el botón Obtener Datos para habilitar el evento Click y escriba:

Aquí se hace una instancia hacia el formulario Form5 y a su Delegado.

Dicho Delegado recibe como argumento el nombre del procedemiento


recibirInfo() el cual muestra la información en los controles Label del
Form4.

Finalmente se muestra el formulario de forma modal (es decir debe


cerrarse para que el usuario pueda continuar trabajando con el resto de
la aplicación).

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

9. Para ejecutar el Form4, abra el archivo Program.cs y cambie:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 90

10. Obtendrá el siguiente resultado:

Actividad

Caso5: Cree el siguiente formulario: Form6

Implemente una clase que permita controlar el registro de pagos de los vendedores de
una empresa. Considere los siguientes datos: Nombre del vendedor, Categoría (que
puede ser A1, A2, A3, A4 o A5) y Horas de trabajo. Cada Categoría tendrá una Tarfia
como se muestra a continuación:

Categoría Tarifa (En S/.)


A1 22
A2 25
A3 32
A4 40
A5 45

Consideraciones:
 Se debe calcular el valor del Parcial (Tarifa por Horas de trabajo), el Descuento
(10% sobre el Parcial) y el Sueldo a pagar.
 Realice la validación del cuadro de texto para el ingreso de solo textos
alfabéticos.
 La Categoría del vendedor tendrá un valor inicial de “A1” y las Horas de trabajo
su valor inicial será de 30.
 Como resumen se muestra el Sueldo total pagado (Suma de todo el Sueldo a
pagar) y el Total de registros.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 91

GUI del Formulario

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 92

Resumen
1. .NET Framework es una plataforma para aplicaciones informáticas que sirve de
base para ejecutar un programa desarrollado en .NET en cualquiera de sus
lenguajes (VB.NET, Visual C# .NET, etc.).

2. CRL (Common Language Runtime) es el entorno común de ejecución que


administra el código en tiempo de ejecución y proporciona los servicios básicos
como la administración de memoria, control de excepciones, etc.

3. BCL (Base Class Library) es la Biblioteca de clases base compuesta de una


colección de código Orientado a Objetos que puede ser empleado desde cualquier
lenguaje .NET.

4. Windows Forms permiten crear aplicaciones cliente inteligentes basadas en


Windows que se ejecutan en .NET Framework.

5. Entre los principales controles encontramos los siguientes: Label, TextBox,


DateTimePicker, GroupBox, RadioButton, NumericUpDown, ListBox, ComboBox,
CheckBox y Button.

6. Las variales permiten almacenar un determinado valor, su tipo puede ser: string,
int, doublé, bool, DateTime, Arreglos e instancia a una Clase.

7. La estrcutura de control if, permite elegir un bloque de instrucciones según la


evaluación de una consición.

8. Las clases definen las características concretas de un determinado tipo de objeto.

Puede revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad:

o https://msdn.microsoft.com/es-es/library/hh425099(v=vs.110).aspx
o https://msdn.microsoft.com/es-es/library/xfak08ea(v=vs.110).aspx
o https://msdn.microsoft.com/es-es/library/5011f09h.aspx
o https://msdn.microsoft.com/es-pe/library/06tc147t(v=vs.120).aspx
o https://msdn.microsoft.com/es-es/library/dd460654.aspx

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 93

UNIDAD

3
ADMINISTRACIÓN DE DATOS
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno recupera, inserta, actualiza y elimina
información de una base de datos en SQL Server haciendo uso del lenguaje
Transact/SQL implementado en procedimientos almacenados que optimicen
las operaciones de consulta y actualización de registros.

TEMARIO

3.1 Tema 3 : Recuperación de datos


3.1.1 : Consulta de datos
3.1.2 : Ordenar registros
3.1.3 : Consultas condicionales
3.1.4 : Combinación de tablas

3.2 Tema 4 : Lenguaje de manipulación de datos


3.2.1 : Insertar datos
3.2.2 : Actualizar datos
3.2.3 : Eliminar datos

3.3 Tema 5 : Manejo de Procedimientos almacenados


3.3.1 : Procedimientos almacenados
3.3.2 : Paso de parámetros
3.3.3 : Modificación de datos por medio de procedimientos almacenados

ACTIVIDADES PROPUESTAS

 Los alumnos recuperan los datos de las tablas de una Base de Datos
mediante sentencias de consulta SQL.
 Los alumnos insertan, actualizan y eliminan los datos de las tablas de una
Base de Datos mediante sentencias de manipulación Transact/SQL.
 Los alumnos crean procedimientos almacenados donde realizan procesos
de consulta, inserción, actualización y eliminación de datos.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 94

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 95

3.1 TEMA 3: RECUPERACIÓN DE DATOS


Un Lenguaje de Manipulación de Datos (Data Manipulation Languaje - DML) es un
lenguaje proporcionado por el sistema de gestión de bases de datos que permite a los
usuarios de la misma llevar a cabo las tareas de consulta o manipulación de los datos,
organizados por el modelo de datos adecuado.

A continuación, veremos las sentencias para

3.1.1. Consulta de datos

La instrucción SELECT especifica las columnas de la tabla que la consulta debe


recuperar.

Sintaxis General:

En el presente manual, usaremos la siguiente sintaxis:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 96

Orden de procesamiento lógico de la instrucción SELECT

El siguiente listado muestra el orden de procesamiento lógico, u orden de enlace, para


una instrucción SELECT. Este orden determina el momento en que los objetos
definidos en un paso están disponibles para las cláusulas de los pasos subsiguientes.

Por ejemplo, si el procesador de consultas se puede enlazar (obtener acceso) a las


tablas o vistas definidas en la cláusula FROM, estos objetos y sus columnas quedan
disponibles para todos los pasos subsiguientes. A la inversa, dado que la cláusula
SELECT es el paso 8, las cláusulas precedentes no pueden hacer referencia a los
alias de columna o las columnas derivadas definidos en esa cláusula. Sin embargo, las
cláusulas subsiguientes, como la cláusula ORDER BY, sí pueden hacer referencia a
ellos.

Observe que la ejecución física real de la instrucción está determinada por el


procesador de consultas y el orden de esta lista puede variar.
1º. FROM
2º. ON
3º. JOIN
4º. WHERE
5º. GROUP BY
6º. WITH CUBE o WITH ROLLUP
7º. HAVING
8º. SELECT
9º. DISTINCT
10º. ORDER BY
11º. TOP

También, es posible usar la instrucción SELECT para crear una tabla en


función a una consulta.

Sintaxis:

Ejemplo1: Seleccione todos los campos de la tabla Clientes.

Ejemplo2: Seleccione los campos cliNombres, cliApellidoPaterno, cliApellidoMaterno


de la tabla Clientes.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 97

3.1.2. Ordenar registros

La cláusula ORDER BY ordena los datos devueltos por una consulta. Use esta
cláusula para ordenar el conjunto de resultados de una consulta por la lista de
columnas especificada y, opcionalmente, limitar las filas devueltas a un intervalo
especificado. El orden en que se devuelven las filas en un conjunto de resultados no
se puede garantizar, a menos que se especifique una cláusula ORDER BY.

ASC | DESC
Indica que los valores de la columna especificada se deben ordenar en sentido
ascendente o descendente. ASC ordena del valor mínimo al valor máximo. DESC
ordena del valor máximo al valor mínimo. ASC es el criterio de ordenación
predeterminado. Los valores NULL se tratan como los valores más bajos posibles.
Ejemplo3: Seleccione todos los campos de la tabla Clientes y ordene por el campo
cliApellidoPaterno de forma ascendente.

Ejemplo4: Seleccione todos los campos de la tabla Clientes, luego ordene por el
campo cliEstadoCivil de forma descendente y por cliApellidoPaterno de forma
ascendente.

También, es posible usar el número de orden de cada campo en la tabla,


en el ejemplo anterior se pudo usar:

Donde 14 es el número de orden del campo cliEstadoCivil y 3 es el


número de orden del campo cliApellidoPaterno.

Limitar resultados

La cláusula TOP limita las filas devueltas en un conjunto de resultados de la consulta a


un número o porcentaje de filas especificado en SQL Server. Cuando se usa TOP
junto con la cláusula ORDER BY, el conjunto de resultados se limita al primer número
N de filas ordenadas; de lo contrario, devuelve el primer número N de filas en un orden
sin definir.

Ejemplo5: Seleccione todos los campos de la tabla Productos donde se muestren los
3 productos con el mayor Stock.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 98

3.1.3. Consultas condicionales

Es posible aplicar diversos criterios que permitan filtrar los registros y recuperar
solamente aquellos que cumplan con nuestra necesidad.

La clausula condicional WHERE, determina qué registros de las tablas señaladas en la


cláusula FROM aparecerán en los resultados de la instrucción SELECT.

Las condiciones de búsqueda o calificaciones de las cláusulas WHERE pueden incluir


los siguientes operadores:
 Operadores de comparación
 Operadores lógicos
 Operador Between
 Operador In
 Operador Like
 Funciones de agregado

3.1.3.1. Operadores de comparación

Los operadores de comparación soportados por SQL son: >, >=, <, <=, = y <>, los
cuales comprueban la veracidad de alguna condición. Como resultado devuelven un
tipo de dato lógico TRUE o FALSE.

Ejemplo6: Seleccione todos los campos de la tabla Productos donde se muestren los
productos cuyo Stock es superior a 200.

3.1.3.2. Operadores lógicos

Los operadores lógicos soportados por SQL son: AND, OR y NOT, los cuales permiten
unir o negar expresiones. Como resultado devuelven un tipo de dato lógico TRUE o
FALSE.

Ejemplo7: Seleccione todos los campos de la tabla Productos donde se muestren los
productos cuyo Stock sea entre 200 y 250.

3.1.3.3. Operador Between

Recupera los registros según el intervalo de valores indicado para un campo.

Sintaxis:

Ejemplo8: Seleccione todos los campos de la tabla Productos donde se muestren los
productos cuyo Precio sea entre 15 y 30.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 99

3.1.3.4. Operador In

Recupera los registros que coinciden con alguno de los valores de una lista.

Sintaxis:

Ejemplo9: Seleccione todos los campos de la tabla Clientes que sean solteros (S) o
casados (C).

3.1.3.5. Operador Like

Determina si el valor de un campo coincide con un patrón especificado. Un patrón


puede contener carácteres normales y comodines. Durante la operación de búsqueda
de coincidencias de patrón, los caracteres normales deben coincidir exactamente con
los caracteres especificados en la cadena de caracteres. Sin embargo, los comodines
pueden coincidir con fragmentos arbitrarios de la cadena.

Dentro de la Expresión se pueden usar los siguientes comodines:

Comodín Descripción
% Cualquier cadena de cero o más caracteres.

_ Cualquier carácter.
Acepta los caracteres dentro del intervalo ([a-d])
2[ ]
o indicados de forma individual ([abcd]).
No acepta los caracteres dentro del intervalo
[^ ] ([^a-d]) o los indicados de forma individual
([ ^abcd]).

Ejemplo10: Seleccione todos los campos de la tabla Clientes cuyo segundo carácter
del apellido paterno sea la letra “e”.

Ejemplo11: Seleccione todos los campos de la tabla Clientes cuyo primer carácter del
apellido paterno sea desde la letra “A” hasta la letra “M”.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 100

Ejemplo12: Seleccione todos los campos de la tabla Clientes cuyo primer carácter del
apellido paterno no sea desde la letra “A” hasta la letra “M”.

3.1.3.6. Funciones de agregado

Las funciones de agregado realizan un cálculo sobre un conjunto de valores y


devuelven un solo valor. Si exceptuamos la función COUNT, todas las funciones de
agregado ignoran los valores NULL. También, se utilizan con la cláusula GROUP BY
de la instrucción SELECT.

Entre las funciones de agregado, tenemos los siguientes:

Función de Agregado Descripción


Devuelve el número de elementos de un
COUNT(*)
grupo.
Devuelve el número de elementos únicos de
COUNT(distinct Campo)
un grupo.
Devuelve la suma de los elementos de un
SUM(Campo)
grupo.
Devuelve el promedio de elementos de un
AVG(Campo)
grupo.
Devuelve el máximo valor de los elementos
MAX(Campo)
de un grupo.
Devuelve el mínimo valor de los elementos
MIN(Campo)
de un grupo.

Ejemplo13: Muestre la cantidad de registros de la tabla Productos.

Ejemplo14: Muestre la cantidad de registros únicos en el campo ventaCliID de la tabla


Ventas.

Ejemplo15: Muestre la cantidad de registros agrupado por Estado Civil de la tabla


Clientes.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 101

Ejemplo16: Muestre la suma del Stock agrupado por el campo prodMarcaID de la


tabla Productos.

Ejemplo17: Muestre el promedio del Stock agrupado por el campo prodMarcaID de la


tabla Productos.

Ejemplo18: Muestre el máximo y mínimo valor del Stock agrupado por el campo
prodMarcaID de la tabla Productos.

3.1.4. Combinación de tablas

Cuando se incluyen varias tablas en una consulta, se usan combinaciones que ayudan
a obtener los resultados deseados. Una combinación ayuda a que la consulta
devuelva únicamente los registros deseados de cada tabla, basándose en cómo esas
tablas están relacionadas con otras tablas en la consulta.

Las combinaciones se puedes clasificar en:

3.1.4.1. Combinación interna INNER JOIN

Las combinaciones internas son el tipo de combinación más común. Indican a una
consulta que las filas de una de las tablas combinadas corresponden a las filas de otra
tabla, basándose en los datos incluidos en los campos combinados. Cuando se
ejecuta una consulta con una combinación interna, se incluirán en las operaciones de
consulta únicamente las filas en las que haya un valor común en ambas tablas
combinadas.

Ejemplo19: En la imagen mostrada, las tablas Clientes y Distritos se relacionan por


medio de los campos: cliDisID y disID respectivamente. Seleccione los campos cliID,
cliApellidoPaterno, cliApellidoMaterno, cliNombres y disNombre.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 102

Para un trabajo más cómodo, también es posible usar alias en el nombre


de las tablas:

3.1.4.2. Combinación externa: LEFT JOIN, RIGHT JOIN, FULL JOIN

Las combinaciones externas indican a una consulta que, si bien algunas de las filas en
ambos lados de la combinación coinciden exactamente, la consulta debe incluir todas
las filas de una tabla así como las filas de la otra tabla que comparten un valor común
en ambos lados de la combinación

LEFT JOIN

Es una combinación izquierda, esto quiere decir que la consulta incluye todas las filas
de la primera tabla de la declaración SQL de la cláusula FROM y sólo las filas de la
otra tabla donde el campo de combinación contiene valores comunes de ambas tablas.

Ejemplo20: En la imagen mostrada, las tablas Ventas y Clientes se relacionan por


medio de los campos: ventaCliID y cliID respectivamente. Seleccione todos los
campos de ambas tablas, donde se muestren los clientes que tengan ventas
registradas y los clientes que no tengan ventas registradas.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 103

RIGHT JOIN

Es una combinación derecha, esto quiere decir que la consulta incluye todas las filas
de la segunda tabla de la declaración SQL de la cláusula FROM y solo las filas de la
otra tabla donde el campo de combinación contiene valores comunes de ambas tablas

Ejemplo21: De la imagen anterior. Seleccione todos los campos de ambas tablas,


donde se muestren las ventas registradas y los clientes que tengan ventas registradas.

FULL JOIN

Para retener la información que no coincida al incluir las filas no coincidentes en los
resultados de una combinación, utilice una combinación externa completa. SQL Server
proporciona el operador de combinación externa completa, FULL JOIN, que incluye
todas las filas de ambas tablas, con independencia de que la otra tabla tenga o no un
valor coincidente

Ejemplo22: De la imagen anterior. Seleccione todos los campos de ambas tablas.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 104

LABORATORIO 2: Sentencias SQL para Recuperar Datos

Implementación de la Base de Datos BDNotas en SQL Server 2014

Descripción de la base de datos

La base de datos BDNOTAS brinda soporte para registrar la información relacionada a


una institución educativa de nivel superior. En ella se tienen las siguientes tablas:
tbAlumnos, tbPagos, tbPagoAux, tbCursos, tbNotas y tbEspecialidad. La base
de datos posee un modelo relacional y es gestionado por Microsoft SQL Server 2014,
obteniendo el siguiente diagrama:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 105

Restauración de la base de datos

Restaure la BD desde la copia de seguridad BDNotas.bak.

Cree un nuevo archivo de consulta y escriba las sentencias SQL para los siguientes
casos:

1. Defina en uso la Base de datos BDNotas.

Sentencia SELECT

2. Muestre todos los campos de la tabla tbAlumnos.

3. Muestre los campos aluApellidos, aluNombres y aluFechaNacimiento de la


tabla tbAlumnos.

Ordenar registros: ORDER BY

4. Muestre todos los campos de la tabla tbCursos ordenado por el campo


curNCreditos de forma ascendente.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 106

5. Muestre todos los campos de la tabla tbPagos ordenado por el campo


pagoCiclo de forma ascendente y luego por el campo pagoFecha de forma
descendente.

6. Del caso anterior, use el número de orden de cada campo.

7. Muestre los 6 valores más altos del campo notaEFinal de la tabla tbNotas.

8. Muestre los 10 valores más bajos del campo pagoMonto de la tabla


tbPagos.

--Escriba su respuesta

Consultas condicionales

Operadores de Comparación

9. Muestre todos los campos de la tabla tbNotas cuyo campo notaEFinal sea
a partir de 13.

Operadores Lógicos

10. Muestre todos los campos de la tabla tbNotas cuyo campo notaEFinal sea
entre 13 y 15.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 107

Operador Between

11. Muestre todos los campos de la tabla tbNotas cuyo campo notaEFinal sea
entre 13 y 15.

12. Muestre todos los campos de la tabla tbPagos cuyo pagoFecha sea entre
el 01/01/2012 y 31/12/2012 (es decir del Año 2012).

También, podría usar la función Year():

Además, también tiene la función Month() que develve el número del


mes de la fecha señalada.

Operador In

13. Muestre todos los campos de la tabla tbPagos cuyo campo pagoCiclo sea
2011-1, 2011-2 o 2012-1.

14. Muestre todos los campos de la tabla tbAlumnos cuyo campo aluEspID
obtenga sus valores desde el campo espID de la tabla tbEspecialidad
considerando que el campo espNombre sea Adminitración, Contabilidad o
Idiomas.

15. Muestre todos los campos de la tabla tbNotas cuyo campo notaCurID
obtenga sus valores desde el campo curID de la tabla tbCursos
considerando que el campo curNombre sea Algorítmica, Lenguaje Java,
Desarrollo Web I o Base de Datos I.

--Escriba su respuesta

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 108

16. Muestre los Alumnos que hayan realizado pagos en los ciclos 2012-1 o
2012-2. Considere las tablas tbAlumnos y tbPagos.

17. Muestre los Cursos cuya nota de examen parcial sea desde 17 Considere
las tablas tbCursos y tbNotas.

--Escriba su respuesta

Operador Like

18. Muestre todos los campos de la tabla tbAlumnos cuyo campo


aluApellidos inicie con la letra “R”.

19. Muestre todos los campos de la tabla tbAlumnos cuyo campo aluApellidos
contenga la letra “v”.

20. Muestre todos los campos de la tabla tbAlumnos cuyo campo aluApellidos
inicie con la letra R, S o T.

21. Muestre todos los campos de la tabla tbAlumnos cuyo campo aluApellidos
tenga como segundo carácter la letra “a”.

22. Muestre todos los campos de la tabla tbAlumnos cuyo campo aluApellidos
tenga como segundo carácter desde la letra “a” hasta la letra “m”.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 109

23. Muestre todos los campos de la tabla tbAlumnos cuyo campo aluApellidos
tenga como segundo carácter desde la letra “n” hasta la letra “z”.

Funciones de agregado

Función COUNT()

24. Muestre la cantidad de registros de la tabla tbAlumnos.

25. Muestre la cantidad de registros de la tabla tbAlumnos cuya especialidad


es Contabilidad.

26. Muestre la cantidad de registros agrupado por el campo aluGenero en la


tabla tbAlumnos.

27. Muestre la cantidad de alumnos que tienen pagos en el ciclo 2012-1 o


2012-2.

28. Muestre la cantidad de alumnos cuya nota de examen final es a partir de


17.

--Escriba su respuesta

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 110

Función SUM()

29. Muestre la suma del campo espCosto de la tabla tbEspecialidad.

Función AVG()

30. Muestre el promedio del campo espCosto de la tabla tbEspecialidad.

31. Muestre el promedio del campo notaEFinal agrupago por el campo


notaAluID.

32. Muestre el promedio del campo pagoMonto de la tabla tbPagos del ciclo
2011-1.

--Escriba su respuesta

Función MAX() / MIN()

33. Muestre el mayor y menor costo de la tabla tbEspecialidad.

34. Muestre la mayor y menor nota de examen final agrupado por el campo
notaAluID en la tabla tbNotas.

35. Muestre los registros de la tabla tbAlumnos cuyo costo es el menor en la


tabla tbEspecialidad.

--Escriba su respuesta

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 111

36. Muestre la cantidad de registros, la suma y promedio del campo


pagoMonto de la tabla tbAlumnos agrupado por el campo pagoCiclo.

--Escriba su respuesta

37. Muestre la cantidad de registros, la suma y promedio del campo


pagoMonto de la tabla tbAlumnos cuyo año del campo pagoFecha es 2011
agrupado por el campo pagoCiclo.

--Escriba su respuesta

Combinación de tablas

Combinación interna: INNER JOIN

38. Muestre la información combinada de las tablas tbAlumnos y


tbEspecialidad, considere los campos aluID, aluApellidos, aluNombres y
espNombre ordenado por el campo aluApellidos de forma ascendente.

39. Muestre la información combinada de las tablas tbAlumnos y tbPagos,


considere los campos aluApellidos, aluNombres, pagoCiclo, pagoFecha y
pagoMonto ordenado por el campo aluApellidos de forma ascendente y
luego por el campo pagoFecha de forma descendente.

--Escriba su respuesta

40. Muestre la información combinada de las tablas tbNotas, tbAlumnos y


tbCursos, considere los campos aluID, aluApellidos, aluNombres,
curNombre y el promedio de las notas considerando:
notaEParcial * 40% + notaEFinal * 60%

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 112

Resumen
1. La sentencia SELECT permite recuperar campos y registros de las tablas de una
Base de Datos.

2. La cláusula ORDER BY permite ordenar por uno o más campos de forma


ascendente o descendente.

3. Para crear consultas condicionales, tenemos los operadores de comparación,


lógicos, Between, In y Like, además de las funciones de agregado COUNT(),
SUM(), AVG(), MAX() y MIN().

4. La combinación interna INNER JOIN es la más usada para combinar dos o más
tablas que guardan relación.

Puede revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad:

o https://msdn.microsoft.com/es-ES/library/ms176104(v=sql.120).aspx
o https://msdn.microsoft.com/es-ES/library/ms188385(v=sql.120).aspx
o https://msdn.microsoft.com/es-es/library/ms188047(v=sql.120).aspx
o https://msdn.microsoft.com/es-es/library/ms173454(v=sql.120).aspx
o http://www.desarrolloweb.com/articulos/2355.php

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 113

3.2 TEMA 4: LENGUAJE DE MANIPULACIÓN DE DATOS


El Lenguaje de Manipulación de Datos que a continuación veremos será para
modificar solo los datos almacenados en las tablas, como son Insertar, Actualizar y
Eliminar datos:

3.2.1. Insertar datos

La instrucción INSERT agrega uno o varios registros nuevos a una tabla en SQL.

La sintaxis básica para INSERT es:

Donde:

 Tabla es el nombre de la tabla donde se desea ingresar los nuevos datos.


 Columna es una lista opcional de nombres de campo en los que se insertarán
valores en el mismo número y orden que se especificarán en la cláusula
VALUES. Si no se especifica la lista de campos, los valores de expr en la
cláusula VALUES deben ser tantos como campos tenga la tabla y en el mismo
orden que se definieron al crear la tabla.
 Expr es una lista de expresiones o valores constantes, separados por comas,
para dar valor a los distintos campos del registro que se añadirá a la tabla. Las
cadenas de caracteres deberán estar encerradas entre apóstrofes (‘).

3.2.1.1. Insertar un único registro

Especificando todos los campos a ingresar

Ejemplo1: Inserte un nuevo registro en la tabla tbDistritos indicando todos los campos
con sus respectivos valores.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 114

Especificando únicamente los valores de los campos

Ejemplo2: Inserte un nuevo registro en la tabla tbDistritos indicando solo todos los
valores respectivamente.

Si no se especifica la lista de campos, los valores en la cláusula


VALUES deben ser tantos como campos tenga la tabla y en el mismo
orden que se definió al crear la tabla. Si se va a ingresar parcialmente
los valores en una tabla, se debe especificar el nombre de los campos a
ingresar, como en el Ejemplo1.

3.2.1.2. Insertar varios registros

Ejemplo3: Inserte tres nuevos registros en la tabla tbDistritos indicando solo todos los
valores respectivamente.

Los valores deben darse en el mismo orden que se definió al crear la


tabla, no es necesario especificar los nombres de los campos.

3.2.1.3. Insertar registros a partir de una tabla

Ejemplo4: Inserte los registros de la tabla tbPaisesBack hacia la tabla tbPaises.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 115

3.2.1.4. Insertar registros a partir de un archivo de texto

La instrucción BULK INSERT importa la información de un archivo de datos hacia una


tabla de datos. Dicho archivo debe tener una estructura específica como separadores
de campos y registros.

Sintaxis:

Donde:
 FIELDTERMINATOR define el separador para cada campo, puede ser el
carácter de coma (,), punto y coma (;) o tabulador (\t).
 ROWTERMINATOR define el separador para cada registro, se usa el carácter
de nueva línea (\n).

Ejemplo5: Importe los registros desde el archivo Trabajadores.txt ubicado en la unidad


C:\ hacia la tabla tbTrabajadores.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 116

3.2.2. Actualizar datos

La instrucción UPDATE cambia el contenido de uno o varios registros de una tabla en


SQL.

La sintaxis básica para UPDATE es:

Donde:

 Tabla es el nombre de la tabla cuyos campos se desea cambiar.


 Columna es una lista con los nombres de campo cuyos valores se modificarán.
 Expr son los nuevos valores que se asignaran a cada campo.
 WHERE sigue el mismo formato que la vista en la sentencia SELECT y
determina qué registros se modificarán.

3.2.2.1. Actualizar varios campos sin la cláusula WHERE

Ejemplo6: Actualice el campo prodStock aumentado en 5 al valor actual y el campo


prodPrecio aumentado en 20% de su valor actual en la tabla tbProductos.

El operador += y *= son equivalentes a usar:

3.2.2.2. Actualizar varios campos con la cláusula WHERE

Ejemplo7: Actualice los campos cliDireccion y cliTelefono cuyo cliID sea 3 en la tabla
tbClientes.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 117

3.2.3. Eliminar datos

La instrucción DELETE elimina uno o varios registros de una tabla en SQL.

La sintaxis básica para DELETE es:

Donde:

 Tabla es el nombre de la tabla cuyos registros se eliminarán.


 WHERE sigue el mismo formato que la vista en la sentencia SELECT y
determina qué registros se eliminarán.

Ejemplo8: Elimine todos los registros de la tabla tbPaisesBack.

Ejemplo9: Elimine los registros de la tabla tbProductosBack.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 118

LABORATORIO 3: Sentencias SQL para Manipular Datos

Seguiremos usando la Base de Datos BDNotas utilizado en el Laboratorio2.

Cree un nuevo archivo de consulta y escriba las sentencias SQL para los siguientes
casos:

1. Defina en uso la Base de datos BDNotas.

Sentencia INSERT

2. Inserte un registro en la tabla tbAlumnos señalando cada campo y su


respectivo valor.

3. Inserte un registro en la tabla tbAlumnos señalando solo sus respectivos


valores.

4. Inserte dos registros en la tabla tbAlumnos señalando solo sus


respectivos valores.

5. Inserte los registros de la tabla tbPagosAux hacia la tabla tbPagos.

Instrucción BULK INSERT

6. Importe los registros desde el archivo Pagos.txt ubicado en la unidad E:\


hacia la tabla tbPagos, considere el carácter punto y coma (;) como
separador de campos.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 119

7. Importe los registros desde el archivo Notas.txt ubicado en la unidad E:\


hacia la tabla tbNotas, considere el carácter coma (,) como separador de
campos.

--Escriba su respuesta

Sentencia UPDATE

8. Actualice el campo curNCreditos aumentado en 1 al valor actual en la


tabla tbCursos.

9. Actualice los campos aluNombres y aluProcedencia cuyo aluID sea A0015


en la tabla tbAlumnos.

10. Actualice el campo pagoFecha a 11/01/2013 en la tabla tbPagos para


aquellos registros cuyo campo pagoFecha sea 10/01/2013.

--Escriba su respuesta

Sentencia DELETE

11. Copie los registros de la tabla tbPagosAux en una nueva tabla llamada
tbPagosAux2, luego borre todos los registros de la tabla tbPagosAux2.

12. Elimine la tabla tbPagosAux2, copie los registros de la tabla tbPagosAux


en una nueva tabla llamada tbPagosAux2, luego borre los registros de la
tabla tbPagosAux2 cuyo pagoMonto es mayor a 340.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 120

Resumen
1. La sentencia INSERT agrega nuevos registros a una tabla perteneciente a una
Base de Datos.

2. La sentencia UPDATE cambia el contenido de uno o varios campos que puede


afectar a varios registros de una tabla perteneciente a una Base de Datos.

3. La sentencia DELETE elimina uno o varios registros de una tabla perteneciente a


una Base de Datos.

Puede revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad:

o https://msdn.microsoft.com/es-es/library/ms174335(v=sql.120).aspx#BasicSyntax
o https://msdn.microsoft.com/es-es/library/ms188365(v=sql.120).aspx
o https://msdn.microsoft.com/es-es/library/ms177523(v=sql.120).aspx#BasicSyntax
o https://msdn.microsoft.com/es-es/library/ms189835(v=sql.120).aspx#BasicSyntax

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 121

3.3 TEMA 5: MANEJO DE PROCEDIMIENTOS ALMACENADOS


3.3.1. Procedimientos almacenados

Un procedimiento almacenado de SQL Server es un grupo de una o varias


instrucciones Transact-SQL. Los procedimientos se asemejan a las construcciones de
otros lenguajes de programación, porque pueden:
 Aceptar parámetros de entrada y devolver varios valores en forma de
parámetros de salida al programa que realiza la llamada.
 Contener instrucciones de programación que realicen operaciones en la base
de datos. Entre otras, pueden contener llamadas a otros procedimientos.
 Devolver un valor de estado a un programa que realiza una llamada para
indicar si la operación se ha realizado correctamente o se han producido
errores, y el motivo de estos.

Los procedimientos almacenados se diferencian de las instrucciones SQL ordinarias y


de lotes de instrucciones SQL en que están precompilados. La primera vez que se
ejecuta un procedimiento almacenado, el procesador de consultas SQL Server lo
analiza y prepara un plan de ejecución que se almacena en forma definitiva en una
tabla de sistema. Posteriormente, el procedimiento se ejecuta según el plan
almacenado, puesto que ya se ha realizado la mayor parte del trabajo de
procesamiento de consultas, los procedimientos almacenados se ejecutan casi de
forma instantánea.

3.3.1.1. Crear un procedimiento almacenado

La sintaxis básica es:

La instrucción GO es opcional y permite terminar la creación o


modificación del procedimiento almacenado y continuar con la siguiente
instrucción SQL cuando se seleccionan y ejecutan varias líneas de
código SQL.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 122

Ejemplo1: Cree un procedimiento almacenado que muestre todos los registros de la


tabla tbClientes ordenado por el campo cliApellidoPaterno de forma ascendente.

Para ejecutar el procedimiento almacenado utilice:

Además, se puede usar la instrucción en su modo abreviado para crear y


ejecutar en procedimiento almacenado CREATE PROC y EXEC
respectivamente.

3.3.1.2. Modificar un procedimiento almacenado

La sintaxis básica es:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 123

Ejemplo2: Modifique el procedimiento almacenado anterior spListarClientes para que


muestre los campos señalados de las tablas tbClientes y tbDistritos.

3.3.1.3. Eliminar un procedimiento almacenado

La sintaxis básica es:

Ejemplo3: Elimine el procedimiento almacenado anterior spListarClientes.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 124

3.3.2. Paso de parámetros

Un procedimiento almacenado se comunica con el programa que lo llama mediante


sus parámetros. Cuando un programa ejecuta un procedimiento almacenado, es
posible pasarle valores mediante los parámetros del procedimiento.

Estos valores se pueden utilizar como variables estándar en el lenguaje de


programación TRANSACT-SQL. Un procedimiento almacenado puede tener hasta
2.100 parámetros, cada uno de ellos con un nombre, un tipo de datos, una dirección y
un valor predeterminado.

3.3.2.1. Parámetros de entrada

La dirección de un parámetro puede ser de entrada, esto quiere decir que al momento
de invocar un procedimiento almacenado se le pasa un valor a cada parámetro que se
ha definido para un trabajo interno dentro del procedimiento almacenado.

Es posible que al definir cada parámetro se le asigne un valor por defecto o


predeterminado.

Sintaxis:

Ejemplo4: Cree el procedimiento almacenado spListarClientesPorDistrito para que


muestre los campos señalados de las tablas tbClientes y tbDistritos. Debe solicitar
como parámetro de entrada el nombre de un Distrito.

Para ejecutar el procedimiento almacenado con parámetro utilice:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 125

Ejemplo5: Cree el procedimiento almacenado spListarProductos para que muestre


todos los registros de la tabla tbProductos cuyo Stock estará comprendido dentro de
un rango. Debe solicitar dos parámetros de entrada para los valores Inicial y Final del
rango, cada uno tendrá el valor por defecto de 0 y 100 respectivamente.

Al ejecutar se tienen las siguientes alternativas:

 Ingresar los valores a cada parámetro:

 Ingresar solo un valor, en este caso será el valor para el primer parámetro:

 Solo llamar al procedimiento sin ningún valor para los parámetros:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 126

3.3.2.2. Parámetros de salida

Para especificar un parámetro de salida, debe indicar la palabra clave OUTPUT en la


definición del parámetro en el procedimiento almacenado. El programa que realiza la
llamada también debe utilizar la palabra clave OUTPUT al ejecutar el procedimiento
almacenado, a fin de guardar el valor del parámetro en una variable que se pueda
utilizar en el programa que lo invoca.

Sintaxis:

Ejemplo6: Cree el procedimiento almacenado spTotalPorPresentacion para que


retorne el Total del Stock (parámetro de salida) según una Presentación (parámetro de
entrada) en la tabla tbProductos.

Para comprobar el resultado del procedimiento almacenado, escriba las siguientes


sentencias:

La función STR() devuelve datos de caracteres convertidos de datos


numéricos.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 127

3.3.3. Modificación de datos por medio de procedimientos almacenados

Los procedimientos almacenados también pueden ejecutar sentencias de actualización de


datos como los vistos anteriormente con: INSERT, UPDATE y DELETE.

Ejemplo7: Cree el procedimiento almacenado spInsertarDistrito que agregue un


registro a la tabla tbDistritos. Luego ejecútelo.

Ejemplo8: Cree el procedimiento almacenado spModificarDistrito que actualice un


registro de la tabla tbDistritos. Luego, ejecútelo.

Ejemplo9: Cree el procedimiento almacenado spBorrarDistrito que elimine un


registro de la tabla tbDistritos.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 128

LABORATORIO 4: Sentencias SQL para Procedimientos Almacenados

Seguiremos usando la Base de Datos BDNotas utilizado en el Laboratorio3.

Cree un nuevo archivo de consulta y escriba las sentencias SQL para los siguientes
casos:

1. Defina en uso la Base de datos BDNotas.

Sentencia CREATE PROCEDURE

2. Cree un Procedimiento Almacenado (SP) que muestre la información de la


tabla tbAlumnos ordenado por el campo aluApellidos de forma
ascendente. Luego, ejecute el SP.

3. Cree un SP que muestre la información de la tabla tbNotas y además


calcule el promedio: notaEParcial * 40% + notaEFinal * 60%, ordenado por
el campo notaEFinal de forma descendente. Luego, ejecute el SP.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 129

Sentencia ALTER PROCEDURE

4. Modifique el procedimiento spListarAlumnos, para que muestre los


campos aluID, aluNombres, aluApellidos y espNombre de las tablas
tbAlumnos y tbEspecialidad ordenado por el campo aluApellidos de forma
ascendente. Luego, ejecute el SP.

5. Modifique el procedimiento spListarNotas, para que muestre los campos


aluID, aluNombres, aluApellidos, además calcule el promedio:
notaEParcial * 40% + notaEFinal * 60%, de las tablas tbNotas y tbAlumnos
ordenado por el campo aluApellidos de forma ascendente y por el campo
notaEFinal de forma descendente. Luego, ejecute el SP.

--Escriba su respuesta

Sentencia DROP PROCEDURE

6. Elimine los dos procedimientos anteriores.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 130

Parámetros de entrada

7. Cree un SP que muestre los campos aluID, aluNombres, aluApellidos y


espNombre de las tablas tbAlumnos y tbEspecialidad ordenado por el
campo aluApellidos de forma ascendente. Debe solicitar como parámetro
de entrada el ID del alumno. Luego, ejecute el SP e indique el valor A0005.

8. Cree un SP que muestre la información de la tabla tbPagos cuyo campo


pagoFecha estará comprendido dentro de un rango. Debe solicitar dos
parámetros de entrada para los valores Inicial y Final del rango. Luego,
ejecute el SP e indique como valores el primer semestre del año 2011.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 131

9. Cree un SP que muestre los campos aluID, aluNombres, aluApellidos y


espNombre de las tablas tbAlumnos y tbEspecialidad. Debe solicitar como
parámetro de entrada el nombre de la especialidad. Luego, ejecute el SP e
indique el valor Contabilidad.

Parámetros de entrada con valor predeterminado

10. Cree un SP que muestre los campos aluID, aluNombres, aluApellidos,


pagoCiclo, pagoNCuota, pagoMonto y pagoFecha de las tablas tbPagos y
tbAlumnos. Debe solicitar como parámetro de entrada el ID de alumno
para el campo pagoAluID y otro parámetro de entrada para el año del
campo pagoFecha que tenga como valor predeterminado 2011. Luego,
ejecute el SP e indique los valores A0003 y 2012 respectivamente.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 132

11. Cree un SP que muestre los campos aluID, aluNombres, aluApellidos,


además calcule el promedio: notaEParcial * 40% + notaEFinal * 60%, de las
tablas tbAlumnos y tbNotas. Debe solicitar un primer parámetro de
entrada para el campo notaAluID, el campo notaEFinal estará
comprendido entre los valores de un segundo parámetro de entrada con
valor predeterminado a 0 y un tercer parámetro con valor predeterminado
a 20. Luego, ejecute el SP e indique el valor A0006.

Parámetros de salida

12. Cree un SP que devuelva la cantidad de alumnos. Debe retornar la


respuesta desde un parámetro de salida. Luego, ejecute el SP y muestre el
resultado.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 133

13. Cree un SP que permita ingresar una especialidad (parámetro de entrada)


y devuelva la cantidad de alumnos (parámetro de salida) de dicha
especialidad. Luego, ejecute el SP y muestre el resultado.

Las funciones CONVERT() y CAST() permiten cambiar el tipo de datos


por otro.

14. Cree un SP que permita ingresar un ID de Alumno (parámetro de entrada)


y devuelva (3 parámetros de salida) la nota de examen final máxima,
mínima y el promedio: notaEParcial * 40% + notaEFinal * 60% de dicho ID.
Luego, ejecute el SP y muestre los resultados.

15. Cree un SP que permita ingresar un ID de Alumno y un número que


representa el Año de la Fecha de Pago (2 parámetros de entrada) y
devuelva el Total pagado para dicho ID y Año. Luego, ejecute el SP y
muestre el resultado.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 134

Modificación de datos

16. Cree un SP que permita agregar un registro en la tabla tbAlumnos, utilice


parámetros de entrada para cada campo. Luego, ejecute el SP e ingrese
un valor para cada parámetro.

17. Cree un SP que permita modificar un registro en la tabla tbAlumnos,


utilice parámetros de entrada para cada campo. Luego, ejecute el SP e
ingrese un valor para cada parámetro.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 135

18. Cree un SP que permita eliminar un registro en la tabla tbAlumnos, utilice


un parámetro de entrada para el ID de alumno. Luego, ejecute el SP e
ingrese un valor para el parámetro.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 136

Resumen
1. Los procedimientos almacenados, agrupan sentencias SQL para recuperar y
manipular datos que luego podrán ser invocados en repetidas veces si es
necesario.

2. La instrucción CREATE PROCEDURE permite crear un procedimiento


almacenado.

3. La instrucción ALTER PROCEDURE permite modificar el contenido de un


procedimiento almacenado.

4. La instrucción DROP PROCEDURE permite eliminar un procedimiento


almacenado.

5. Los procedimientos almacenados aceptan parámetros de entrada y/o de salida.

6. Los procedimientos almacenados permiten usar las instrucciones INSERT,


UPDATE y DELETE.

Puede revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad:

o https://msdn.microsoft.com/es-es/library/ms187926(v=sql.120).aspx
o https://msdn.microsoft.com/es-es/library/ms189762(v=sql.120).aspx
o https://msdn.microsoft.com/es-es/library/ms174969(v=sql.120).aspx

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 137

UNIDAD

4
OPERACIONES CONECTADAS A
UN ORIGEN DE DATOS
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno realiza operaciones de consulta y
actualización de datos en un entorno conectado a un origen de datos dentro de
una aplicación Windows utilizando librerías ADO.NET.

TEMARIO

4.1 Tema 6 : Introducción a ADO.NET


4.1.1 : Arquitectura del ADO.NET
4.1.2 : Proveedores de ADO.NET

4.2 Tema 7 : Recuperación de datos


4.2.1 : Consulta de datos: La clase DataAdapter
4.2.2 : Poblar un DataSet: Uso de DataAdapter
4.2.3 : Utilizar parámetros con DataAdapter
4.2.4 : Manejo de Procedimientos Almacenados y parámetros

4.3 Tema 8 : Manipulación de datos


4.3.1 : Actualizar datos: La clase Command
4.3.2 : Ejecutar T-SQL o Procedimientos: La clase SqlCommand
4.3.3 : Manejo de parámetros en el proceso de actualización

ACTIVIDADES PROPUESTAS

 Los alumnos crean formularios que accede a la información de una Base


de Datos.
 Los alumnos utilizan el asistente y código con ADO.NET para conectar
con una Base de Datos.
 Los alumnos crean aplicaciones que consultan y manipulan la información
de una tabla de una Base Datos.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 138

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 139

4.1. TEMA 6: INTRODUCCIÓN A ADO.NET


ADO.NET proporciona acceso coherente a orígenes de datos como SQL Server y XML, así
como a orígenes de datos expuestos mediante OLE DB y ODBC. Las aplicaciones que
utilizan ADO.NET podrán conectarse a estos orígenes de datos y recuperar, controlar y
actualizar los datos contenidos.

ADO.NET separa el acceso a datos de la manipulación de datos y crea componentes


discretos que se pueden utilizar por separado o conjuntamente. ADO.NET incluye
proveedores de datos .NET Framework para conectarse a una base de datos, ejecutar
comandos y recuperar resultados. Los resultados se procesan directamente o se colocan
en un objeto DataSet de ADO.NET con el fin de exponerlos al usuario para un propósito
específico, combinados con datos de varios orígenes, o de pasarlos entre niveles. El objeto
DataSet de ADO.NET también puede utilizarse independientemente de un proveedor de
datos .NET Framework para administrar datos que son locales de la aplicación o que
proceden de un origen XML.

Características de ADO.NET
 Es independiente del lenguaje de programación que utilice.
 Trabaja con datos desconectados del origen de datos que la aplicación utilice.
 Integración con XML y ASP.NET.

4.1.1. Arquitectura del ADO.NET

Tradicionalmente, el procesamiento de datos ha dependido principalmente de un modelo


de dos niveles basado en una conexión. A medida que aumenta el uso que hace el
procesamiento de datos de arquitecturas de varios niveles, los programadores están
pasando a un enfoque sin conexión con el fin de proporcionar una mejor escalabilidad a
sus aplicaciones.

Figura 15: Arquitectura de ADO.NET

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 140

Los dos componentes principales de ADO.NET 4.5 para el acceso a los datos y su
manipulación son los proveedores de datos .NET Framework y DataSet.

Figura 16: Proveedores de Datos y DataSet


Fuente.- Tomado de https://technet.microsoft.com/nl-nl/library/27y4ybxw(v=vs.90).aspx

4.1.1.1. Proveedores de datos .NET Framework

Los proveedores de datos .NET Framework son componentes diseñados explícitamente


para la manipulación de datos y el acceso rápido a datos de lectura. Entre los componentes
tenemos:
a. El objeto Connection: proporciona conectividad a un origen de datos.
b. El objeto DataAdapter: proporciona el puente entre el objeto DataSet y el origen
de datos. DataAdapter utiliza objetos Command para ejecutar comandos SQL en el
origen de datos tanto para cargar DataSet con datos y reconciliar en el origen de
datos los cambios aplicados a los datos incluidos en el DataSet.
c. El objeto Command: permite tener acceso a comandos de base de datos para
devolver datos, modificar datos, ejecutar procedimientos almacenados y enviar o
recuperar información sobre parámetros.
d. El objeto DataReader: proporciona un flujo de datos de alto rendimiento desde el
origen de datos.

4.1.1.2. DataSet

El DataSet de ADO.NET está diseñado para el acceso a datos de manera desconectada al


origen de datos. Como resultado, se puede utilizar con múltiples y distintos orígenes de
datos, con datos XML o para administrar datos locales de la aplicación. DataSet contiene
una colección de uno o más objetos DataTable formados por filas (DataRow) y columnas
(DataColumn) de datos, así como información sobre claves principales, claves externas,
restricciones y de relación relacionada con los datos incluidos en los objetos DataTable.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 141

4.1.2. Proveedores de ADO.NET

Los proveedores de datos .NET Framework se utilizan para realizar una conexión a un
origen de datos, recuperar resultados y actualizar datos. Esos resultados se procesan
directamente, se colocan en un DataSet con el fin de que el usuario pueda verlos cuando
los necesite, se combinan con datos de varios orígenes o se utilizan de forma remota entre
niveles. Los proveedores de datos .NET Framework son ligeros, de manera que crean un
nivel mínimo entre el origen de datos y el código, con lo que aumenta el rendimiento sin
sacrificar funcionalidad. En la siguiente tabla, se describen los principales Proveedores de
datos .NET Framework:

Proveedor de datos.NET FrameWork Descripción

Acceso a datos a Microsoft SQL Server.


Proveedor de datos .NET Framework
Usa el espacio de nombres
para SQL Server
System.Data.SqlClient

Para orígenes de datos que se exponen


Proveedor de datos .NET Framework
mediante OLE DB. Utiliza el espacio de
para OLE DB
nombres System.Data.OleDb

Para orígenes de datos que se exponen


Proveedor de datos de .NET Framework
mediante ODBC. Utiliza el espacio de
para ODBC
nombres System.Data.Odbc
Para orígenes de datos de Oracle. El
proveedor de datos para Oracle es
Proveedor de datos de .NET Framework compatible con la versión 8.1.7 y
para Oracle posteriores del software de cliente de
Oracle y utiliza el espacio de nombres
System.Data.OracleClient

Proporciona acceso a datos para las


aplicaciones de Entity Data Model (EDM).
Proveedor EntityClient
Utiliza el espacio de nombres
System.Data.EntityClient

Acceso a datos a Microsoft SQL Server


Proveedor de datos .NET Framework
Compact 4.0. Usa el espacio de nombres
para SQL Server Compact 4.0
System.Data.SqlServerCe

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 142

4.1.2.1. Principales objetos para los proveedores de ADO.NET

En la siguiente tabla, se describen los cuatro objetos centrales que constituyen un


proveedor de datos de .NET Framework:

Objeto Descripción

Establece una conexión a un origen de datos determinado.


Connection La clase base para todos los objetos Connection es
DbConnection.

Llena un DataSet y realiza las actualizaciones necesarias


DataAdapter en el origen de datos. La clase base para todos los objetos
DataAdapter es DbDataAdapter.

Ejecuta un comando en un origen de datos. Expone


Parameters y puede ejecutarse en el ámbito de un objeto
Command
Transaction desde Connection. La clase base para todos
los objetos Command es DbCommand.

Lee un flujo de datos de solo avance y solo lectura desde


DataReader un origen de datos. La clase base para todos los objetos
DataReader es DbDataReader.

4.1.2.2. Proveedores de Datos de Microsoft SQL Server

El proveedor de datos .NET Framework para SQL Server (SqlClient) usa su propio
protocolo para comunicarse con SQL Server. Es ligero y presenta un buen rendimiento
porque está optimizado para tener acceso a SQL Server directamente, sin agregar una
capa OLE DB u ODBC. Las clases del proveedor de datos .NET Framework para SQL
Server se encuentran en el espacio de nombres System.Data.SqlClient.

Figura 17: Proveedor de Datos para SQL Server


Fuente.- Tomado de http://www.ehu.eus/mrodriguez/archivos/csharppdf/ADONET/ADONET.pdf

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 143

En Visual C# el espacio de nombres se importa con la instrucción:

En la siguiente tabla, se describen las principales clases del proveedor SqlClient:

Clase Descripción

Representa una conexión abierta a una base de datos de


SqlConnection
SQL Server. Esta clase no puede heredarse.

Representa un conjunto de comandos de datos y una


conexión de base de datos que se utilizan para rellenar un
SqlDataAdapter
DataSet y actualizar una base de datos de SQL Server. Esta
clase no puede heredarse.

Representa un procedimiento almacenado o una instrucción


SqlCommand de Transact-SQL que se ejecuta en una base de datos de
SQL Server. Esta clase no puede heredarse.

Proporciona una forma de leer una secuencia de filas solo


SqlDataReader hacia delante en una base de datos de SQL Server. Esta
clase no puede heredarse.

SqlConnection

Un objeto SqlConnection representa una conexión a un origen de datos de SQL Server.


SqlConnection se utiliza junto con SqlDataAdapter y SqlCommand para aumentar el
rendimiento de la conexión a una base de datos de Microsoft SQL Server. En la siguiente
tabla, se describen algunas de sus propiedades y métodos:

Propiedad Descripción
Obtiene o establece la cadena utilizada para abrir una base
ConnectionString
de datos de SQL Server.

Obtiene el nombre de la instancia de SQL Server con la que


DataSource
se va a establecer la conexión.

Obtiene el nombre de la base de datos actual o de la que se


Database
va a utilizar una vez que se abre la conexión.

State Indica el estado de SqlConnection.

Método Descripción
Abre una conexión de base de datos con los valores de
Open()
propiedad que especifica ConnectionString.
Cierra la conexión con la base de datos.Es el método
Close()
preferido para cerrar cualquier conexión abierta.

Para realizar una conexión a SQL Server, en Visual C# usamos la siguiente sintaxis:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 144

Donde:
 Data Source define el nombre del servidor que contiene la Base de Datos.
 Initial Catalog define el nombre de la Base de Datos.
 User ID define el nombre de usuario que tiene acceso a la Base de Datos.
 Password define la contraseña del usuario para acceder la Base de Datos.

Es posible usar también la siguiente sintaxis para realizar la conexión a


una Base de Datos:

SqlDataAdapter

Representa un conjunto de comandos de datos y una conexión de base de datos que se


utilizan para rellenar un DataSet y actualizar una base de datos de SQL Server.

SqlDataAdapter, se utiliza como un puente entre DataSet o DataTable y las tablas del
gestor de datos SQL Server para recuperar y guardar datos. SqlDataAdapter proporciona
este puente mediante el método Fill, que cambia los datos en DataSet para que coincidan
con los datos del origen de datos; y Update, que cambia los datos en el origen de datos
para que coincidan con los datos en DataSet utilizando las instrucciones de Transact-SQL
en el origen de datos adecuado.

SqlDataAdapter se utiliza junto con SqlConnection y SqlCommand para aumentar el


rendimiento en la conexión con una base de datos de SQL Server. En la siguiente tabla se
describen algunas de sus propiedades y métodos:

Propiedad Descripción
Obtiene o establece un procedimiento almacenado o una
SelectCommand instrucción de Transact-SQL para seleccionar registros en el
origen de datos.
Obtiene o establece un procedimiento almacenado o una
InsertCommand instrucción de Transact-SQL para insertar nuevos registros
en el origen de datos.
Obtiene o establece un procedimiento almacenado o una
UpdateCommand instrucción de Transact-SQL para actualizar los registros del
origen de datos.

Obtiene o establece un procedimiento almacenado o una


DeleteCommand instrucción de Transact-SQL para eliminar registros de un
conjunto de datos.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 145

Método Descripción

Fill(DataSet) Agrega o actualiza filas en DataSet.

Agrega filas a DataSet o las actualiza para hacerlas coincidir


Fill(DataTable) con las filas del origen de datos utilizando los nombres de
DataSet y DataTable.

Actualiza los valores de la base de datos ejecutando las


instrucciones INSERT, UPDATE o DELETE respectivas para
Update(DataSet)
cada fila insertada, actualizada o eliminada en los objetos
DataSet especificados.

Actualiza los valores de la base de datos ejecutando las


instrucciones INSERT, UPDATE o DELETE respectivas para
Update(DataTable)
cada fila insertada, actualizada o eliminada en los objetos
DataTable especificados.

Para crear un adaptador, en Visual C# usamos la siguiente sintaxis:

Donde:
 Instrucción SQL define la sentencia SQL para recuperar o manipular los datos de
una tabla. También puede ser el nombre de un Procedimiento Almacenado que
pertenece a la Base de Datos.
 objConexion es la conexión creada para la Base de Datos.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 146

LABORATORIO 5: Creación de Formularios con acceso a Datos

Caso1: Uso del Asistente

Cree un formulario que muestre la información de la tabla tbAlumnos perteneciente a


la base de datos BDNotas usando el asistente de conexión.

GUI del Formulario

Procedimiento

1. En Visual Studio 2013, cree un proyecto de tipo Visual C# y guárdelo con el


nombre pryPractica05 en su carpeta de trabajo.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 147

2. En el Form1, agregue los siguientes controles y cambie sus respectivas


propiedades:

Asigne a los controles los siguientes nombres:

Control Nombre
DataGridView1 dgAlumnos
Label3 lblRegistros
Button1 btnCerrar

3. En el DataGridView, elija la opción Tareas de DataGridView / Elegir origen


de datos / Agregar origen de datos del proyecto.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 148

4. En Elegir un tipo de origen de datos, seleccione Base de datos y luego


presione el botón Siguiente.

5. En Elegir un modelo de base de datos, seleccione Conjunto de datos y


luego presione el botón Siguiente.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 149

6. En Elegir la conexión de datos, crearemos una conexión, haga clic en el


botón Nueva conexión…

7. En el cuadro Agregar conexión, defina los datos de la conexión: 1 Nombre del


servidor (.), 2 Usar autenticación de SQL Server (Nombre de usuario: sa y
Contraseña: sql) y 3 Seleccione el nombre de la Base de datos (BDNotas).

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 150

8. Pruebe la conexión, haga clic en el botón Probar conexión.

9. Presione el botón Acepar dos veces, luego active la opción Sí, incluir datos
confidenciales en la cadena de conexión y luego presione el botón
Siguiente.

10. En Guardar cadena de conexión en el archivo de config. de la aplicación,


deje el nombre de la conexión por defecto y luego presione el botón Siguiente.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 151

11. En Elija los objetos de base de datos, marque la casilla de la tabla a mostrar
en el DataGridView, en este ejemplo será: tbAlumnos y luego presione el
botón Finalizar.

12. En el DataGridView, se verá el siguiente diseño:

13. En el Form1, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario y escriba lo siguiente en el evento Load del
formulario:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 152

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

Desactive la casilla Habilitar acción de agregar desde la opción Tareas


de DataGridView para que no se muestre una fila adicional en el
control:

Solo agregue la última línea señalada en el evento Load, no borre el


código generado. Para mostrar la cantidad de registros, también puede
utilizar la siguiente instrucción:

14. Obtendrá el siguiente resultado:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 153

Caso2: Uso de Código ADO.NET

Cree un formulario que muestre la información de la tabla tbPagos perteneciente a la


base de datos BDNotas usando Código ADO.NET.

GUI del Formulario

Procedimiento

1. En el proyecto, agregue un Windows Forms, deje el nombre por defecto


Form2.
2. En el Form2, agregue los siguientes controles y cambie sus respectivas
propiedades:

Asigne a los controles los siguientes nombres:

Control Nombre
DataGridView1 dgPagos
Label3 lblRegistros
Button1 btnCerrar

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 154

3. En Tareas de DataGridView, elija Agregar columna…:

En el cuadro Agregar columna, cambie los valores en: 1 Nombre de la columna, 2


Título o encabezado de la columna, luego presione el botón Agregar y después el
botón Cerrar.

4. En el DataGridView, se verá el siguiente diseño. Luego en Tareas de


DataGridView, elija Editar columnas…:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 155

5. En el cuadro Editar columnas, en la propiedad DataPropertyName asigne el


nombre del campo, en este caso será pagoAluID Luego, presione el botón
Aceptar.

6. Luego, presione el botón Agregar… para cada uno de los tres campos
restantes y cambie las propiedades: Name, DataPropertyName y HeaderText
según corresponda:

7. Obtendrá el siguiente resultado:

8. En el Form2, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario e importe la biblioteca de conexión a SQL:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 156

Antes el evento Load, declare la conexión (en una sola línea):

Dentro del evento Load, escriba:

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

9. Para ejecutar el Form2, abra el archivo Program.cs y cambie:

10. Obtendrá el siguiente resultado.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 157

Actividad

Caso3: Cree el siguiente formulario: Form3

Cree un formulario que muestre la información combinada de las tablas tbAlumnos y


tbEspecialidad perteneciente a la base de datos BDNotas usando Código ADO.NET.

GUI del Formulario

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 158

Resumen
1. ADO.NET proporciona acceso coherente a orígenes de datos como SQL Server y
XML.

2. ADO.NET es independiente del lenguaje de programación que utilice.

3. Los dos componentes principales de ADO.NET 4.5 para el acceso a los datos y su
manipulación son los proveedores de datos .NET Framework y DataSet.

4. Los proveedores de datos .NET Framework son componentes diseñados


explícitamente para la manipulación de datos y el acceso rápido a datos de lectura.

5. Entre los principales componentes tenemos: Connection, DataAdapter, Command


y DataReader.

6. Un objeto SqlConnection representa una conexión a un origen de datos de SQL


Server y SqlDataAdpater representa un conjunto de comandos de datos y una
conexión de base de datos que se utilizan para rellenar un DataSet y actualizar
una base de datos de SQL Server.

Puede revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad:

o https://msdn.microsoft.com/es-es/library/h43ks021(v=vs.110).aspx
o https://msdn.microsoft.com/es-es/library/a6cd7c08(v=vs.110).aspx
o https://msdn.microsoft.com/es-
es/library/system.data.sqlclient.sqlconnection(v=vs.110).aspx
o https://msdn.microsoft.com/es-
es/library/system.data.sqlclient.sqldataadapter(v=vs.110).aspx
o https://msdn.microsoft.com/es-es/library/ms254931(v=vs.110).aspx

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 159

4.2. TEMA 7: RECUPERACIÓN DE DATOS


4.2.1. Consulta de datos: La clase DataAdapter

La clase DataAdapter se utiliza para recuperar datos de un origen de datos y llenar tablas
con un DataSet. El DataAdapter también actualiza los cambios realizados en el DataSet y
retorna los datos actualizados al origen de datos. Para realizar los procesos de consulta y
actualización, el DataAdapter se conecta a un origen de datos utilizando un objeto
Connection identificado por uno de los proveedores de datos .NET y utiliza objetos
Command para recuperar datos del origen de datos y resolver los cambios a dicho origen.

Figura 18: La Clase DataAdapter


Fuente.- Tomado de http://www.ehu.eus/mrodriguez/archivos/csharppdf/ADONET/ADONET.pdf

Cada proveedor de datos de .NET Framework incluido en .NET Framework cuenta con un
objeto DataAdapter: el proveedor de datos de .NET Framework para OLE DB incluye un
objeto OleDbDataAdapter, el proveedor de datos de .NET Framework para SQL Server
incluye un objeto SqlDataAdapter, el proveedor de datos de .NET Framework para ODBC
incluye un objeto OdbcDataAdapter y el proveedor de datos de .NET Framework para
Oracle incluye un objeto OracleDataAdapter.

Los constructores de la clase son:


 DataAdapter (Command SelectCommand). Se utiliza un comando de selección
(cláusula SELECT) como parámetro.
 DataAdapter (String ComandoSelect, string CadenaConexionSelect). Se utiliza una
sentencia SQL de selección con una cadena de conexión como parámetros.
 DataAdapter (String ComandoSelect, Connection ConexionSelect). Se utilizan los
parámetros sentencia SQL de selección y un objeto de tipo conexión

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 160

4.2.2. Poblar un DataSet: Uso de DataAdapter

La clase DataSet de ADO.NET es una representación residente en memoria de datos que


proporciona un modelo de programación relacional coherente e independiente del origen
de datos. DataSet representa un conjunto completo de datos que incluye tablas,
restricciones y relaciones entre las tablas. Dado que DataSet es independiente del origen
de datos, DataSet puede incluir datos locales de la aplicación y datos de otros muchos
orígenes. La interacción con los orígenes de datos existentes se controla mediante el
DataAdapter.

La propiedad SelectCommand del DataAdapter es un objeto Command que recupera


datos del origen de datos.

El método Fill del DataAdapter se usa para llenar un DataSet con los resultados de la
propiedad SelectCommand del DataAdapter. El método Fill acepta como argumentos un
DataSet que se debe llenar y un objeto DataTable, o su nombre, que se debe llenar con las
filas que devuelve SelectCommand.

En el siguiente ejemplo, se crea un adaptador (objAdaptador) para recuperar la información


de una tabla, luego se crea un DataSet (Coleccion) y luego el adaptador llena al DataSet
con la información recuperada y le asigna de forma opcional un alias (Tabla).

El método Fill abre de forma implícita el objeto Connection que utiliza el


DataAdapter cuando determina que esta conexión no está abierta.

Cuando el método Fill ha abierto la conexión, el mismo método la cierra


cuando termina de utilizarla.

4.2.3. Utilizar parámetros con DataAdapter

Dentro de DataAdapter se encuentra la propiedad SelectCommand para recuperar datos


desde un origen de datos. La información relacionada con las filas recuperadas se pasa al
objeto Command a través de la colección Parameters.

En el siguiente ejemplo, se declara una cadena (consultaSQL) que recupera la información


de la tabla clientes y por medio del parámetro @ID se filtra el campo cliID. Luego, se crea
un adaptador (objAdaptador) y con SelectCommand.Parameters.Add se agrega un
parámetro señalando Nombre, Tipo y Tamaño para finalmente asignarle un valor (Value).

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 161

Es posible usar también SqlParameter para crear un parámetro y luego


agregarlo al adaptador:

4.2.4. Manejo de Procedimientos Almacenados y parámetros

Para invocar un procedimiento almacenado creado en SQL Server desde un DataAdapter


se debe:
 Identificar el procedimiento almacenado.
 Crear un objeto DataAdapter donde se indique el nombre del procedimiento
almacenado y la conexión de la base de datos.
 Establecer la propiedad CommandType en CommandType.StoredProcedure.
 Definir los parámetros que sean necesarios.

En el siguiente ejemplo, veremos cada paso:

En SQL, creamos el procedimiento almacenado:

En Visual C#, creamos y configuramos el adaptador:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 162

LABORATORIO 6: Creación de Formularios para la Recuperación de Datos

Caso1: Consulta de Pagos por Alumno

Cree un formulario que muestre en un ComboBox la información de Alumnos y en un


DataGridView la información de Pagos, la cual cambia según la selección de un
alumno, además de una etiqueta con el número de registros.

GUI del Formulario

Procedimiento

1. En SQL Server 2014, cree los siguientes procedimientos almacenados:

Cree el procedimiento spMostrarAlumnos que muestre los campos aluID, Alumno


(aluApellidos + ‘ ‘ + aluNombres) de la tabla tbAlumnos, ordenado por aluApellidos
en forma ascendente.

Cree el procedimiento spMostrarPagosPorID que muestre los campos pagoCiclo,


pagoNCuota, pagoMonto, pagoFecha de la tabla tbPagos, ordenado por pagoFecha
en forma descendente. Defina un parámetro de entrada para el ID de alumno.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 163

2. En Visual Studio 2013, cree un proyecto de tipo Visual C# y guárdelo con el


nombre pryPractica06 en su carpeta de trabajo.

3. En el Form1, agregue los siguientes controles y cambie sus respectivas


propiedades:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 164

Asigne a los controles los siguientes nombres:

Control Nombre
ComboBox1 cboAlumno
DataGridView1 dgPagos
Label4 lblRegistros
Button1 btnCerrar

4. En el Form1, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario e importe la biblioteca de conexión a SQL:

Antes el evento Load, declare la conexión (en una sola línea):

Agregue el siguiente procedimiento:

Haga el llamado del procedimiento en el evento Load del formulario:

En el evento SelectionChangeCommitted del cuadro combinado cboAlumno,


escriba:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 165

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

5. Obtendrá el siguiente resultado.

Muestra1:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 166

Muestra2:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 167

Caso2: Consulta de Pagos por Alumno usando App.config y Clases

Cree un formulario que muestre en un ComboBox la información de Alumnos y en un


DataGridView la información de Pagos, la cual cambia según la selección de un
alumno, además de una etiqueta con el número de registros. La conexión se
implementará en el archivo App.config y además se creará una Clase con métodos
que invoquen a los procedimientos almacenados creados en SQL.

GUI del Formulario

Procedimiento

1. En el proyecto, haga doble clic en el archivo App.config desde el Explorador


de soluciones:

2. Entre las etiquetas <configuration> y </ configuration> escriba:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 168

La cadena de conexión definida en el archivo de configuración


(App.config) proporciona información del proveedor de datos reutilizable
en una aplicación.

3. Luego, haga clic derecho en la opción References desde el Explorador de


soluciones y elija Agregar referencia…

En el cuadro, Administrador de referencias active la casilla System.Configuration y


luego, presione el botón Aceptar:

4. En el proyecto, agregue un archivo de clase: Desde el Explorador de


soluciones, haga Clic derecho en el nombre del proyecto / Opción Agregar
/ Clase…

5. En el cuadro, Agregar nuevo elemento, escriba el nombre de la clase


clsDatos. Luego, presione el botón Agregar.

6. En el archivo de clase, escriba el siguiente código donde se señala:

Importe las siguientes bibliotecas:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 169

Dentro de la clase, declare la conexión (en una sola línea):

Luego, agregue los siguientes métodos:

7. En el proyecto, agregue un Windows Forms, deje el nombre por defecto


Form2.

8. En el Form2, agregue los siguientes controles y cambie sus respectivas


propiedades:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 170

Asigne a los controles los siguientes nombres:

Control Nombre
ComboBox1 cboAlumno
DataGridView1 dgPagos
Label4 lblRegistros
Button1 btnCerrar

9. En el Form2, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario e instancie la clase clsDatos.

Agregue el siguiente procedimiento:

Haga el llamado del procedimiento en el evento Load del formulario:

En el evento, SelectionChangeCommitted del cuadro combinado cboAlumno


escriba:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 171

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

10. Defina Form2 como formulario inicial y obtendrá el siguiente resultado.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 172

Caso3: Consulta de Notas por Alumno en la forma Maestro/Detalle

Cree un formulario que muestre en un DataGridView la información de Alumnos y en


otro DataGridView la información de Notas, la cual cambia según la selección de un
alumno, además de las etiquetas con el ID, Apellidos y Nombres del alumno elegido y
su respectivo número de registros. Se seguirá usando la conexión del archivo
App.config y la clase clsDatos.

GUI del Formulario

Procedimiento

1. En SQL Server 2014, cree el siguiente procedimiento almacenado:

Cree el procedimiento spMostrarNotasPorID que muestre los campos curNombre,


notaEParcial, notaEFinal, Promedio (notaEParcial * 40% + notaEFinal * 60%) de las
tablas tbCursos y tbNotas. Defina un parámetro de entrada para el ID de alumno.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 173

2. En el archivo de clase clsDatos, agregue el siguiente método:

3. En el proyecto, agregue un Windows Forms, deje el nombre por defecto


Form3.

4. En el Form3, agregue los siguientes controles y cambie sus respectivas


propiedades:

Asigne a los controles los siguientes nombres:

Control Nombre
DataGridView1 dgAlumnos
DataGridView2 dgNotas
Label7 lblID
Label8 lblAlumno
Label9 lblRegistros

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 174

Button1 btnCerrar

5. En el Form3, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario e instancie la clase clsDatos.

Agregue el siguiente procedimiento:

Haga el llamado del procedimiento en el evento Load del formulario:

En el evento DoubleClick del DataGridView dgAlumnos, escriba:

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

6. Defina Form3 como formulario inicial y obtendrá el siguiente resultado.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 175

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 176

Actividad

Caso4: Consulta de Alumnos por Procedencia (Form4)

Cree un formulario que muestre en un ComboBox la Procedencia (Nacional o


Particular) y en un DataGridView la información de Alumnos ordenado por Apellidos
de forma ascendente, la cual cambia según la selección de una procedencia, además
de una etiqueta con el número de registros. Cree el procedimiento almacenado que
sea necesario y agréguelo a la clase clsDatos.

GUI del Formulario

Caso5: Consulta de Pagos por Año y Mes (Form5)

Cree un formulario que muestre la información de los pagos según el mes y año. Cree
el procedimiento almacenado que sea necesario y agréguelo a la clase clsDatos.

GUI del Formulario

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 177

Resumen
1. La clase DataAdapter se utiliza para recuperar datos de un origen de datos y
llenar tablas con un DataSet. El DataAdapter también actualiza los cambios
realizados en el DataSet y retorna los datos actualizados al origen de datos.

2. La clase DataSet de ADO.NET es una representación residente en memoria de


datos que proporciona un modelo de programación relacional coherente e
independiente del origen de datos.

3. Para el manejo de parámetros en un DataAdapter, se utiliza la propiedad


SelectCommand además de la clase SqlParameter.

4. Para el manejo de Procedimientos Almacenados creados en SQL, es necesario


definir el nombre del procedeimiento y además establecer la propiedad
CommandType con el valor CommandType.StoredProcedure, para luego poblar
un determinado DataSet.

Puede revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad:

o https://msdn.microsoft.com/es-
es/library/system.data.sqlclient.sqldataadapter(v=vs.110).aspx
o https://msdn.microsoft.com/es-es/library/bh8kx08z(v=vs.110).aspx
o https://msdn.microsoft.com/es-es/library/bbw6zyha(v=vs.110).aspx
o http://univirtual.unicauca.edu.co/moodle/pluginfile.php/19788/mod_resource/content
/0/Material_PDF/9.-_Uso_de_procedimientos_almacenados.pdf

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 178

4.3. TEMA 8: MANIPULACIÓN DE DATOS


4.3.1. Actualizar datos: La clase Command

La clase Command al igual que la clase Connection pertenece al proveedor de acceso a


datos de la plataforma .NET.

Un objeto Command básicamente formula una petición y se la envía al origen de datos. Si


esa petición devuelve datos, el objeto Command se encarga de empaquetarlos y
devolverlos como un objeto DataReader, un valor escalar o como parámetros de salida
utilizados en el propio comando. Existen dos propiedades muy importantes de la clase
Command:

4.3.1.1. CommandText

Representa una cadena o texto cuya sintaxis es comprendida por el proveedor de acceso a
datos .NET que se utilice.

4.3.1.2. CommandType

Esta propiedad indica la forma en la que la propiedad CommandText será interpretada. Los
valores que puede tomar esta propiedad son:
 CommandType.Text: Indica que la sentencia es un texto plano. Por ejemplo:

 CommandType.StoredProcedure: Representa que la propiedad CommandText


es el nombre de un procedimiento almacenado. Por ejemplo:

 CommandType.TableDirect: Indica que el CommandText es el nombre de una


tabla del origen de datos. Esta opción no es compatible con el proveedor de datos
SqlClient de .Net Framework.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 179

4.3.2. Ejecutar T-SQL o Procedimientos: La clase SqlCommand

Representa una sentencia T-SQL o un procedimiento almacenado que se ejecuta en la


base de datos.

Figura 19: La Clase SqlCommand


Fuente.- Tomado de https://yinyangit.wordpress.com/2011/08/06/ado-net-tutorial-lesson-07-using-stored-procedures

La clase SqlCommand contiene propiedades para el control de los comandos a realizar en


el servidor por medio de CommandText y en muchas actividades será necesario trabajar
con parámetros que dependerán de la estructura del procedimiento almacenado o
instrucción de Transact-SQL.

La clase SqlCommand tiene los siguientes constructores:


 Por defecto: Inicializa una nueva instancia de la clase SqlCommand.
 CommandText: Inicializa una nueva instancia de la clase SqlCommand con el
texto de la consulta comprensible por SQL Server.
 CommandText, SqlConnection: Inicializa una nueva instancia de la clase
SqlCommand con el texto de la consulta y una conexión SqlConnection.
 CommandText, SqlConnection, SqlTransaction: Inicializa una nueva instancia
de la clase SqlCommand con el texto de la consulta, un objeto SqlConnection y el
objeto SqlTransaction.

4.3.3. Manejo de parámetros en el proceso de actualización

4.3.3.1. Método SqlCommand.ExecuteNonQuery

Ejecuta una instrucción de Transact-SQL en la conexión y devuelve el número de filas


afectadas. Se puede utilizar el ExecuteNonQuery para realizar operaciones de catálogo
(por ejemplo, consultar la estructura de una base de datos o crear objetos de base de datos
como tablas) o para cambiar la información de una base de datos sin utilizar un DataSet
mediante la ejecución de instrucciones UPDATE, INSERT o DELETE.

4.3.3.2. Método SqlCommand.ExecuteScalar

Ejecuta la consulta y devuelve la primera columna de la primera fila del conjunto de


resultados devuelto por la consulta. Las demás columnas o filas no se tienen en cuenta. El
método ExecuteScalar permite recuperar un único valor (por ejemplo, el resultado de una
función de agregado) de una base de datos.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 180

Este método devuelve un valor de tipo Object que tendremos que convertir según el valor
devuelto.

Si tenemos el siguiente procedimiento almacenado en SQL:

En Visual C#, escribimos el siguiente código:

También, es posible convertir el resultado del método ExecuteScalar


con:

4.3.3.3. Parámetros en los Procedimientos Almacenados

Como hemos anteriormente los procedimientos almacenados ofrecen numerosas ventajas


en el caso de aplicaciones que procesan datos como recuperar, insertar, actualizar y
eliminar registros.

Ello nos permite encapsular bajo un nombre un determinado proceso y su posterior


llamado por medio de la clase SqlCommand usando las propiedades CommandText y
CommandType. Ahora los parámetros pueden ser definidos con Parameters de la clase
Command y tener acceso a los parámetros de entrada, parámetros de salida y a los
valores devueltos.

Otra opción es el objeto Parameter, que se puede crear mediante el constructor Parameter
o al llamar al método Add de la colección Parameters de Command. Parameters.Add
acepta como entrada argumentos del constructor o cualquier objeto Parameter ya
existente. Al establecer como una referencia nula el valor de Value de un objeto Parameter,
debe utilizar DBNull.Value.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 181

En el caso de parámetros que no sean de entrada (Input), debe asignar a la propiedad


ParameterDirection un valor que especifique cuál es el tipo de parámetro: InputOutput,
Output o ReturnValue.

Parámetro de entrada

Si tenemos el siguiente procedimiento almacenado en SQL:

En Visual C#, escribimos el siguiente código:

Luego, podemos utilizar un adaptador para recuperar la información y a


su vez pasarlo a un DataSet:

Parámetro de salida

Si tenemos el siguiente procedimiento almacenado en SQL:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 182

En Visual C#, escribimos el siguiente código:

Es necesario abrir la conexión, ejecutar el comando con el método


ExecuteNonQuery(), recuperar el valor del parámetro de salida y
después cerrar la conexión.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 183

LABORATORIO 7: Creación de Formularios para la Manipulación de Datos

Caso1: Mantenimiento de datos en la tabla Alumnos

Cree un formulario que permita insertar, actualizar y eliminar la información contenida


en la tabla tbAlumnos por medio de procedimientos almacenados invocados desde
un archivo de clase.

GUI del Formulario

Procedimiento

1. En SQL Server 2014, necesitamos los siguientes procedimientos almacenados


(recuerda que algunas fueron creados en el Laboratorio 4):

Cree un SP que permita agregar un registro en la tabla tbAlumnos, utilice


parámetros de entrada para cada campo. Luego ejecute el SP e ingrese un
valor para cada parámetro.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 184

Cree un SP que permita modificar un registro en la tabla tbAlumnos, utilice


parámetros de entrada para cada campo. Luego, ejecute el SP e ingrese un
valor para cada parámetro.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 185

Cree un SP que permita eliminar un registro en la tabla tbAlumnos, utilice un


parámetro de entrada para el ID de alumno. Luego, ejecute el SP e ingrese un
valor para el parámetro.

Cree un SP que permita para buscar los registros que inician con el valor
ingresado como parámetro para el campo aluApellidos en la tabla tbAlumnos.

Cree un SP que muestre la información de la tabla tbAlumnos ordenado por


aluApellidos de forma ascendente.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 186

Cree un SP que muestre la información de la tabla tbEspecialidad ordenado


por espNombre de forma ascendente.

2. En Visual Studio 2013, cree un proyecto de tipo Visual C# y guárdelo con el


nombre pryPractica07 en su carpeta de trabajo.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 187

3. En el Form1, agregue los siguientes controles y cambie sus respectivas


propiedades:

Asigne a los controles los siguientes nombres:

Control Nombre
GroupBox2
Control Nombre
TextBox4 txtValor
GroupBox1
Button1 btnBuscar
TextBox1 txtID
Button2 btnMostrarTodo
TextBox2 txtApellidos
TextBox3 txtNombres
DataGridView1 dgAlumnos
RadioButton1 rbtMasculino
Button3 btnNuevo
RadioButton2 rbtFemenino
Button4 btnCancelar
DateTimePicker1 dtpFechaNac
Button5 btnRegistrar
ComboBox1 cboEspecialidad
Button6 btnActualizar
ComboBox2 cboProcedencia
Button7 btnEliminar
Button8 btnCerrar

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 188

4. En el proyecto haga doble clic en el archivo App.config desde el Explorador de


soluciones.

5. Entre las etiquetas <configuration> y </ configuration> escriba:

6. Luego, agregue la referencia respectiva al proyecto.

7. En el proyecto, agregue un archivo de clase con el nombre clsMantenimiento


y escriba el siguiente código donde se señala:

Importe las siguientes bibliotecas:

Dentro de la clase, declare la conexión (en una sola línea):

Luego, agregue los siguientes métodos:

Registrar Alumno

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 189

Actualizar Alumno

Eliminar Alumno

Buscar Alumnos Por Apellidos

Listar Registros (Según sea el caso: Alumnos o Especialidad)

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 190

8. En el Form1, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario e instancie la clase clsMantenimiento.

Agregue los siguientes cuatro procedimientos:

Haga el llamado de los siguientes procedimientos en el evento Load del formulario:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 191

En el evento DoubleClick del DataGridView dgAlumnos, escriba:

Haga doble clic en el botón Nuevo para habilitar el evento Click y escriba:

Haga doble clic en el botón Cancelar para habilitar el evento Click y escriba:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 192

Haga doble clic en el botón Registrar para habilitar el evento Click y escriba:

Haga doble clic en el botón Actualizar para habilitar el evento Click y escriba:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 193

Haga doble clic en el botón Eliminar para habilitar el evento Click y escriba:

Haga doble clic en el botón Buscar para habilitar el evento Click y escriba:

Haga doble clic en el botón Mostrar Todo para habilitar el evento Click y escriba:

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 194

9. Obtendrá el siguiente resultado.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 195

Actividad

Caso2: Mantenimiento de datos en la tabla Cursos (Form2)

Cree un formulario que permita insertar, actualizar y eliminar la información contenida


en la tabla tbCursos por medio de procedimientos almacenados invocados desde un
archivo de clase (clsMantenimiento).

GUI del Formulario

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 196

Resumen
1. La clase Command formula una petición y se la envía al origen de datos. Si esa
petición devuelve datos, el objeto Command se encarga de empaquetarlos y
devolverlos como un objeto DataReader, un valor escalar o como parámetros de
salida utilizados en el propio comando.

2. La propiedad CommandText representa una cadena o texto cuya sintaxis es


comprendida por el proveedor de acceso a datos .NET que se utilice.

3. La propiedad CommandType indica la forma en la que la propiedad


CommandText será interpretada, sus valores son: Text, StoredProcedure y
TableDirect.

4. El método ExecuteNonQuery ejecuta una instrucción de Transact-SQL en la


conexión y devuelve el número de filas afectadas.

5. El método ExecuteScalar ejecuta la consulta y devuelve la primera columna de la


primera fila del conjunto de resultados devuelto por la consulta.

6. Los parámetros se definen con Parameters de la clase Command para tener


acceso a los parámetros de entrada, parámetros de salida y a los valores
devueltos.

Puede revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad:

o https://msdn.microsoft.com/es-
es/library/system.data.sqlclient.sqlcommand(v=vs.110).aspx
o https://msdn.microsoft.com/es-es/library/59x02y99(v=vs.110).aspx
o https://msdn.microsoft.com/es-
es/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.100).aspx
o https://desdeceronetsql2.wordpress.com/2012/10/25/recuperar-1-valor-devuelto-de-
procedimiento-almacenado-en-c/

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 197

UNIDAD

5
OPERACIONES
DESCONECTADAS DE DATOS
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno realiza operaciones de consulta y
actualización de datos en un entorno desconectado de un origen de datos
dentro de una aplicación Windows utilizando librerías ADO.NET.

TEMARIO

5.1 Tema 9 : Manipulación de datos desconectados


5.1.1 : La clase DataSet
5.1.2 : La clase DataTable
5.1.3 : La clase DataColumn
5.1.4 : La clase DataRow
5.1.5 : La clase DataView

ACTIVIDADES PROPUESTAS

 Los alumnos crean formularios que accede a la información de una Base


de Datos usando el modelo desconectado.
 Los alumnos crean aplicaciones que consultan y manipulan la información
de una tabla de una Base Datos en un entorno desconectdo a un origen
de datos.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 198

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 199

5.1. TEMA 9: MANIPULACIÓN DE DATOS DESCONECTADOS


Dentro de la arquitectura de ADO.NET existe una muy buena característica que se ajusta
especialmente a ambientes de tipo WEB y Escritorio: Modelo de datos desconectado.

En este modelo, la aplicación ejecuta la consulta y almacena los resultados de la misma


para procesarlos después accediendo a un objeto de tipo DataSet. De esta forma, se
minimiza el tiempo que permanece abierta la conexión con la base de datos.

Al proporcionar conjuntos de datos de forma desconectada, se utilizan mejor los recursos


de los servidores y se pueden construir sistemas más escalables (por ejemplo con ADO se
mantenía abierta la conexión con la base de datos la mayor parte del tiempo). Este enfoque
resulta más adecuado en sistemas distribuidos como Internet.

Figura 20: Clases ADO.NET


Fuente.- Tomado de http://techchris.blogspot.pe

Una de las ventajas de este modelo es que no necesitamos una conexión constante a
nuestra fuente de datos, lo que libera los recursos de la fuente de datos central y hace
posible que se atienda un mayor número de peticiones para datos compartidos.

ADO.NET utiliza cachés de datos que almacena en memoria, lo cual elimina la necesidad
de hacer locks a las bases de datos para proteger la integridad de los datos. Otra ventaja
es que facilita el intercambio de la información entre capas (en caso de tener una
arquitectura orientada a capas).

Los tipos de datos utilizados en las aplicaciones ADO.NET son fuertemente tipados, lo que
elimina la sobrecarga de procesamiento en conversiones de tipos de datos y facilita el
entendimiento del código.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 200

5.1.1. La clase DataSet

DataSet es un cache de memoria interna de datos recuperados de un origen de datos, la


cual representa un componente fundamental de la arquitectura de ADO.NET. DataSet está
compuesto por una colección de objetos DataTable que se pueden relacionar entre ellos
mediante objetos DataRelation.

El objeto DataSet es esencial para la compatibilidad con escenarios de datos distribuidos


desconectados con ADO.NET. El objeto DataSet es una representación residente en
memoria de datos que proporciona un modelo de programación relacional coherente
independientemente del origen de datos. Se puede utilizar con muchos y distintos orígenes
de datos, con datos XML o para administrar datos locales de la aplicación.

Figura 21: Componentes de un DataSet


Fuente.- Tomado de http://www.akadia.com/services/dotnet_filter_sort.html

Las colecciones más importantes en el DataSet, es la colección DataTables que contiene


las tablas donde reside la información y la colección DataRelations que contiene las
distintas relaciones entre las tablas del DataSet.

Un objeto DataSet encapsula un conjunto de tablas independientemente de su procedencia


y mantiene las relaciones existentes entre las tablas. El contenido de un DataSet puede
serializarse en formato XML. Además, permite la modificación dinámica de los datos y
metadatos del conjunto de datos representado por el objeto DataSet.

La clase DataAdapter se utiliza para construir el conjunto de datos y actualizarlo cuando


sea necesario. Los conjuntos de datos con los que se trabaja de esta forma utilizan un
enfoque asíncrono en el que no se mantiene abierta la conexión con la base de datos a la
que se está accediendo. Se pueden realizar operaciones de consulta (select), inserción
(insert), actualización (update) y borrado (delete).

Ejemplo1: Crearemos un DataSet con la información de la tabla tbClientes.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 201

5.1.2. La clase DataTable

La clase DataTable representa una tabla (compuesto por DataColumn y DataRow) en


memoria y es donde reside la información de los datos. Un objeto de la clase DataTable se
puede utilizar con o sin un objeto DataSet, pero si se quiere rellenar, entonces debe
asociarse al DataSet. Con un objeto DataTable, al igual que un objeto DataSet, se tiene la
posibilidad de rechazar o aceptar todos los cambios en una sola vez. Por otra parte, las
tablas tienen relaciones, restricciones, claves primarias, filas y columnas.

Su esquema viene definido por su colección de columnas. La integridad de los datos se


conserva gracias a objetos que representan restricciones (Constraint) y dispone de
eventos públicos que se producen al realizar operaciones sobre la tabla (como por ejemplo
la modificación o eliminación de registros).

Figura 22: Componentes de un DataTable

Después de crear un DataTable y definir su estructura usando columnas y restricciones, se


le pueden agregar nuevas filas de datos. Para agregar una nueva fila, declare una nueva
variable como tipo DataRow. Se devuelve un nuevo objeto DataRow cuando se llama al
método NewRow(). A continuación, DataTable crea el objeto DataRow basándose en la
estructura de la tabla, definido por DataColumnCollection.

Ejemplo2: Crearemos un DataTable con la información de la tabla tbProductos.

También, es posible crear un DataTable a partir de un DataSet de la


siguiente forma:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 202

5.1.3. La clase DataColumn

El conjunto de columnas de un objeto DataTable corresponde a una colección de objetos


DataColumn. Un objeto DataColumn tiene las siguientes propiedades:
 ColumName indica el nombre de la columna.
 DataType indica el tipo de dato de la columna.
 AllowDBNull indica si permite valores NULL.
 AutoIncrement detecta si la columna es o no autonumérico.
 DefaultValue estable por defecto un valor a la columna.
 ReadOnly indica si la columna es de solo lectura.
 Unique establece un valor único para la columna.

DataColumn es el bloque constructivo fundamental para crear el esquema de un


DataTable. Para construir el esquema, se agregan uno o varios objetos DataColumn al
DataColumnCollection.

Cada DataColumn tiene una propiedad DataType que determina el tipo de datos que
contiene el DataColumn. Por ejemplo, se puede restringir el tipo de datos a enteros,
cadenas o decimales. Puesto que los datos incluidos en el objeto DataTable normalmente
se vuelven a combinar en su origen de datos original, se debe hacer coincidir los tipos de
los datos con los del origen de datos.

Las propiedades AllowDBNull, Unique y ReadOnly aplican restricciones en la entrada y


actualización de datos, lo que contribuye a garantizar la integridad de estos. También se
pueden utilizar las propiedades AutoIncrement, AutoIncrementSeed y
AutoIncrementStep para controlar la generación automática de datos.

Ejemplo3: Crearemos un DataTable y luego se agregarán tres campos con


DataColumn.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 203

5.1.4. La clase DataRow

El conjunto de filas de un objeto DataTable corresponde a una colección de objetos


DataRow. La propiedad Item[n] o Item [nombre] obtiene o define el valor de las columnas
(DataColumn). Dos de los métodos más importantes del objeto DataRow son el método
IsNull(n) o IsNull (nombre) que indica si una columna es nula.

Los objetos DataRow y DataColumn son componentes principales de un DataTable. El


objeto DataRow junto a sus propiedades y métodos permiten recuperar, evaluar, insertar,
eliminar y actualizar los valores de DataTable. DataRowCollection representa los objetos
DataRow reales de DataTable y DataColumnCollection contiene los objetos DataColumn
que describen el esquema de DataTable.

Para crear un DataRow nuevo, tenemos el método NewRow() del objeto DataTable. Luego
de crear un DataRow nuevo, el método Add() permite agregar el nuevo DataRow a
DataRowCollection. Por último, el método AcceptChanges() del objeto DataTable para
confirmar la adición en el origen de datos.

Ejemplo4: Continuando con el ejemplo anterior, al DataTable TablaDemo se agregará


un registro usando DataRow.

5.1.5. La clase DataView

Un objeto de la clase DataView representa una vista ordenada y/o filtrada de un objeto
DataTable y se utiliza cuando se desea vincular datos con los WebForms (Formulario Web)
o los WinForms (Formularios Windows).

Un objeto DataView contiene objetos DataRowView que tiene como propiedades


importantes Item (índice) para acceder a la fila deseada y Count para recoger el número
total de filas.

Además, un DataView se puede personalizar para presentar un subconjunto de datos de


DataTable. Esta capacidad permite tener dos controles enlazados al mismo objeto
DataTable y que muestren versiones distintas de los datos. Por ejemplo, un control puede
estar enlazado a un objeto DataView que muestre todas las filas de la tabla y el segundo
puede estar configurado para mostrar solo las filas que se hayan eliminado de DataTable.

La clase DataTable también tiene una propiedad DefaultView. Esta propiedad devuelve el
objeto DataView predeterminado para la tabla. Por ejemplo, si desea crear una vista
personalizada en la tabla, establezca la propiedad RowFilter o Sort, luego puede usar la
propiedad DefaultView para mostrar la información en su estado por defecto.

Para crear una vista filtrada y ordenada de datos, establezca las propiedades RowFilter y
Sort. Luego, utilice la propiedad Item para devolver un único DataRowView. También, se

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 204

pueden agregar y eliminar del conjunto de filas mediante los métodos AddNew y Delete.
Cuando se utilizan estos métodos, la propiedad RowStateFilter se puede establecer para
que especifique que DataView solo muestre las filas eliminadas o nuevas.

Ejemplo5: Crearemos un DataTable con la información de la tabla tbProductos,


luego se creará un DataView ordenado por el campo prodPresentacion de forma
ascendente y luego por el campo prodStock de forma descendente y filtrado por el
campo prodPrecio superior a 10.

Ejemplo6: Continuando con el ejemplo anterior, crearemos un DataView que muestre


el DataTable en su estado por defecto.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 205

LABORATORIO 8: Creación de Formularios con Acceso a Datos Desconectados

Caso1: Mantenimiento de datos en la tabla Especialidad

Cree un formulario que permita insertar, actualizar y eliminar la información contenida


en la tabla tbEspecialidad usando los elementos ADO.NET del modelo desconectado.

GUI del Formulario

Procedimiento

1. En Visual Studio 2013, cree un proyecto de tipo Visual C# y guárdelo con el


nombre pryPractica08 en su carpeta de trabajo.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 206

2. En el Form1, agregue los siguientes controles y cambie sus respectivas


propiedades:

Asigne a los controles los siguientes nombres:

Control Nombre
TextBox1 txtID
TextBox2 txtNombre
TextBox3 txtCosto
DataGridView1 dgEspecialidad
Button1 btnNuevo
Button2 btnCancelar
Button3 btnRegistrar
Button4 btnActualizar
Button5 btnEliminar
Button6 btnCerrar
Button7 btnEnviarCambios

3. En el proyecto, haga doble clic en el archivo App.config desde el Explorador


de soluciones:

4. Entre las etiquetas <configuration> y </ configuration> escriba:

5. Luego, agregue la referencia respectiva al proyecto.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 207

6. En el Form1, escriba el siguiente código donde se señala:

Importe las siguientes bibliotecas:

Declare la conexión (en una sola línea):

Declare el DataSet:

Agregue los siguientes dos procedimientos:

Para determinar la clave primaria dentro del DataSet, también es posible


utilizar la siguiente instrucción:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 208

Haga el llamado del procedimiento en el evento Load del formulario:

En el evento DoubleClick del DataGridView dgEspecialidad , escriba:

Haga doble clic en el botón Nuevo para habilitar el evento Click y escriba:

Haga doble clic en el botón Cancelar para habilitar el evento Click y escriba:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 209

Haga doble clic en el botón Registrar para habilitar el evento Click y escriba:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 210

Haga doble clic en el botón Actualizar para habilitar el evento Click y escriba:

Haga doble clic en el botón Eliminar para habilitar el evento Click y escriba:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 211

Haga doble clic en el botón Cerrar para habilitar el evento Click y escriba:

Haga doble clic en el botón Enviar Cambios para habilitar el evento Click y escriba:

7. Obtendrá el proyecto y verá el siguiente resultado.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 212

Actividad

Caso2: Mantenimiento de datos en la tabla Cursos (Form2)

Cree un formulario que permita insertar, actualizar y eliminar la información contenida


en la tabla tbCursos usando los elementos ADO.NET del modelo desconectado.

GUI del Formulario

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 213

Resumen
1. En el modelo de datos desconectado la aplicación ejecuta la consulta y almacena
los resultados de la misma para procesarlos después accediendo a un objeto de
tipo DataSet.

2. La clase DataSet es un cache de memoria interna de datos recuperados de un


origen de datos, la cual representa un componente fundamental de la arquitectura
de ADO.NET.

3. La clase DataTable representa una tabla en memoria y es donde reside la


información de los datos.

4. La clase DataColumn representa el conjunto de columnas de un objeto


DataTable, entre sus principales propiedades tenemos: ColumnName, DataType,
Unique y DefaultValue.

5. La clase DataRow representa el conjunto de filas de un objeto DataTable, sus


propiedades y métodos permiten recuperar, evaluar, insertar, eliminar y actualizar
los valores de DataTable.

6. La clase DataView representa una vista ordenada y/o filtrada de un objeto


DataTable, esta característica permite tener dos controles enlazados este mismo
objeto.

Puede revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad:

o https://msdn.microsoft.com/es-es/library/system.data.datatable(v=vs.100).aspx
o https://msdn.microsoft.com/es-es/library/system.data.datacolumn(v=vs.100).aspx
o https://msdn.microsoft.com/es-es/library/system.data.datarow(v=vs.110).aspx
o https://support.microsoft.com/es-es/kb/308909
o https://msdn.microsoft.com/es-es/library/hy5b8exc(v=vs.110).aspx

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 214

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 215

UNIDAD

6
INTRODUCCIÓN A LINQ
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno realiza operaciones de consulta y
actualización de datos por medio del lenguaje de consulta integrado (LINQ)
dentro de una aplicación Windows de mejor calidad.

TEMARIO

6.1 Tema 10 : Introducción a LINQ


6.1.1 : Componentes de LINQ
6.1.2 : LINQ to SQL
6.1.3 : Expresiones LAMBDA y el lenguaje LINQ

ACTIVIDADES PROPUESTAS

 Los alumnos crean formularios que accede a la información de una Base


de Datos por medio de LINQ.
 Los alumnos crean aplicaciones que consultan y manipulan la información
de una tabla de una Base Datos por medio de LINQ.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 216

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 217

6.1. TEMA 10: INTRODUCCIÓN A LINQ


LINQ son las siglas en inglés de, Language Integrated Query (Lenguaje de Consulta
Integrado). LINQ es un conjunto de características presentado en Visual Studio .NET el
cual define un conjunto de capacidades de consulta eficaces a la sintaxis de los lenguajes
de programación en C# y Visual Basic.

LINQ incluye patrones estándar y de fácil aprendizaje para consultar y actualizar datos, y
su tecnología se puede extender para utilizar potencialmente cualquier tipo de almacén de
datos. Visual Studio incluye ensamblados de proveedores para LINQ que habilitan el uso
de LINQ con colecciones de .NET Framework, bases de datos SQL Server, conjuntos de
datos de ADO.NET y documentos XML.

Una consulta es una expresión que recupera datos de un origen de datos. Las consultas
normalmente se expresan en un lenguaje de consultas especializado. A lo largo del tiempo,
se han ido desarrollando lenguajes diferentes para los distintos tipos de orígenes de datos,
como SQL para las bases de datos relacionales y XQuery para XML. Por tanto, los
desarrolladores han tenido que aprender un nuevo lenguaje de consulta para cada tipo de
origen de datos o formato de datos que deben usar. LINQ simplifica esta situación al
proporcionar un modelo coherente para trabajar con los datos de varios tipos de formatos y
orígenes de datos. En una consulta LINQ, siempre se trabaja con objetos. Se utilizan los
mismos modelos de codificación básicos para consultar y transformar datos de
documentos XML, bases de datos SQL, conjuntos de datos ADO.NET, colecciones .NET y
cualquier otro formato para el que haya disponible un proveedor LINQ.

Todas las operaciones de consulta LINQ se componen de tres acciones distintas:


 Obtención del origen de datos.
 Creación de la consulta.
 Ejecución de la consulta.

En el siguiente ejemplo, se utilizan las tres acciones:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 218

6.1.1. Componentes de LINQ

LINQ es una tecnología integrada en .NET que proporciona la capacidad de consultar o


manipular diversas fuentes de datos, independientes del proveedor utilizando de forma
nativa la sintaxis de cualquier lenguaje de programación soportado por .NET. Además, la
sintaxis de LINQ es similar a SQL lo que nos proporciona un estándar ya que es la misma
sintaxis para todas las fuentes de datos diferentes o similares.

Figura 23: Componentes de LINQ


Fuente.- Tomado de https://msdn.microsoft.com/es-es/library/bb399365(v=vs.110).aspx

El componente LINQ a utilizar depende de la fuente de datos a trabajar, los componentes


se agrupan en:
 LINQ to Objects: Es la API predeterminada de LINQ y permite escribir consultas
parar arreglos, estructuras y colecciones de objetos en memoria.
 LINQ to DataSet: Es la API dedicada a trabajar con clases DataSets y DataTables,
ya que aún existen aplicaciones y desarrolladores que utilizan esta solución.
 LINQ to SQL: Es el conjunto de clases, estructuras, interfaces y enumeraciones
utilizadas para escribir consultas a bases de datos relacionales como PostgreSQL,
SQL Server o MySQL.
 LINQ to Entidades: Es la API dedicada a trabar con clases Entities.
 LINQ to XML: Proporciona la habilidad de escribir consultas para procesar fuentes
de datos XML.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 219

6.1.2. LINQ to SQL

LINQ to SQL es una herramienta útil para programadores que no requieren la asignación a
un modelo conceptual. Si utiliza LINQ to SQL, puede usar el modelo de programación de
LINQ directamente en un esquema de base de datos existente.LINQ to SQL permite a los
programadores generar clases de .NET Framework que representan datos. En lugar de la
asignación a un modelo de datos conceptual, esas clases generadas se asignan
directamente a tablas de bases de datos, vistas, procedimientos almacenados y funciones
definidas por el usuario.

Con LINQ to SQL, los programadores pueden escribir código directamente en el esquema
de almacenamiento usando el mismo patrón de programación de LINQ que las
recopilaciones en memoria y DataSet, además de otros orígenes de datos como XML.

6.1.2.1. Modelando bases de datos con LINQ to SQL

Visual Studio contiene un diseñador de LINQ to SQL que nos aporta una forma fácil de
modelar y visualizar una base de datos como un modelo de objeto de LINQ to SQL.
Mediante el diseñador LINQ to SQL se puede crear fácilmente una representación de las
tablas de la base de datos BDComercial que al momento de ser añadidas tendremos las
siguientes clases entidades creadas a partir del esquema de la base de datos:

En la representación anterior, se definen tres clases entidades: tbClientes, tbDistritos y


tbVentas. Las propiedades de cada clase mapean las columnas de cada tabla en la base
de datos. Cada instancia de esa clase, representa una fila en las tablas.

Las flechas entre las clases representan las asociaciones/relaciones entre las diferentes
entidades. Son típicamente modeladas como relaciones primary-key/foreign-key en la base
de datos. La dirección de las flechas en el diseñador indica si la relación es uno-a-uno o
uno-a-varios.

Por ejemplo, la clase entidad tbDistritos tiene una relación de uno-a-varios con la clase
tbClientes. Esta relación definirá que la clase entidad tbClientes tenga una propiedad
llamada "tbDistritos" que los desarrolladores usarán para acceder a la entidad tbDistritos
para un registro de tbClientes dado. De igual manera, definirá que la clase entidad

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 220

tbDistritos tenga una colección de "tbClientes" que permitirá a los desarrolladores obtener
todos los tbClientes de un tbDistritos.

6.1.2.2. La clase DataContext

Visual Studio genera clases .NET para representar las entidades y las relaciones de la
base de datos que hemos modelado. Por cada archivo añadido a nuestra solución por el
diseñador LINQ to SQL también se generará una clase DataContext. Por medio de
esta,clase realizaremos las consultas a las entidades de nuestra base de datos. Esta clase
tendrá propiedades que representarán a cada tabla que hemos modelado, así como
métodos para cada procedimiento almacenado que añadamos.

En la imagen anterior, se muestra la clase DatosComercialDataContext que se generá en


el proyecto al momento agregar la clase LINQ to SQL con las tablas de la base de datos
BDComercial.

6.1.2.3. Clases Entidad (Entity)

LINQ to SQL nos permite modelar clases que mapeen una base de datos. Estas clases
son típicamente conocidas como "Clases Entidad" (en inglés "Entity Classes") y a las
instancias se las conoce como "Entidades" (en inglés "Entities"). Las propiedades de una
clase entidad mapean las columnas de la tabla.

Las clases entidad definidas por LINQ to SQL no tienen que derivar de una clase base
específica, esto es, que pueden heredar de cualquier objeto. Todas las clases creadas por
el diseñador de LINQ to SQL se definen como "clases parciales" con lo que podemos,
opcionalmente, añadir propiedades adicionales, métodos y eventos.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 221

6.1.3. Expresiones LAMBDA y el lenguaje LINQ

Las expresiones Lambda junto a las instrucciones que proporciona LINQ resultan en una
dupla complementaria en materia de desarrollo de software. La inclusión y el uso de
expresiones lambda en consultas de base de datos utilizando LINQ son elementales y
poderosos.

Cabe señalar que mediante LINQ resulta posible construir suficiente y eficiente código
para, no solamente poder acceder bases de datos, tablas, consultas, procedimientos
almacenados, triggers, etc., sino que también resulta posible manipular los datos en dichos
centros de datos de forma directa y eficaz. No se requiere de mucho esfuerzo y su principal
ventaja es que no es necesario aprender por completo el lenguaje SQL y todos sus
artilugios, de manera que de esta forma, se pueda explotar todas sus virtudes. LINQ ofrece
una forma menos exhaustiva de desarrollar software y para ello recurre al uso de
expresiones lambda entre otras técnicas.

El moderno concepto de OODBMS (Sistema de Manejador de Base de Datos Orientado a


Objetos) utiliza como eje central de desarrollo el uso del lenguaje LINQ y adiciona a este
compendio el uso de expresiones lambda como un modelo de desarrollo excepcional.

Operadores de LINQ

Las clases del espacio de nombres System.Linq y el resto de los espacios de nombres que
admiten consultas LINQ incluyen métodos a los que puede llamar para crear y refinar
consultas basándose en las necesidades de la aplicación.

from (Cláusula)

En una consulta LINQ, el primer paso es especificar el origen de datos. En C#, como en la
mayoría de los lenguajes de programación, se debe declarar una variable antes de poder
utilizarla. En una consulta LINQ, la cláusula from aparece en primer lugar para introducir el
origen de datos y la variable de rango.

Ejemplo1:

Defin el DataContext a partir de la clase LINQ to SQL como origen de datos.

Obtenga la información de la tabla tbClientes.

En el ejemplo anterior, cliente representa la variable de rango, el cual


sirve como referencia para cada elemento sucesivo del origen de datos
(datosComercial.tbClientes).

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 222

where (Cláusula)

Aplicar un filtro en forma de expresión booleana. El filtro hace que la consulta devuelva solo
los elementos para los que la expresión es verdadera. El resultado se genera mediante la
cláusula where. El filtro aplicado especifica qué elementos se deben excluir de la
secuencia de origen. En la siguiente tabla, se describen los principales métodos:

Método Descripción
Contains(<expr>) Compara si contiene la expresión señalada.
StartsWith(<expr>) Compara si inicia con la expresión señalada.
EndsWith(<expr>) Compara si finaliza con la expresión señalada.
Equals(<expr>) Compara si es igual a la expresión señalada.

Ejemplo2:

Obtenga la información de la tabla tbClientes filtrado por el estado civil “S” (Soltero), el ID
de Distrito superior a 10 y el apellido paterno inicia con la letra “C”.

En el ejemplo anterior, la consulta LINQ es equivalente a la siguiente


sentencia SQL:

orderby (Cláusula)

La cláusula orderby hará que los elementos de la secuencia devuelta se ordenen según el
comparador predeterminado del tipo que se va a ordenar de forma ascendente o
descendente (ascending o descending). Por ejemplo, si el campo a ordenar es de tipo
cadena, el comparador predeterminado realiza una ordenación alfabética de la A a la Z.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 223

Ejemplo3:

Obtenga la información de la tabla tbProductos ordenado por la presentación de forma


ascendente y por stock de forma descendente.

group (Cláusula)

La cláusula group permite agrupar los resultados según la clave que se especifique. Al
finalizar, una consulta con una cláusula group, los resultados adoptan la forma de una lista
de listas. Cada elemento de la lista es un objeto que tiene un miembro Key y una lista de
elementos agrupados bajo esa clave.

Ejemplo4:

Obtenga la información de la tabla tbProductos agrupado por la presentación.

select (Cláusula)

La cláusula select genera resultados de consulta y especifica la "forma" o el tipo de cada


elemento devuelto. Por ejemplo, puede especificar si sus resultados estarán compuestos
de objetos de un determinado origen de forma completa, un solo miembro, un subconjunto
de miembros o algún tipo de resultado completamente diferente basado en un cálculo o en
un objeto nuevo. Cuando la cláusula select genera algo distinto de una copia del elemento
de origen, la operación se denomina proyección. El uso de proyecciones para transformar
los datos es una eficaz funcionalidad de las expresiones de consulta LINQ.

Ejemplo5:

Obtenga la información de la tabla tbClientes donde se consideren los campos Nombres y


Apellidos (unión de los apellidos paterno y materno).

join (Cláusula)

Las operaciones de combinación crean asociaciones entre las secuencias que no se


modelan explícitamente en los orígenes de datos. En LINQ, la cláusula join funciona
siempre con colecciones de objetos, en lugar de con tablas de base de datos directamente.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 224

Ejemplo6:

Obtenga la información de las tablas tbClientes y tbDistritos donde se consideren los


campos Nombres, Apellidos (unión de los apellidos paterno y materno) y Distrito.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 225

LABORATORIO 9: Creación de Formularios para Consultar Datos con LINQ

Caso1: Consulta de datos en la tabla Alumnos

Cree un formulario que muestre la información de la tabla tbAlumnos usando la clase


LINQ to SQL.

GUI del Formulario

Procedimiento

1. En Visual Studio 2013, cree un proyecto de tipo Visual C# y guárdelo con el


nombre pryPractica09 en su carpeta de trabajo.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 226

2. En el Form1, agregue los siguientes controles y cambie sus respectivas


propiedades:

Asigne a los controles los siguientes nombres:

Control Nombre
DataGridView1 dgAlumnos
Label4 lblRegistros
Button1 btnCerrar

3. Active el Explorador de Servidores desde el menú Ver / Explorador de


Servidores, luego elija Conectar con base de datos:

4. En el cuadro Agregar conexión, defina los datos de la conexión: 1 Nombre del


servidor (.), 2 Usar autenticación de SQL Server (Nombre de usuario: sa y
Contraseña: sql) y 3 Seleccione el nombre de la Base de datos (BDNotas)

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 227

5. Pruebe la conexión, haga clic en el botón Probar conexión.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 228

6. En el Proyecto, agregue un elemento Clases de LINQ to SQL con el nombre


DatosNotas. Luego, presione el botón Agregar.

7. Arrastre la tabla tbAlumnos desde el Explorador de Servidores hasta la clase


de LINQ to SQL. Cuando lo solicite, guarde la cadena de conexión en el
archivo DBML y en el archivo de configuración, haga clic en el botón SI.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 229

8. En el Form1, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario e instancie la clase LINQ to SQL.

Agregue el siguiente procedimiento:

Haga el llamado del procedimiento en el evento Load del formulario:

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

9. Obtendrá el siguiente resultado.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 230

Caso2: Consulta de datos en las tablas Alumnos y Especialidad

Cree un formulario que muestre en un ComboBox la información de Especialidades y


en un DataGridView la información de Alumnos, la cual cambia según la selección de
una especialidad, además de una etiqueta con el número de registros. Considere las
tablas tbAlumnos y tbEspecialidad usando la clase LINQ to SQL DatosNotas
creado en el caso anterior.

GUI del Formulario

Procedimiento

1. En el proyecto, agregue un Windows Forms, deje el nombre por defecto


Form2.

2. En el Form2, agregue los siguientes controles y cambie sus respectivas


propiedades:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 231

Asigne a los controles los siguientes nombres:

Control Nombre
ComboBox1 cboEspecialidad
DataGridView1 dgAlumnos
Label4 lblRegistros
Button1 btnCerrar

3. En la clase de LINQ to SQL con el nombre DatosNotas, agregue la tabla


tbEspecialidad.

4. En el Form2, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario e instancie la clase LINQ to SQL.

Agregue el siguiente procedimiento:

Haga el llamado del procedimiento en el evento Load del formulario:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 232

En el evento SelectionChangeCommitted del cuadro combinado cboEspecialidad ,


escriba:

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

5. Defina Form2 como formulario inicial y obtendrá el siguiente resultado.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 233

Caso3: Consulta de datos en las tablas Alumnos y Especialidad (usando Store


Procedure)

Cree un formulario que muestre en un ComboBox la información de Especialidades y


en un DataGridView la información de Alumnos, la cual cambia según la selección de
una especialidad, además de una etiqueta con el número de registros. Considere
trabajar con Procedimientos Almacenados usando la clase LINQ to SQL DatosNotas
creado en el caso anterior.

GUI del Formulario

Procedimiento

1. En el proyecto, agregue un Windows Forms, deje el nombre por defecto


Form3.

2. En el Form3, agregue los siguientes controles y cambie sus respectivas


propiedades:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 234

Asigne a los controles los siguientes nombres:

Control Nombre
ComboBox1 cboEspecialidad
DataGridView1 dgAlumnos
Label4 lblRegistros
Button1 btnCerrar

3. En SQL Server 2014, cree los siguientes procedimientos almacenados, si no


los tiene creados:

Cree el procedimiento spMostrarEspecialidad que muestre la información de la


tabla tbEspecialidad, ordenado por espNombre en forma ascendente.

Cree el procedimiento spMostrarAlumnosPorEspID que muestre los campos


señalados de las tablas tbAlumnos y tbEspecialidad, ordenado por aluApellidos en
forma ascendente. Solicite un parámetro de entrada para el campo aluEspID.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 235

4. En la clase de LINQ to SQL con el nombre DatosNotas, agregue los


procedimientos almacenados en el área de métodos.

5. En el Form3, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario e instancie la clase LINQ to SQL.

Agregue el siguiente procedimiento:

Haga el llamado del procedimiento en el evento Load del formulario:

En el evento SelectionChangeCommitted del cuadro combinado cboEspecialidad,


escriba:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 236

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

6. Defina Form3 como formulario inicial y obtendrá el siguiente resultado.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 237

Actividad

Caso 4: Consulta de datos en las tablas Pagos y Alumnos (Form4)

Cree un formulario que muestre en un ComboBox la información de Alumnos y en un


DataGridView la información de Pagos, la cual cambia según la selección de un
alumno, además de una etiqueta con el número de registros. Considere trabajar con
Procedimientos Almacenados usando la clase LINQ to SQL DatosNotas creado en el
caso anterior.

GUI del Formulario

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 238

LABORATORIO 10: Creación de Formularios para Manipular Datos con LINQ

Caso1: Mantenimiento de datos en la tabla Cursos

Cree un formulario que permita insertar, actualizar y eliminar la información contenida


en la tabla tbCursos usando la clase LINQ to SQL.

GUI del Formulario

Procedimiento

1. En Visual Studio 2013, cree un proyecto de tipo Visual C# y guárdelo con el


nombre pryPractica10 en su carpeta de trabajo.

2. En el Form1, agregue los siguientes controles y cambie sus respectivas


propiedades:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 239

Asigne a los controles los siguientes nombres:

Control Nombre
Control Nombre
ToolStrip1
Label5 lblID
ToolStripButton1 tsbAgregar
TextBox1 txtNombre
ToolStripButton2 tsbEditar
NumericUpDown1 nudNCreditos
ToolStripButton3 tsbEliminar
DataGridView1 dgCursos
ToolStripButton4 tsbCerrar

3. En SQL Server 2014, cree los siguientes procedimientos almacenados, si no


los tiene creados:

Cree el procedimiento spMostrarCursos que muestre la información de la tabla


tbCursos, ordenado por curNombre en forma ascendente.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 240

Cree el procedimiento spUltimoCurID que muestre el último valor del campo curID
de la tabla tbCursos, ordenado por curID en forma descendente.

4. Active el Explorador de Servidores desde el menú Ver / Explorador de


Servidores, si es el caso, cree una conexión a la Base de datos BDNotas o
actívela con doble clic en el nombre de la conexión existente.

5. En el Proyecto, agregue un elemento Clases de LINQ to SQL con el nombre


DatosNotas. Luego presione el botón Agregar.

6. Arrastre la tabla tbCursos y los procedimientos almacenados


spMostrarCursos y spUltimoCurID desde el Explorador de Servidores hasta
la clase de LINQ to SQL. Cuando lo solicite, guarde la cadena de conexión en
el archivo DBML y en el archivo de configuración, haga clic en el botón SI.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 241

7. En el Form1, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario e instancie la clase LINQ to SQL.

Agregue los siguientes tres procedimientos:

Haga el llamado de los procedimientos en el evento Load del formulario:

En el evento DoubleClick del DataGridView dgCursos , escriba:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 242

Haga doble clic en el botón Agregar Curso para habilitar el evento Click y escriba:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 243

Haga doble clic en el botón Editar Curso para habilitar el evento Click y escriba:

Haga doble clic en el botón Eliminar Curso para habilitar el evento Click y escriba:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 244

Haga doble clic en el botón Cerrar Formulario para habilitar el evento Click y escriba:

8. Obtendrá el siguiente resultado.

Actividad

Caso 2: Mantenimiento de datos en la tabla Alumnos (Form2)

Cree un formulario que permita insertar, actualizar y eliminar la información contenida


en la tabla tbAlumnos usando la clase LINQ to SQL.

GUI del Formulario

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 245

Resumen
1. LINQ son las siglas en inglés de, Language Integrated Query (Lenguaje de
Consulta Integrado). LINQ es un conjunto de características presentado en Visual
Studio .NET el cual define un conjunto de capacidades de consulta eficaces a la
sintaxis de los lenguajes de programación en C# y Visual Basic.

2. Las operaciones de consulta LINQ se componen de tres acciones: Obtención del


origen de datos, Creación de la consulta y Ejecución de la consulta.

3. LINQ to SQL es una herramienta útil para programadores que no requieren la


asignación a un modelo conceptual. Si utiliza LINQ to SQL, puede usar el modelo
de programación de LINQ directamente en un esquema de base de datos
existente.LINQ to SQL permite a los programadores generar clases de .NET
Framework que representan datos.

4. Visual Studio contiene un diseñador de LINQ to SQL que nos aporta una forma
fácil de modelar y visualizar una base de datos como un modelo de objeto de LINQ
to SQL.

5. Visual Studio genera clases .NET para representar las entidades y las relaciones
de la base de datos que hemos modelado. Por cada archivo añadido a nuestra
solución por el diseñador LINQ to SQL también se generará una clase
DataContext.

6. Las expresiones Lambda junto a las instrucciones que proporciona LINQ resultan
en una dupla complementaria en materia de desarrollo de software. La inclusión y
el uso de expresiones lambda en consultas de base de datos utilizando LINQ son
elementales y poderosos. Entre los operadores LINQ tenemos: from, where,
orderby, group, select y join.

Puede revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad:

o https://msdn.microsoft.com/es-es/library/bb397906.aspx
o https://msdn.microsoft.com/es-pe/library/bb397927.aspx
o https://msdn.microsoft.com/es-pe/library/bb384428(v=vs.120).aspx
o http://ortizol.blogspot.pe/2014/06/expresiones-lambda-en-csharp-parte-3-
expresiones-lambda-y-linq.html

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 246

UNIDAD

7
MANEJO DE REPORTES
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno elabora reportes por medio de Crystal
Reports con listados conectados a un origen de datos dentro de una aplicación
Windows.

TEMARIO

7.1 Tema 11 : Manejo de reportes


7.1.1 : Trabajando con Crystal Reports
7.1.2 : Definiendo el origen de datos del reporte
Cargando y visualizando los datos del reporte en el control
7.1.3 :
CrystalReportViewer

ACTIVIDADES PROPUESTAS

 Los alumnos crean formularios que accede a la información de una Base


de Datos y muestra los resultados por medio de un Reporte.
 Los alumnos crean aplicaciones que consultan y filtran la información de
una tabla de una Base Datos y muestra los resultados usando Crystal
Reports.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 247

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 248

7.1. TEMA 11: MANEJO DE REPORTES


Crystal Reports para Visual Studio .NET es la herramienta de elaboración de informes
estándar para Visual Studio .NET. Permite crear contenido interactivo con calidad de
presentación en la plataforma .NET, lo que ha supuesto una ventaja fundamental para
Crystal Reports durante años.

Con Crystal Reports para Visual Studio .NET, puede almacenar informes en plataformas
Windows y Web y publicar informes Crystal como servicios Web de informes en un servidor
Web. Por ejemplo, puede crear una aplicación Web que permita a los usuarios profundizar
en un gráfico y filtrar la información en función de sus necesidades. Realmente, el gráfico
es un informe de Crystal que interactúa con otros controles de la aplicación.

En Visual Studio .NET, se puede crear un nuevo informe Crystal Reports o agregar uno
existente a un proyecto. Puede guardar el informe en un equipo local o publicarlo como
servicio Web en un servidor Web. En función de si va a desarrollar una aplicación de
Windows o una aplicación Web, deberá enlazar primero el informe con Windows Forms
Viewer o con Web Forms Viewer y, a continuación, crear la aplicación. Los usuarios
pueden ejecutar la aplicación para Windows en una plataforma de Windows o implementar
la aplicación Web en un servidor Web y ver el informe Crystal en un explorador Web.

7.1.1. Trabajando con Crystal Reports

Crystal Reports ha formado parte de Visual Studio desde 1993, y ahora es el estándar de
elaboración de informes de Visual Studio. Se incluye en todas las copias de Visual Studio
Professional y se integra directamente en el entorno de desarrollo.

Crystal Reports para Visual Studio incorpora la posibilidad de crear contenido interactivo
con calidad de presentación al entorno de Windows. Con Crystal Reports para Visual
Studio, puede crear informes complejos y profesionales en un programa basado en GUI.
Después, puede conectar el informe a casi todos los orígenes de base de datos, así como
a datos proxy, como un conjunto de resultados (por ejemplo, un ADO.NET DataSet). Los
asistentes del diseñador de GUI le permiten establecer fácilmente los criterios de formato,
agrupamiento y gráficos, etc.

Puede almacenar el informe en una aplicación Web o para Windows, con uno de los
controles de visores de Crystal Reports para Visual Studio.

Crystal Reports para Visual Studio incluye un SDK extenso. Puede utilizarlo para
interactuar con el informe mediante programación en tiempo de ejecución, usando uno de
los cuatro modelos de objetos posibles:
 CrystalReportViewer, el modelo de objetos más sencillo.
 ReportDocument, el modelo de objetos más completo.
 ReportClientDocument, el modelo de objetos más completo. Este modelo de
objetos está disponibles con Crystal Reports 2008 o con un servidor RAS.
 InfoObject, un modelo de objetos muy eficaz para la programación y configuración
de informes en el marco de Crystal Reports Server o BusinessObjects Enterprise.

Puede descargar el instalador de Crystal Reports desde la siguiente dirección:


http://www.sap.com/solution/sme/software/analytics/crystal-visual-studio/index.html

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 249

7.1.2. Definiendo el origen de datos del reporte

Crystal Reports se conecta a bases de datos mediante controladores de bases de datos.


Cada controlador se escribe para controlar un tipo de base de datos específico o la
tecnología de acceso a bases de datos.

7.1.2.1. Modelo de Extracción e Inserción

Con el fin de ofrecer el acceso a datos más flexible para los programadores, los
controladores de base de datos de Crystal Reports se han diseñado para proporcionar un
modelo de extracción e inserción de acceso a datos.

7.1.2.2. Modelo de Extracción

En un modelo de extracción, el controlador se conectará a la base de datos y extraerá


datos cuando se necesiten. Con este modelo, Crystal Reports controla tanto la conexión a
la base de datos como el comando SQL que se ejecuta para obtener los datos y no
necesita ninguna codificación del programador. Si no se escribe ningún código especial en
tiempo de ejecución, se utiliza el modelo de extracción.

7.1.2.3. Modelo de Inserción

En comparación, el modelo de inserción necesita que el programador escriba código para


conectarse a la base de datos, ejecutando un comando SQL para crear un conjunto de
registros o de datos que se ajusten a los campos del informe y enviando ese objeto al
informe. Este método le permite crear recursos compartidos de conexión en la aplicación y
filtrar los datos antes de que Crystal Reports los reciba.

7.1.3. Cargando y visualizando los datos del reporte en el control


CrystalReportViewer

Los informes se crean en el Diseñador de Crystal Reports. El Diseñador de Crystal


Reports se inicia automáticamente al añadir un objeto de Crystal Reports al proyecto o al
hacer doble clic en un objeto de Crystal Reports existente en el proyecto.

7.1.3.1. Conexión de la Base de Datos

En Crystal Reports Designer, seleccione primero el origen de datos al que hará


referencia el informe. Puede utilizar varios orígenes de datos en un informe.

A continuación, seleccione las tablas de la base de datos que desee utilizar en el informe.
Crystal Reports puede vincular las tablas automáticamente, o bien puede especificar el
modo en el que desea vincularlas. Las tablas de bases de datos se vinculan para que los
registros de una base de datos coincidan con los registros relacionados de otra tabla.

7.1.3.2. Objetos de Informes

Crystal Reports Designer utiliza una funcionalidad de arrastrar y colocar parecida a la que
se utiliza en Visual Studio .NET, se arrastra un objeto de informe hasta el diseñador (como
un campo de base de datos o un objeto de texto) y se utiliza la ventana Propiedades o el
menú contextual para dar formato al objeto.

Algunos de los objetos de informe que puede añadir al informe y a los que puede dar
formato según las necesidades incluyen:
 Campos de base de datos.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 250

 Campos de fórmula.
 Campos de parámetro.
 Campos de nombre de grupo.
 Campos de total acumulado.
 Campos de resumen.
 Gráficos.
 Subinformes.

7.1.3.3. Secciones de Informes

Crystal Reports Designer está dividido en secciones de informe, como los encabezados de
las secciones, los pies de página y los detalles. Los objetos se arrastran a una sección de
informe.

Los datos que aparecen en el informe finalizado dependen de las opciones de


organización. En particular, los datos del informe varían según las secciones en las que
desee insertar objetos de informe concretos. Por ejemplo, si inserta un objeto de gráfico en
la sección Encabezado de informe, el gráfico solo aparecerá una vez al principio del
informe y resumirá los datos que contiene el informe. Además, si un objeto de gráfico se
añade a la sección Encabezado de grupo, aparecerá un gráfico individual al principio de
cada grupo de datos y sólo se resumirán los datos relacionados con dicho grupo.

A continuación, detallamos cada una de las secciones de un informe:

a. Encabezado de informe: Los objetos que se colocan en el Encabezado de


informe se imprimen una vez, al principio del informe. Esta sección normalmente
contiene el título del informe y la información adicional que desea que aparezca
solo al principio del mismo.
o Los gráficos y las tablas cruzadas de esta sección contienen los datos de
todo el informe.
o Las fórmulas de esta sección se evalúan una vez, al principio del informe.

b. Encabezado de página: Los objetos incluidos en la sección Encabezado de


página se imprimen al principio de cada nueva página. Esta sección suele contener
la información que desea que aparezca en la parte superior de cada página. Puede
incluir campos como el nombre de un capítulo, de un documento o información
similar. También, se puede utilizar para incluir títulos de campos, que aparecerán
como etiquetas sobre las columnas con los datos de los campos del informe.
o En esta sección, no se pueden incluir gráficos ni tablas cruzadas.
o Las fórmulas que se colocan en esta sección se evalúan una vez por
página, al principio de cada página nueva.

c. Detalles: Los objetos colocados en la sección Detalles se imprimen con cada


registro nuevo. Esta sección contiene los datos del cuerpo del informe. Aquí,
aparece la mayor parte de los datos de éste. Cuando se ejecuta el informe, la
sección Detalles se vuelve a imprimir para cada registro. Por ejemplo, si añade un
objeto de base de datos con 100 registros a la sección Detalles, el informe
imprimirá 100 secciones de detalle individuales en tiempo de ejecución.
o En esta sección, no se pueden incluir gráficos ni tablas cruzadas.
o Las fórmulas incluidas aquí se evalúan una vez por cada registro.

d. Pie de informe: Los objetos que se colocan en el Pie de informe se imprimen una
vez, al final del informe. Esta sección se utiliza para incluir la información que desea
que solo aparezca una vez al final del informe, como los totales generales.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 251

o Los gráficos y las tablas cruzadas de esta sección contienen los datos de
todo el informe.
o Las fórmulas de esta sección se evalúan una vez, al final del informe.

e. Pie de página: Los objetos colocados en la sección Pie de página se imprimen en


la parte inferior de cada página. Normalmente, esta sección refleja el número de
página, así como cualquier otra información que desee que aparezca en la parte
inferior de las páginas.
o En esta sección, no se pueden incluir gráficos ni tablas cruzadas.
o Las fórmulas de esta sección se evalúan una vez por página, al final de
cada una de ellas.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 252

LABORATORIO 11: Creación de Formularios con Reportes en CrystalReports

Caso1: Reporte con Agrupamiento de datos

Cree un formulario que muestre la información de la tabla tbAlumnos agrupado por el


campo aluProcedencia usando Crystal Reports.

GUI del Formulario

Procedimiento

1. En Visual Studio 2013, cree un proyecto de tipo Visual C# y guárdelo con el


nombre pryPractica11 en su carpeta de trabajo.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 253

2. En el Proyecto, agregue un elemento Conjunto de datos para obtener la


información de la tabla tbAlumnos con el nombre dsAlumnos. Luego,
presione el botón Agregar.

3. En el DataSet, agregue un TableAdapter hacia la tabla tbAlumnos. Para ello,


haga clic derecho / Agregar / TableAdapter….

4. En la sección Elegir la conexión de datos, utilice una conexión existente (si


no existe cree una, presionando el botón Nueva conexión), marque Sí, incluir
datos confidenciales en la cadena de conexión. Luego, presione el botón
Siguiente.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 254

5. En la sección Guardar cadena de conexión en el archivo de config de la


aplicación, guarde la cadena de conexión con el nombre por defecto. Luego,
presione el botón Siguiente.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 255

6. En la sección Elija un tipo de comando, seleccione Usar instrucciones SQL.


Luego presione el botón Siguiente.

7. En la sección Escriba una instrucción SQL, escriba la sentencia SQL para


obtener la información de la tabla tbAlumnos, en este caso: SELECT * FROM
tbAlumnos.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 256

8. O puede utilizar el Generador de consultas. Luego, presione el botón


Siguiente.

9. En la sección Elija los métodos que se van a generar, mantenga las


opciones y nombres por defecto. Luego, presione el botón Siguiente.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 257

10. En la sección Resultados del asistente, presione el botón Finalizar.

11. Obtendrá el siguiente resultado:

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 258

12. En el Proyecto, agregue un elemento Crystal Reports con el nombre


rpAlumnos.

13. En la Galería de Crystal Reports, elija Usar asistente de informes y en


Elegir un Asistente seleccione Estándar. Luego, presione el botón Aceptar.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 259

14. En la sección Datos, desde Origines de datos disponibles / Datos del


proyecto / ADO.NET DataSets añada a Tablas seleccionadas la tabla
tbAlumnos. Luego, presione el botón Siguiente.

15. En la sección Campos, agregue todos los campos desde tbAlumnos. Luego,
presione el botón Siguiente.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 260

16. En la sección Agrupamiento, agregue el campo aluProcedencia. Luego,


presione el botón Siguiente.

17. En la sección Resúmenes, sin realizar cambios solo presione el botón


Siguiente.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 261

18. En la sección Selección de registro, sin realizar cambios solo presione el


botón Siguiente.

19. En la sección Estilo de informe, seleccione Sombreado. Luego, presione el


botón Finalizar.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 262

20. Obtendrá el siguiente resultado:

Si no aparecen las barras de herramientas relacionados al diseño del


reporte en Crystal Reports, para activarlos realice clic derecho sobre
el menú de opciones y luego marque las siguientes opciones:

21. Desde el Cuadro de herramientas, agregue un Objeto de texto hacia la


Sección 2 (Encabezado de página) del informe, escriba el texto INFORME DE
ALUMNOS y cambie sus propiedades, según como se muestra:

22. En la Sección 2 y 3 (Encabezado de página y Detalles respectivamente), borre


los campos del nombre y del apellido; luego realice los cambios mostrados:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 263

23. Desde el Explorador de campos, cree un nuevo Campo de fórmula con el


nombre Alumno.

24. En el Editor de fórmulas, complete la siguiente expresión para unir el nombre


y los apellidos del alumno: {tbAlumnos.aluApellidos} + ' ' +
{tbAlumnos.aluNombres}. Luego, presione el botón Guardar y cerrar.

25. En la Sección 3 (Detalles), arrastre el campo calculado Alumno.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 264

26. Desde el Explorador de campos, cree un nuevo Campo de totales


acumulados.

27. En el cuadro Crear campo de total acumulado, en Nombre del total


acumulado escriba RegistrosPorGrupo, en Campo para resumir seleccione
aluProcedencia, en Tipo de resumen seleccione recuento, en Evaluar marque
Para cada registro y en Restablecer marque Al cambiar del grupo. Luego,
presione el botón Aceptar.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 265

28. En la Sección del pie de grupo, agregue un Objeto de texto escriba el texto
Cantidad de alumnos y luego arrastre el campo de totales
RegistrosPorGrupo.

29. En la Sección 2 (Encabezado de página), inserte una imagen para ello realice
clic derecho dentro de la sección / Insertar / Imagen…, busque y elija la
imagen. Luego, presione el botón Abrir. Ubíquelo y cambie el tamaño de la
imagen.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 266

30. En el Form1, agregue el control CrystalReportViewer para mostrar el reporte


anterior:

31. En el Form1, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario y en evento Load escriba:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 267

32. En el App.config, agregue el siguiente código:

33. Obtendrá el siguiente resultado.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 268

Caso2: Reporte con Parámetros

Cree un formulario que muestre la información del reporte anterior que filtre la tabla
Alumnos según la Especialidad elegida por medio de parámetros usando Crystal
Reports.

GUI del Formulario

Procedimiento

1. Abra el DataSet creado en el caso anterior dsAlumnos, haga clic derecho en


el nombre tbAlumnosTableAdapter y elija Agregar consulta…

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 269

2. En la sección Elija un tipo de comando, seleccione Usar instrucciones SQL.


Luego, presione el botón Siguiente.

3. En la sección Elija un tipo de consulta, seleccione SELECT que devuelve


filas. Luego, presione el botón Siguiente.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 270

4. En la sección Especifique una instrucción SELECT de SQL, reemplace el


contenido y escriba la instrucción SQL para obtener la información de la tabla
tbAlumnos según el ID de la Especialidad: SELECT * FROM tbAlumnos
WHERE aluEspID=@EspID

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 271

5. En la sección Elija los métodos que se van a generar, escriba el nombre


FillByEspecialidad en el método para rellenar un DataTable y el nombre
GetDataByEspecialidad en el método para devolver un DataTable. Luego,
presione el botón Siguiente.

6. En la sección Resultados del asistente, presione el botón Finalizar.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 272

7. Obtendrá el siguiente resultado:

8. En el Proyecto, agregue un elemento Clases de LINQ to SQL con el nombre


DatosNotas. Luego, presione el botón Agregar.

9. Arrastre la tabla tbEspecialidad desde el Explorador de Servidores hasta la


clase de LINQ to SQL. Cuando lo solicite, guarde la cadena de conexión en el
archivo DBML y en el archivo de configuración, haga clic en el botón SI.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 273

10. En el Proyecto, agregue un Windows Forms, deje el nombre por defecto


Form2.

11. En el Form2, agregue los siguientes controles y cambie sus respectivas


propiedades:

Asigne a los controles los siguientes nombres:

Control Nombre
ComboBox1 cboEspecialidad
Button1 btnMostrarReporte

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 274

12. En el Form2, escriba el siguiente código donde se señala:

Haga doble clic en el título del formulario e instancie la clase LINQ to SQL.

Agregue el siguiente procedimiento:

Haga el llamado del procedimiento en el evento Load del formulario:

Haga doble clic en el botón Mostrar Reporte para habilitar el evento Click y escriba:

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 275

13. Obtendrá el siguiente resultado.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 276

Actividad

Caso3: Reporte de Notas por Alumno (Form3 y Form4)

Cree un formulario que permita ingresar o buscar un ID de Alumno y luego muestre el


reporte de notas de dicho alumno. Implemente el DataSet apropiado que muestre los
campos Curso, Parcial, Final y Promedio que filtre por el campo notaAluID. Además,
cree el reporte Crystal Reports apropiado que muestre los datos del DataSet y la
Cantidad de notas.

GUI del Formulario Form3

Consideraciones:
 Se escribe el ID del alumno en el cuadro de texto y al perder el enfoque si el ID
existe muestra sus Apellidos y Nombre en un Label, caso contrario muestra un
mensaje apropiado.

 Otra opción es presionar el botón (puntos suspensivos), que invoca al


Form4 que permite filtrar por Apellidos, seleccionar un registro con doble clic y
devolver el ID junto a los Apellidos y Nombre del alumno elegido.

 El botón Mostrar Reporte, muestra el informe según el ID mostrado en el


cuadro de texto.

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC


DESARROLLO DE SISTEMAS EMPRESARIALES 277

GUI del Formulario Form4

Consideraciones:

 Se escribe parte o todo el Apellido del alumno y filtra los datos en el


DataGridView.

 Al presionar el botón Mostrar todo, muestra toda la información de la tabla


alumnos en el DataGridView.

 Al dar doble clic en la fila del alumno deseado, sus datos son mostrados en el
Form3.

 Al presionar el botón Cerrar Formulario, cierra el Form4.

IEST PRIVADO CIBERTEC CARRERA DE ADMINISTRACIÓN Y SISTEMAS


DESARROLLO DE SISTEMAS EMPRESARIALES 278

Resumen
1. Crystal Reports para Visual Studio .NET es la herramienta de elaboración de
informes estándar para Visual Studio .NET. Permite crear contenido interactivo con
calidad de presentación en la plataforma .NET, lo que ha supuesto una ventaja
fundamental para Crystal Reports durante años.

2. Crystal Reports para Visual Studio incluye un SDK extenso. Puede utilizarlo para
interactuar con el informe mediante programación en tiempo de ejecución, usando
uno de los cuatro modelos de objetos posibles: CrystalReportViewer,
ReportDocument, ReportClientDocument y InfoObject.

3. Crystal Reports se conecta a bases de datos mediante controladores de bases de


datos. Cada controlador se escribe para controlar un tipo de base de datos
específico o la tecnología de acceso a bases de datos.

4. Los informes se crean en el Diseñador de Crystal Reports. El Diseñador de


Crystal Reports se inicia automáticamente al añadir un objeto de Crystal Reports al
proyecto o al hacer doble clic en un objeto de Crystal Reports existente en el
proyecto.

5. En Crystal Reports Designer, seleccione primero el origen de datos al que hará


referencia el informe. Puede utilizar varios orígenes de datos en un informe.

6. Algunos de los objetos de informe que puede añadir al informe y a los que puede
dar formato según las necesidades incluyen: Campos de base de datos, Campos
de fórmula, Campos de total acumulado, entre otros.

Puede revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad:

o https://msdn.microsoft.com/es-es/library/aa287933(v=vs.71).aspx
o http://www.sap.com/solution/sme/software/analytics/crystal-visual-studio/index.html
o https://msdn.microsoft.com/es-es/library/ms225593(v=vs.90).aspx

CARRERA DE ADMINISTRACIÓN Y SISTEMAS IEST PRIVADO CIBERTEC

You might also like