Portafolio Programacion I 2012

435
1 | Página 2012 PORTAFOLIO DE PROGRAMACION 1 UNIVERSIDAD TECNICA DE MACHALA FACULTAD DE INGENIERÍA CIVIL ESCUELA DE INFORMÁTICA ALUMNO TUTORADO: Luis David Zamora Loján CURSO: 5to Quimestre “A” TUTOR: Ing. Mariuxi Zea

description

Presentacion de las actividades en clase y extraclase, evaluaciones y proyectos de programacion I.

Transcript of Portafolio Programacion I 2012

Page 1: Portafolio Programacion I 2012

1 | P á g i n a

2012

PORTAFOLIO DE PROGRAMACION 1

UNIVERSIDAD TECNICA DE MACHALA

FACULTAD DE INGENIERÍA CIVILESCUELA DE INFORMÁTICA

ALUMNO TUTORADO:Luis David Zamora Loján

CURSO:5to Quimestre “A”

TUTOR:Ing. Mariuxi Zea

Page 2: Portafolio Programacion I 2012

Contenido

INTRODUCCIÓN.......................................................................................................................................3

SYLLABUS DE LA ASIGNATURA...................................................................................................4

ACTIVIDADES DE APRENDIZAJE INTRA Y EXTRA CLASE...................................................13

CAPITULO 1: INTRODUCCIÓN A .NET........................................................................................14

CAPITULO 2: VISUAL STUDIO 2005 Y C#..................................................................................46

CAPITULO 3: USO DE CONTROLES Y METODOLOGÍA DE DESARROLLO....................100

CAPITULO 4: PRESENTACIÓN DE RESULTADOS (INFORMES)........................................307

EXAMEN FINAL...............................................................................................................................348

PROYECTO FINAL..........................................................................................................................350

2 | P á g i n a

Page 3: Portafolio Programacion I 2012

INTRODUCCIÓN

Este trabajo corresponde al portafolio del módulo de programación 1, en el

periodo correspondiente al 5to. Quimestre del 2012, en el cual observaremos

todas las actividades realizadas día a día en el transcurso de las clases de esta

materia.

Al inicio de las clases fueron para afianzar los conceptos y fundamentos teóricos

de los estudiantes con respecto a la programación orientada a objetos, así como

adentrarse a la programación en la plataforma .net, exclusivamente el lenguaje de

programación C Sharp (C#). Luego las clases fueron prácticas, en la cual se

trabajaban con bases de datos a elección, entre las cuales tenemos Access o

SQL Server, dando pautas para que los estudiantes realicen trabajos

investigativos tanto para exposiciones grupales hacia sus compañeros sobre la

forma de utilizar las bondades de la plataforma .net con C#, como para la

realización paso a paso sobre los proyectos finales en el cual se iban aplicando,

tras cada exposición, lo que se aprendía en clases.

Al final se demostró exitosa la forma de aprendizaje en la cual se aprendió mucho

y se obtuvo grandes logros que enorgullecieron la imagen de la Escuela de

informática, con los trabajos finales presentados a la ciudadanía en el 3

lanzamiento de software educativos y comerciales a empresas públicas y

privadas.

Ahora se explicará paso a paso lo que se realizó en el transcurso del módulo de

Programación 1.

3 | P á g i n a

Page 4: Portafolio Programacion I 2012

SYLLABUS DE LA ASIGNATURA

4 | P á g i n a

Page 5: Portafolio Programacion I 2012

UNIVERSIDAD TÉCNICA DE MACHALA

FACULTAD DE INGENIERÍA CIVIL

CARRERA DE INGENIERÍA EN SISTEMAS

SYLLABUS

PROGRAMACIÓN I

1. ASIGNATURA : PROGRAMACIÓN I

2. MALLA CURRICULAR : SISTEMA SEMESTRAL

3. PERIODO ACADÉMICO : 2012-2013

4. CÓDIGO : 502

5. NUMERO DE CRÉDITOS : 5

6. PRERREQUISITO : BASE DE DATOS ANÁLISIS ORIENTADO A OBJETOS

CORREQUISITO : DISEÑO ORIENTADO A OBJETOS

7. No. HORAS CLASE : 80 horas semestrales

8. No HORAS NO PRESENCIALES: 80 horas semestrales

9. HORARIO DE CLASE : 4 HORAS SEMANALES (60 minutos c/hora)

10. DESCRIPCIÓN DE LA ASIGNATURA

Programación I, es una asignatura en donde se utiliza un lenguaje de programación, en este caso C#, para construir sistemas informáticos que resuelvan las necesidades o requerimientos de empresas. Permitirá reforzar la lógica de programación de los estudiantes, incentivar al autoaprendizaje de nuevos lenguajes de programación, la autodisciplina y la utilización de metodologías para el desarrollo de sistemas informáticos basados en una metodología de desarrollo.

5 | P á g i n a

Page 6: Portafolio Programacion I 2012

11. CONTRIBUCIÓN DE LA ASIGNATURA EN LA FORMACIÓN DEL INGENIERO DE SISTEMAS

Con la asignatura Programación I el ingeniero de sistemas adquiere las siguientes habilidades.

1. Modelar y resolver problemas de diferentes disciplinas que involucran el desarrollo de un software de escritorio.

2. Proponer diferentes soluciones para resolver problemas informáticos.3. Desarrollar software utilizando metodología de desarrollo y técnicas de

programación.4. Capacidad de liderar y gestionar grupos de desarrollo en proyectos de

creación de software

12. RESULTADOS DE APRENDIZAJE DE LA ASIGNATURA

12.1 Diseñar e implementar conexiones hacia base de datos (SQL Server y/o Access) desde una aplicación desarrollada en el lenguaje C#

12.2 Planificar, construir e Implementar aplicaciones en ambiente de escritorio amigables, flexibles y seguras que permitan resolver los problemas dentro de los procesos administrativos, utilizando el Lenguaje C#.

12.3 Programar métodos que muestren características de bajo acoplamiento y alta cohesión.

12.4 Crear reportes que permitan tomar decisiones y ejecutarlos desde una interface creada en lenguaje C#.

12.5 Utilizar técnicas de programación y metodología de desarrollo para crear e implementar soluciones informáticas de escritorio eficientes.

13. PROGRAMACIÓN DETALLADA

DETALLE HORAS CLASE

CAPITULO I (10 Horas clase)INTRODUCCIÓN A .NET1.1 Diagnóstico, Introducción y encuadre 21.2 Introducción a la programación 21.3 .net Framework 21.4 Metodología de Desarrollo de software 21.5 Diseño de ambientes Windows 2

CAPITULO II (6 horas clase)VISUAL STUDIO 2005 Y C#2.1 Conexión a Base de Datos 12.2 Acceso a Base de Datos 12.3 Tipos de Datos por Valor y Referencia 12.4 Funciones 12.5 Nombres reservados 2

6 | P á g i n a

Page 7: Portafolio Programacion I 2012

CAPITULO III (34 Horas clase)USO DE CONTROLES Y METODOLOGÍA DE DESARROLLO3.1 Clases y métodos 23.2 Conexión a la base de datos con el DataAdapter 23.3 Programación de métodos 23.4 Programación de botones de navegación 23.5 Operaciones CRUD 43.6 Principales controles 43.7 Búsqueda de registros 23.8 Validación Integridad Referencial: llave principal 23.9 Validación Integridad Referencial: llave ajena 23.10 Formularios con relación 1 a 1 23.11 Creación de valores automáticos 13.12 Validación de ingreso de datos 13.13 Llamada a otros formularios 23.14 Formulario con relación 1 a N 23.15 Creación de menús 23.16 Creación y uso de usuarios 2

CAPITULO IV (30 Horas clase)PRESENTACIÓN DE RESULTADOS. INFORMES4.1 Creación y ejecución de informes. Una tabla 34.2 Informes con varias tablas. (1 a N) 34.3 Informes con filtros 24.4 Informes con quiebre de control 24.5 Examen Final del módulo 84.6 Defensa de Proyectos 84.7 Examen de Recuperación 4

TOTAL HORAS CLASE 80

14.TEXTO Y OTRAS REFERENCIAS

TEXTO GUÍA

- C#- Joseph Schmuller- Editorial: Prentice Hall

BIBLIOGRAFIA ADICIONAL

Programando con C#Deitel & DeitelEditorial: Prentice Hall No.Edición: Quinta

7 | P á g i n a

Page 8: Portafolio Programacion I 2012

C# Paso a PasoLuis JoyanesEditorial: McGrawHill No. Edición:

15. DESCRIPCIÓN DE LA METODOLOGÍA DE ENSEÑANZA

ESTRATEGIAS PEDAGÓGICAS DEL DOCENTE

- Identificar individualidades y estilos de aprendizaje de los estudiantes- Organizar grupos de trabajo para prácticas en el laboratorio- Definir tareas de aprendizaje de acuerdo al avance de la materia- Determinar tópico de investigación bibliográfica

TRABAJOS QUE DEBEN REALIZAR LOS ESTUDIANTES

- Ejecutar tareas de aprendizaje planificadas- Realizar tareas extraclase en el aulavirtual- Mejorar su propio rendimiento- Llevar a cabo un Proyecto de aplicación que será presentado en un evento

de Lanzamiento de Software.- Rendir las pruebas y examen final para las fechas programadas.

16. TRABAJO TERMINAL

Los estudiantes elaborarán un trabajo o proyecto de aplicación de la asignatura en el desarrollo de software de escritorio para una empresa de la localidad, para lo cual deberán utilizar las capacidades desarrolladas en clase durante el periodo de enseñanza.

El proyecto de investigación estará orientado hacia la utilización de las técnicas de programación y metodología de desarrollo en la resolución de problemas, que brinde seguridad, acceso y navegación, utilizando el lenguaje de programación C#.

17. PORTAFOLIO DE LA ASIGNATURA

El portafolio de la asignatura contendrá la siguiente información

- Carátula- Syllabus- Tareas en clase- Tareas extraclase- Evaluaciones parciales- Evaluación final- Evidencia de eventos investigativos.- Apuntes relevantes

8 | P á g i n a

Page 9: Portafolio Programacion I 2012

18. RECURSOS DIDÁCTICOS

Los recursos didácticos a emplearse son:

Texto guía y Bibliografía adicional Información del Internet Aula Virtual Laboratorio de computación y proyector Software especializado: Visual .NET (C#) 2008, SQL Server 2005, Access

2010 Software Ofimático: Office 2010 Aulas de Clase Pizarrón y marcadores

19. RELACION DE LA ASIGNATURA CON LOS RESULTADOS DE APRENDIZAJE.

Se describe que es lo que se espera que los estudiantes conozcan y sean capaces de hacer al momento de terminar la asignatura.

RESULTADOSCONTRIBUCIÓN EL ESTUDIANTE DEBE

a) Aplicar conocimiento en Matemáticas, Ciencia e Ingeniería

BAJA

Aplicar procedimientos y leyes de la lógica matemática para la implementación de código de programación para la eficiencia y efectividad de soluciones informáticas

b) Diseñar, conducir experimentos, analizar e interpretar datos

BAJA

Levantar e interpretar datos de los procesos de negocio tomados en el análisis, necesarios para el modelamiento y diseño de la aplicación, así como la verificación de la aplicación mediante pruebas de unidad

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas

ALTA

Diseñar componentes de código reutilizables, para su implementación entre diferentes proyectos de desarrollo de software aplicables en distintos contextos de negocio.

d) Trabajar como un MEDIA Conformar equipos de trabajo para el

9 | P á g i n a

Page 10: Portafolio Programacion I 2012

RESULTADOSCONTRIBUCIÓN EL ESTUDIANTE DEBE

equipo multidisciplinario

trabajo en clase y el proyecto final donde se distribuyan habilidades respecto a las diferentes soluciones. Entender diferentes procesos que se llevan a cabo en los negocios del mundo real, donde se pueden aplicar soluciones que involucren programación en un entorno de escritorio.

e) Identificar, formular y resolver problemas de ingeniería

ALTA

Resolver problemas informáticos generales que involucren parámetros comunes y determinen subrutinas reutilizables

f) Comprender la responsabilidad ética y profesional

BAJA

Desarrollar un proyecto final que determine la participación e innovación de únicamente los involucrados y entregarlo a tiempo.

g) Comunicarse efectivamente

MEDIA

Explicar la factibilidad y las ventajas del producto que han desarrollado.Desarrollar un manual de usuario claro y didáctico, de tal manera que las dudas del usuario se puedan resolver fácilmente.

h) Entender el impacto de la ingeniería en el contexto social y medio ambiental

*****

i) Comprometerse con el aprendizaje continuo

BAJA

Realizar investigaciones sobra la evolución de los lenguajes de programación para entender los cambios continuos que se generan en la tecnología.

j) Conocer temas contemporáneos

BAJA

Entender los problemas de actualidad y más comunes del negocios, que se resuelvan con soluciones de escritorio.

k) Usar técnicas, BAJA Aplicar técnicas de programación,

10 | P á g i n a

Page 11: Portafolio Programacion I 2012

RESULTADOSCONTRIBUCIÓN EL ESTUDIANTE DEBE

habilidades y herramientas para la práctica de ingeniería

metodología de desarrollo, y base de datos objeto relacionales

i) Capacidad para liderar gestionar o emprender proyectos

MEDIA

Conformar grupos de desarrollo, que requieran dirección y liderazgo, para el análisis, diseño e implementación del proyecto final de la asignatura

20. EVALUACIÓN DE LA ASIGNATURA

El objetivo de la evaluación es poder comparar lo asimilado por el estudiante con lo que debió asimilar, de tal manera que para el docente se convierta en un termómetro que le indica hasta donde llegó con los conocimientos a los estudiantes.

La evaluación de la asignatura estará conformada por la evaluación de cada unidad, de la siguiente manera:

FRECUENTE:

Participación del estudiante.

Exposiciones - Investigaciones.

Asistencia

Puntualidad.

PARCIAL:

Trabajos individuales y en grupo.

Pruebas escritas teóricas y prácticas.

Trabajos de investigación.

FINAL:

Examen práctico.

Trabajo práctico.

CUADRO DE PUNTAJE DEL SISTEMA DE EVALUACIONES

11 | P á g i n a

Page 12: Portafolio Programacion I 2012

Participación individual y grupal 2

Reportes y consultas 1

Trabajo autónomo 1

Trabajos de investigación Bibliográfica o Campo (Proyecto) 1

Evaluación de unidad 2

Examen 3

Total 10 ptos.

21. RESPONSABLE DE LA ELABORACIÓN DEL SYLLABUS

Elaborado por: ING. MARIUXI PAOLA ZEA ORDOÑEZ,

Profesora de la Asignatura

Mail: [email protected]

Teléfono: 2915426

Celulares: 098228455

088006455

Machala, Abril de 2012

12 | P á g i n a

Page 13: Portafolio Programacion I 2012

ACTIVIDADES DE APRENDIZAJE INTRA Y

EXTRA CLASE

13 | P á g i n a

Page 14: Portafolio Programacion I 2012

CAPITULO 1: INTRODUCCIÓN A .NET

14 | P á g i n a

Page 15: Portafolio Programacion I 2012

ACTIVIDAD N°: 1 FECHA: 02/04/2012 - 03/04/2012

TEMA:1. Establezca su objetivo para el módulo de Programación2. Compartir el objetivo con los compañeros del curso

UNIDAD N° 1.1: DIAGNÓSTICO, INTRODUCCIÓN Y ENCUADRE

OBJETIVO: Describir un objetivo personal para el módulo

PROBLEMA: Desconocimiento del enfoque del módulo

INDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES: Compromiso, Responsabilidad

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Objetivo Propuesto:

Esforzarme, Estudiar y Aprobar el módulo de Programación I.

15 | P á g i n a

Page 16: Portafolio Programacion I 2012

ACTIVIDAD N°: 2 FECHA: 04/04/2012 - 05/04/2012

TEMA:

1. Los alumnos en forma individual contestarán por escrito lo siguiente:

Usted es el ingeniero de sistemas contratado para resolver algunos problemas en los procesos administrativos de una Empresa cuyos datos se proporcionan a continuación:

Características de la Empresa Nombre: XYZ. Descripción: La empresa se dedica a la comercialización de productos varios, ha tenido problemas con la elaboración del rol de sueldo de los empleados, los informes sobre la cartera de clientes y el inventario de productos, debido a que la información la manejan de forma manual, posee 2 computadoras Intel Pentium, con bajas características. No están conectadas a red y las aplicaciones que son utilizadas es Word para elaborar oficios, memorándums, circulares; y, Excel para elaborar facturas, llevar el control de inventario y la nómina de los empleados. El personal con el que cuenta la empresa es: Secretaria de Gerencia, 2 vendedores, 1 Bodeguero, El Gerente General, Gerente de Ventas, Contadora y 1 mensajero.

De acuerdo a la investigación realizada y a los datos proporcionados de la Empresa ¿Qué propone hacer para solucionar este problema, y por qué? ¿Qué beneficios proporciona su propuesta planteada, Por qué? ¿Qué lenguaje recomendaría utilizar para automatizar los procesos de la Empresa? ¿Por qué?

UNIDAD N° 1.2: INTRODUCCIÓN A LA PROGRAMACIÓN

OBJETIVO: Comprender cuándo y por qué un problema debe ser automatizado

mediante un lenguaje de programación

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informáticoINDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentee) Identificar, formular y resolver problemas de ingeniería

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

16 | P á g i n a

Page 17: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Como ingeniero de sistemas propongo implementar un sistema automatizado que

gestiones esos datos de la empresa de manera automatizada y eficiente para q

no exista perdida de datos y contar con ellos en tiempos pertinentes.

Los beneficios que traerían para la empresa seria que primeramente tendrían

control sobre los procesos de la empresa, así como de los datos que estos

generen, los datos de usuarios y clientes estarían guardados y disponibles para

usarse en cualquier momento al igual que los datos de los productos que

disponen para la venta, y disminuiría los costos y tiempos de ejecución de las

actividades como roles de pagos, consultas de clientes e inventarios.

Recomendaría trabajar con un lenguaje de programación de bajo o de medio

nivel, en este caso C++, porque las computadoras con las que trabaja la empresa

presenta pocos requerimientos y trabajar con un leguaje de mayores

características ocasionaría el colapso del sistema, en cambio solo buscamos

funcionalidad sobre apariencia lo cual se puede hacer perfectamente con C++.

Solo si la empresa está dispuesta a hacer una inversión para comprar mejores

equipos de cómputo podríamos optar por desarrollar un sistema de información

sobre una plataforma de mayores características como lo es java o .net.

17 | P á g i n a

Page 18: Portafolio Programacion I 2012

ACTIVIDAD N°: 2 FECHA: 04/04/2012 - 05/04/2012

TEMA:

1. Los alumnos en forma individual contestarán por escrito lo siguiente:

Un nuevo virus apareció y dañó específicamente todos los lenguajes de programación utilizados (Ejemplo: Visual Basic, Visual FoxPro, C++, Java, C#, etc.), de tal manera que después de un tiempo no se podrá ejecutar ningún programa, usted ha sido designado por su compañía para desarrollar un nuevo lenguaje de programación. ¿Qué características tendría dicho lenguaje? ¿Por qué?

UNIDAD N° 1.2: INTRODUCCIÓN A LA PROGRAMACIÓN

OBJETIVO: Establecer los beneficios de utilizar programación orientada a objetos

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informático

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentee) Identificar, formular y resolver problemas de ingeniería

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

18 | P á g i n a

Page 19: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Primeramente vería las mejoras que proporcionaban cada una de las plataformas

donde se ejecutaban dichos lenguajes. Sería un lenguaje de programación por

capas en la cual se trabaje a bajo nivel pre compilando lenguaje a alto nivel para

que sea fácil de usar y entender, debería tener varias versiones de entorno de

trabajos que se pueda usar desde un equipo de bajas características hasta un

elaborado sistema de información con diseños avanzados mediante la utilización

de plugins o librerías externas en su entorno de desarrollo.

Deberá ser software libre para que su desarrollo avance rápidamente entre el

mundo de la programación y existan mayor número de herramientas disponibles

para su uso. Multiplataforma e independiente del kernel, pudiendo también

trabajar para una plataforma específica para equipos de baja características que

compilen con librerías locales, para aplicaciones personales de escritorio.

Deberá ser un lenguaje distribuido y adaptado a la red y a la web para su uso libre

en el mundo del internet. También contaría con opciones de seguridad que

prevengan posibles caídas de sistema y respaldo automático de información en

aplicaciones y niveles de seguridad contra posibles virus que afecten su

desarrollo.

19 | P á g i n a

Page 20: Portafolio Programacion I 2012

ACTIVIDAD N°: 3 FECHA: 04/04/2012 - 05/04/2012

TEMA:

En grupo de máximo 4 personas, comparta sus respuestas, discuta con sus compañeros y seleccione el lenguaje de programación más conveniente para la empresa, explique por escrito el porqué de sus decisiones. ¿Qué características deben proporcionar los lenguajes de programación a los sistemas automatizados? ¿Por qué? (Elabore una lista de al menos 5 características).

Los alumnos expondrán sus respuestas ante sus compañeros y debatirán sus acuerdos o desacuerdos con la selección presentada. Se revisará las características de los lenguajes de programación.

UNIDAD N° 1.2: INTRODUCCIÓN A LA PROGRAMACIÓN

OBJETIVO: Establecer los beneficios de utilizar programación orientada a objetos

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informático

INDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentee) Identificar, formular y resolver problemas de ingenieríaj) Conocer temas contemporáneos

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

20 | P á g i n a

Page 21: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

C

Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.

Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).

Un sistema de tipos que impide operaciones sin sentido. Usa un lenguaje de preprocesado, el preprocesador de C, para tareas

como definir macros e incluir múltiples archivos de código fuente. Acceso a memoria de bajo nivel mediante el uso de punteros. Interrupciones al procesador con uniones. Un conjunto reducido de palabras clave.

C++

Tiene un conjunto completo de instrucciones de control. Permite la agrupación de instrucciones. Incluye el concepto de puntero (variable que contiene la dirección de otra

variable). Los argumentos de las funciones se transfieren por su valor. E/S no forma parte del lenguaje, sino que se proporciona a través de una

biblioteca de funciones.

Java

Lenguaje  Simple Orientado a Objeto Distribuido Robusto Seguro

21 | P á g i n a

Page 22: Portafolio Programacion I 2012

ACTIVIDAD N°: 4 FECHA: 04/04/2012 - 05/04/2012

TEMA:

Concrete una cita con un ingeniero, analista o programador de sistema que labore en el área de desarrollo de software. Hable sobre uno de los proyectos de sistemas de información en los que esta persona esté trabajando. Y elabore un informe en donde describa las funciones que realiza y porqué utiliza determinada herramienta de programación:

UNIDAD N° 1.2: INTRODUCCIÓN A LA PROGRAMACIÓN

OBJETIVO:

Conocer y entender cuáles son las tareas y consideraciones que se deben tomar encuentra para desarrollar un buen Sistema, amigable, flexible, que cumpla con las necesidades de la empresa, que solucione los problemas existentes en los procesos administrativos.

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informático

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el apredizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

22 | P á g i n a

Page 23: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Datos del entrevistado:

Nombre: Ing. Byron Torres

DESARROLLO DE LA ENTREVISTA

¿Cuáles son las funciones que son soportadas por dicho proyecto (por ejemplo, proceso de transacciones, ayuda a la decisión, automatización de oficinas)?

Las funciones que tiene el sistema aCOSMOS son de Módulo de declaración de impuesto, Modulo de Inventario, Modulo de Producción, Modulo de Cartera. También maneja listas de biométricos e interfaces web para el manejo de palms.

En los pedidos de productos controla el stock de los mismos para de esta manera saber con cuantos productos se cuenta.

¿Qué lenguajes de programación utiliza o ha utilizado? ¿Por qué?

Lo lenguajes con los que más ha trabajado C#, C++, Visual Basic, Java.Net y PHP.

Java y .Net se los utiliza por las interfaces ya que se trabaja de menor manera con la base de datos e interfaz para web.

¿Qué tareas realizó para desarrollar el software?

• Conversar con los usuarios para obtener las necesidades de ellos, también con los jefes de tal manera poder determinar qué tipo de información ellos esperan obtener.

• Obtener la información respectiva para realizar un análisis y ver qué es lo implementar para realizar un sistema que contenga todos los requisitos adquiridos de los clientes.

• Elaborar un prototipo del sistema, es decir para de esta manera poder corregir los errores que pudiera tener el sistema.

¿Cómo me puedo asegurar que mi desarrollo se implementará sin problemas?

Teniendo una buena comunicación con el cliente para de esta manera poder recopilar información verídica, obtener los debidos requerimientos del cliente, es decir como desea que quede su sistema, para de esa manera realizar un sistema bien estructurado y completo.

23 | P á g i n a

Page 24: Portafolio Programacion I 2012

ACTIVIDAD N°: 5 FECHA: 04/04/2012 - 05/04/2012

TEMA:

Si usted quiere aprender a programar, existen muchos recursos, hay libros, tutoriales de bolsillo, tutoriales en el WEB. Visite algunos tutoriales de los lenguajes de programación arriba mencionados. Conteste lo siguiente en forma de reflexión:

Qué tipo de apoyo proporcionan. Qué tanta ayuda proporcionan estos sitios. Termino usted sabiendo más acerca de la programación que antes, ¿por

qué? Qué piensa acerca de estos tutoriales en línea, comparados con aprender

de un libro o en una clase. De qué manera estos tutoriales contribuyeron a su aprendizaje.

UNIDAD N° 1.2: INTRODUCCIÓN A LA PROGRAMACIÓN

OBJETIVO: Establecer la bibliografía e información a utilizar Identificar sitios de Internet para buscar información

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informáticoINDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

24 | P á g i n a

Page 25: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

• Qué tipo de apoyo proporcionan.

Los manuales, libros y tutoriales nos proporcionan una guía muy importante para conocer y saber más información acerca del lenguaje de programación, ya que estos nos ofrecen información muy variada acerca del uso del programa, así como su respectiva sintaxis y las diferentes funciones y métodos que tiene el lenguaje, es por ello que se debe encontrar un buen material que sea lo mejor explicito posible para que así la comprensión sea mucho más fácil.

• Qué tanta ayuda proporcionan estos sitios.

Los tutoriales nos brindan una ayuda muy valiosa ya que nos permiten auto-educarnos a través del contenido de los manuales, cada vez que tengamos una duda o dificultad en alguna función o sintaxis del programa, es por ello que se hace indispensable contar con un grupo de manuales que nos puedan servir de ayuda durante el transcurso del módulo para que así el proceso de aprendizaje sea más productivo y con mejor desempeño.

• Termino usted sabiendo más acerca de la programación que antes, ¿por qué?

No, ya que los manuales y tutoriales solo muestran el contenido general de un lenguaje de programación, y por lo tanto solo nos sirve para contar con una ayuda extra para cualquier inquietud que tengamos acerca de alguna sintaxis del programa o como funciona algún método o evento.

• Qué piensa acerca de estos tutoriales en línea, comparados con aprender de un libro o en una clase.

Yo pienso que el aprendizaje es mejor en clase porque los estudiantes pueden despejar sus inquietudes en ese mismo momento a través de su tutor, y mucho más aun, haciendo las practicas, en cambio los tutoriales no ofrecen una ayuda oportuna de alguna inquietud que se tenga de algún contenido el cual no entendemos su significado o no saber dónde ubicarlo.

• De qué manera estos tutoriales contribuyeron a su aprendizaje.

Los tutoriales nos ayudan mucho en lo que se refiere a reforzar lo aprendido en clase ya que nos proporciona una información extra que puede ayudarnos en cualquier inquietud que tengamos acerca de lo que estamos trabajando.

25 | P á g i n a

Page 26: Portafolio Programacion I 2012

ACTIVIDAD N°: 5 FECHA: 09/04/2012 - 10/04/2012

TEMA:

1. Los alumnos en grupos máximo de 4, trabajarán para responder las siguientes preguntas, Se tomarán unos 5 a 15 minutos para pensar individualmente:

Utilizando la lectura y la investigación realizada responda: ¿En qué generación de los lenguajes de programación ubica usted a C#? ¿Qué razones lo llevan a pensar eso? ¿Qué diferencia hay entre C# y los otros lenguajes de Programación? ¿Por qué? ¿Qué características tendrá un sistema automatizado con C#? Ponga ejemplos. ¿Cuándo considera usted que no puede utilizar C# para automatizar un sistema manual? ¿Explique por qué?

UNIDAD N° 1.3: .NET FRAMEWORK

OBJETIVO: Establecer los beneficios de utilizar programación orientada a objetos

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informático

INDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentec) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

26 | P á g i n a

Page 27: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

¿En qué generación de los lenguajes de programación ubica usted a C#? ¿Qué razones lo llevan a pensar eso?.

Yo considero a C# un lenguaje entre tercera y cuarta generación ya que este al ser de alto nivel nos proporciona las herramientas necesarias para que la aplicación cumpla nuestras expectativas mediante código que le introducimos para que funcione y a la vez utiliza sentencias de consulta donde solo solicitamos la respuesta que queremos del programa, ambas características corresponden a tercera y cuarta generación respectivamente.

¿Qué diferencia hay entre C# y los otros lenguajes de Programación? ¿Por qué?

C Sharp es un lenguaje muy potente surgido por influencia de lenguajes de programación como java, C y C++, de los cuales evoluciono en el desarrollo de todo tipo de aplicaciones y muy intuitivo superando a sus antecesores, trabaja en la plataforma .net y sus aplicaciones son muy vistosas pero muy pesadas para máquinas de pocos requerimientos, apareció en el 2001 y desde entonces a ganado terreno día a día sobre otros lenguajes de programación por su capacidad y sus características.

¿Qué características tendrá un sistema automatizado con C#? Ponga ejemplos.

Con C# podemos conseguir aplicaciones y sistemas e información muy potentes y seguras, de un vistoso diseño gracias a plugins que se pueden incorporar a su entorno de desarrollo, con disponibilidad de red y proyectados a la web, en fin un sinnúmero de oportunidades para trabajar, en un entorno controlado por eventos lo cual facilita su uso y lo hace muy maleable siendo orientado a la fácil manipulación del usuario.

¿Cuándo considera usted que no puede utilizar C# para automatizar un sistema manual? ¿Explique por qué?

Cuando en el equipo no se pueda instalar la plataforma .net necesaria para que funcione C#, también cuando los equipos de la empresa presenten bajos requerimientos ya que C# necesita muchos recursos de las computadoras para correr correctamente.

27 | P á g i n a

Page 28: Portafolio Programacion I 2012

ACTIVIDAD N°: 6 FECHA: 09/04/2012 - 10/04/2012

TEMA:

1. Como conclusión de la Entrevista realizada a los profesionales en el área de Sistemas, ¿qué consideraciones cree usted se deberán tomar en cuenta al momento de desarrollar aplicaciones (sistemas comerciales), de tal manera que no se encuentren problemas en el momento de la implementación? Elaborar una lista de al menos 5 tips o características.

2. Plenaria: Cada grupo compartirá sus opiniones y cómo llegaron a esas conclusiones con el resto de compañeros.

UNIDAD N° 1.3: .NET FRAMEWORK

OBJETIVO: Establecer los beneficios de utilizar programación orientada a objetos

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informático

INDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentec) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo estricciones realistas

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

28 | P á g i n a

Page 29: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Primeramente y lo más importante sería la confianza y comunicación con el

cliente, ya que hay que tener bien en claro cómo funcionan los procesos en la

empresa y que tipo de información es la que le sirve para que funcionen

correctamente y para eso se necesita una buena comunicación con el cliente y los

usuarios finales del sistema.

Se debe tener en cuenta los equipos con los que cuenta la empresa para escoger

un correcto lenguaje de programación según los requerimientos con la que esta

disponga.

Debemos considerar si la empresa está dispuesta a invertir en el desarrollo del

sistema de información y si este esté en red u orientado en la web según lo que

necesite el cliente.

Si en cada equipo se puede implementar correctamente las herramientas que

servirán para correr aplicaciones según el lenguaje de programación que

utilicemos.

29 | P á g i n a

Page 30: Portafolio Programacion I 2012

ACTIVIDAD N°: 7 FECHA: 09/04/2012 - 10/04/2012

TEMA:

1. Utilizando los buscadores en Internet, elabore un informe acerca de las fortalezas y limitaciones de C#. Busque ejemplos de sistemas (aplicaciones comerciales) que han sido automatizados con C# (mínimo 5). Establezca las características (en cuanto a apariencia física), funcionalidades que tienen dichos sistemas, requerimientos de hardware y software de cada ejemplo

UNIDAD N° 1.3: .NET FRAMEWORK

OBJETIVO: Establecer las características de la plataforma .NET Establecer las características que puede obtener un sistema desarrollado

con C#

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informático

INDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentec) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo estricciones realistas

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

30 | P á g i n a

Page 31: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Fortalezas

Declaraciones en el espacio de nombres: al empezar a programar algo, se puede

definir una o más clases dentro de un mismo espacio de nombres.

Tipos de datos: en C# existe un rango más amplio y definido de tipos de

datos que los que se encuentran en C, C++ o Java.

Atributos: cada miembro de una clase tiene un atributo de acceso del tipo

público, protegido, interno, interno protegido y privado.

Pase de parámetros: aquí se puede declarar a los métodos para que

acepten un número variable de parámetros.

Métodos virtuales y redefiniciones: antes de que un método pueda ser

redefinido en una clase base, debe declararse como virtual.

Propiedades: un objeto tiene intrínsecamente propiedades, y debido a que

las clases en C# pueden ser utilizadas como objetos, C# permite la

declaración de propiedades dentro de cualquier clase.

Inicializador: un inicializador es como una propiedad, con la diferencia de

que en lugar de un nombre de propiedad, un valor de índice entre

corchetes se utiliza en forma anónima para hacer referencia al miembro de

una clase.

Control de versiones: C# permite mantener múltiples versiones de clases

en forma binaria, colocándolas en diferentes espacios de nombres. Esto

permite que versiones nuevas y anteriores de software puedan ejecutarse

en forma simultánea.

31 | P á g i n a

Page 32: Portafolio Programacion I 2012

Limitaciones

Las desventajas que se derivan del uso de este lenguaje de

programación son que en primer lugar se tiene que conseguir una

versión reciente de Visual Studio .NET, por otra parte se tiene que

tener algunos requerimientos mínimos del sistema para poder trabajar

adecuadamente tales como contar con Windows NT 4 o superior, tener

alrededor de 4 gigas de espacio libre para la pura instalación, etc.

Además para quien no está familiarizado con ningún lenguaje de

programación, le costará más trabajo iniciarse en su uso, y si se quiere

consultar algún tutorial más explícito sobre la programación en C# se

tendría que contar además con una conexión a Internet.

Ejemplo:

LABVIEW: SISTEMA DE PRUEBAS CLÍNICAS PARA LA FARMACOLOGÍA Y

LA COSMETOLOGÍA

Este software puede semi-automatizar las mediciones de caracterización de la

piel durante los ensayos clínicos de productos farmacéuticos y cosméticos,

utilizando más de 15 instrumentos de medición generalmente presentes en este

tipo de laboratorio: corneómetro, sebómetro, pHmetro, termómetro, glossímetro,

mexámetro, colorímetro, tewámetro, reviscómetro, espectro colorímetro,

cromamómetro, cutómetro, torquémetro. Por lo tanto, hace que las mediciones se

hagan de forma más rápida a través de una sola herramienta de software.

Ejemplo de una serie de mediciones y análisis mediante el estudio de la

elasticidad de la piel, con el software de pruebas clínicas software para productos

cosméticos y farmacéuticos

Funcionamiento

Después de la creación y configuración de un estudio que especifica la lista de

sujetos, las condiciones (zonas, tiempos, productos) y los instrumentos, o

importando esos datos, el técnico efectúa las mediciones con el instrumento en

32 | P á g i n a

Page 33: Portafolio Programacion I 2012

mano. El software comunica con el aparato para colectar las mediciones,

analizarlas, grabarlas, exportarlas para usarlas en otro software como Excel, e

imprimir reportes. Una función de calibración y control permite de la detección

derivas y corregirlas. Acerca de la trazabilidad, todas acciones del usuario son

grabadas para identificar cualquier cambio o problema y para tener un histórico de

los estudios.

33 | P á g i n a

Page 34: Portafolio Programacion I 2012

ACTIVIDAD N°: 8 FECHA: 09/04/2012 - 10/04/2012

TEMA:1. Investigar sobre .NET Framework. Elaborar un ensayo acerca de lo que

entiende de este concepto. Demuestre: ¿De qué se trata? ¿Cómo funciona?

UNIDAD N° 1.3: .NET FRAMEWORK

OBJETIVO: Establecer las características de la plataforma .NET

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informáticoINDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

34 | P á g i n a

Page 35: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

.NET es un framework de Microsoft que hace un énfasis en la transparencia de redes, con independencia de plataforma de hardware y que permita un rápido desarrollo de aplicaciones. .NET Framework es un componente integral de Windows que admite la creación y la ejecución de la siguiente generación de aplicaciones y servicios Web XML. El diseño de .NET Framework está enfocado a cumplir los objetivos siguientes:

Proporcionar un entorno coherente de programación orientada a objetos.

Proporcionar un entorno de ejecución de código que reduzca lo máximo posible la implementación de software y los conflictos de versiones.

Ofrecer un entorno de ejecución de código que fomente la ejecución segura del mismo, incluso del creado por terceras personas desconocidas o que no son de plena confianza.

Proporcionar un entorno de ejecución de código que elimine los problemas de rendimiento de los entornos en los que se utilizan secuencias de comandos o intérpretes de comandos.

Basar toda la comunicación en estándares del sector para asegurar que el código de .NET Framework se puede integrar con otros tipos de código.

.NET Framework contiene dos componentes principales: Common Language Runtime y la biblioteca de clases de .NET Framework. Common Language Runtime es el fundamento de la tecnología. El motor en tiempo de ejecución se puede considerar como un agente que administra el código en tiempo de ejecución y proporciona servicios centrales, como la administración de memoria, la administración de subprocesos y la interacción remota, al tiempo que aplica una seguridad estricta a los tipos y otras formas de especificación del código que fomentan su seguridad y solidez. De hecho, el concepto de administración de código es un principio básico del motor en tiempo de ejecución. El código destinado al motor en tiempo de ejecución se denomina código administrado, a diferencia del resto de código, que se conoce como código no administrado.

La biblioteca de clases, el otro componente principal de .NET Framework, es una completa colección orientada a objetos de tipos reutilizables que se pueden emplear para desarrollar aplicaciones que abarcan desde las tradicionales herramientas de interfaz gráfica de usuario (GUI) o de línea de comandos hasta las aplicaciones basadas en las innovaciones más recientes proporcionadas por ASP.NET, como los formularios Web Forms y los servicios Web XML

35 | P á g i n a

Page 36: Portafolio Programacion I 2012

ACTIVIDAD N°: 9 FECHA: 09/04/2012 - 10/04/2012

TEMA:

Utilizando el internet, investigue las principales características de las Metodologías de desarrollo de software existentes y elabore un cuadro comparativo donde permita demostrar sus ventajas y desventajas. Indique ¿cuál metodología usará para el desarrollo del proyecto de fin de módulo y explique el Porqué de su selección?

UNIDAD N° 1.4: METODOLOGÍAS DE DESARROLLO

OBJETIVO: Comprender la forma en que el análisis del problema ayuda a establecer

los procesos y datos a automatizar

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informáticoINDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentee) Identificar, formular y resolver problemas de ingeniería

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

36 | P á g i n a

Page 37: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Rational Unified Process (RUP)

La metodología RUP, divide en 4 fases el desarrollo del software: 

Inicio, El Objetivo en esta etapa es determinar la visión del proyecto. Elaboración, En esta etapa el objetivo es determinar la arquitectura óptima. Construcción, En esta etapa el objetivo es llevar a obtener la capacidad

operacional inicial. Transmisión, El objetivo es llegar a obtener el reléase del proyecto.

Microsoft Solution Framework (MSF)

Esta es una metodología flexible e interrelacionada con una serie de conceptos, modelos y prácticas de uso, que controlan la planificación, el desarrollo y la gestión de proyectos tecnológicos.

MSF tiene las siguientes características:

Adaptable: es parecido a un compás, usado en cualquier parte como un mapa, del cual su uso es limitado a un específico lugar.

Escalable: puede organizar equipos tan pequeños entre 3 o 4 personas, así como también, proyectos que requieren 50 personas a más.

Flexible: es utilizada en el ambiente de desarrollo de cualquier cliente.

Tecnología Agnóstica: porque puede ser usada para desarrollar soluciones basadas sobre cualquier tecnología.

Extreme Programing (XP)

Pruebas Unitarias: se basa en las pruebas realizadas a los principales procesos, de tal manera que adelantándonos en algo hacia el futuro, podamos hacer pruebas de las fallas que pudieran ocurrir. Es como si nos adelantáramos a obtener los posibles errores.

Re fabricación: se basa en la reutilización de código, para lo cual se crean patrones o modelos estándares, siendo más flexible al cambio.

Programación en pares: una particularidad de esta metodología es que propone la programación en pares, la cual consiste en que dos desarrolladores participen en un proyecto en una misma estación de trabajo. Cada miembro lleva a cabo la acción que el otro no está haciendo en ese momento. Es como el chofer y el copiloto: mientras uno conduce, el otro consulta el mapa.

37 | P á g i n a

Page 38: Portafolio Programacion I 2012

Bueno yo escogería el modelo RUP ya que con este trabajamos en la materia de Análisis y creo que es más confiable, ya que lo hemos utilizado para realizar nuestro proyecto. A su vez este modelo asegura la producción del software de acuerdo a los requerimientos del cliente.

38 | P á g i n a

VENTAJAS DESVENTAJAS

Asegura la producción de software

Incorpora objetivos de calidad

Obtenemos código más simple y más fácil de entender

Menor taza de errores

Sea adopta a cualquier proyecto y tecnología

Genera mucho tiempo en el desarrollo del sistema

Existe un riesgo de falla.

Modelo costos

RUP X X X X

MSFX X X X

XP X X X X X X

Page 39: Portafolio Programacion I 2012

ACTIVIDAD N°: 10 FECHA: 09/04/2012 - 10/04/2012

TEMA:

Utilizando el internet, investigue las principales características de las Técnicas de programación existentes y elabore un cuadro comparativo donde permita demostrar sus ventajas y desventajas. Indique ¿cuál Técnicas de programación usará para el desarrollo del proyecto de fin de módulo y explique el Porqué de su selección?

UNIDAD N° 1.5: DISEÑO DE AMBIENTES WINDOWS

OBJETIVO: Comprender la forma en que el análisis del problema ayuda a establecer

los procesos y datos a automatizar

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informáticoINDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentek) Usar técnicas, habilidades y herramientas para la práctica de ingeniería.

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

39 | P á g i n a

Page 40: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Programación EstructuradaUna característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa.

Programación ModularLa programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable

Programación Orientada a ObjetosLa programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.

Bueno yo escogería la técnica de programación Orientada a objetos porque esta es más sencillas y fácil de entender ya que es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora.

40 | P á g i n a

Page 41: Portafolio Programacion I 2012

VENTAJAS DESVENTAJAS

Programas fáciles de entender

Permite crear sistemas más complejos

Facilitan la escritura y depuración de un programa

Reducción de costos de mantenimiento

Reducción del esfuerzo en pruebas

Poco eficiente

Mayor Cantidad de Código

Mal rendimiento

Programación Estructurada

x x x x x

Programación Modular

x x x x

Programación Orientada a Objetos

x x x x

41 | P á g i n a

Page 42: Portafolio Programacion I 2012

ACTIVIDAD N°: 11 FECHA: 11/04/2012 - 12/04/2012

TEMA:

1. Tomando en cuenta las investigaciones y los trabajos realizados anteriormente:

Imagine que usted es un consultor independiente. Escriba una carta que ofrezca sus servicios como consultor para resolver los problemas relacionados a los procesos que se llevan en una empresa. El usuario, que es bastante escéptico con las personas dedicadas a la informática, no está al tanto de las modas informáticas. Asegúrese de que su propuesta explique paso a paso como construiría un sistema que diera respuesta a las necesidades de este usuario.

UNIDAD N° 1.4, 1.5:1.4 METODOLOGÍAS DE DESARROLLO1.5 DISEÑO DE AMBIENTES WINDOWS

OBJETIVO: Explicar las funciones del nuevo sistema Establecer los beneficios de utilizar sistemas informáticos

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informáticoINDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentee) Identificar, formular y resolver problemas de ingeniería

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

42 | P á g i n a

Page 43: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Machala, 14 de Junio del 2012

Sr. Jaime SantanderPropietario de la Empresa Mercantil Suministros S.A.

Presente.

De mis consideraciones.

Yo, Luis David Zamora Lojan, por la presente le ofrezco mis servicios profesionales, como ingeniero de sistemas en oficio, para optimizar los procesos que se llevan a cabo en su empresa, pues he notado que el tiempo de repuesta de sus empleados con respecto a la solicitud de servicios del cliente y el acceso a la información de la empresa resulta muy lento lo que posibilita la perdidas de recursos y tiempo, ocasionando pérdidas económicas para su empresa.

La solución que le propongo es la implementación de un sistema de información que automatice esos procesos y reduzca el tiempo de acceso a la información, con lo cual asegura que los clientes estarán contentos con ser atendidos más rápido y de manera más eficiente, y los usuarios del sistema tendrán disponibles los datos que necesiten en el momento que lo necesiten para trabajar mejor. Al implementar el sistema asegura una ganancia sustancial con respecto la ejecución de los procesos de su empresa y seguramente generara un ahorro de recursos a corto plazo.

Espero tome en consideración mi propuesta, me despido indicándole que estoy a sus servicios.

Atentamente

Luis David Zamora LojánConsultor Independiente.

43 | P á g i n a

Page 44: Portafolio Programacion I 2012

ACTIVIDAD N°: 12 FECHA: 11/04/2012 - 12/04/2012

TEMA:

1. Imagine que tiene que trabajar con un usuario que ha dado muestras de impaciencia en otros proyectos, alentando los <<atajos>> en el ciclo de vida del desarrollo del sistema y después culpando al analista de sistemas de no haber conseguido cumplir las expectativas. Elabore una lista de los problemas y sus causas, que se presentan al omitir alguna de las fases del ciclo de vida y explíquelas al usuario de tal manera que le quede claro los riesgos a los que se expone el sistema.

2. Plenaria: Los alumnos compartirán sus respuestas, de esta tarea con el resto de compañeros.

UNIDAD N° 1.4, 1.5:1.4 METODOLOGÍAS DE DESARROLLO1.5 DISEÑO DE AMBIENTES WINDOWS

OBJETIVO: Explicar las funciones del nuevo sistema Establecer los beneficios de utilizar sistemas informáticos

PROBLEMA: Desconocimiento de la terminología para desarrollar sistema informático

INDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamentec) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

44 | P á g i n a

Page 45: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Requerimientos:

No se tendrá claro que es lo que desea y lo que necesita el cliente. No se considerara el equipo de cómputo disponible. El cliente no estará satisfecho con el resultado.

Análisis:

No se profundizaran los problemas relevantes de la empresa. No se sabrá hacia donde estará orientada la aplicación del sistema. Pérdida de tiempo.

Diseño:

No se tendrá clara la estrategia a utilizar. No se sabrá cómo solucionar los problemas encontrados en el análisis. Mal destino de recursos.

Implementación:

El software contará con muchos errores. El software no cumplirá las expectativas del cliente. No estará definido el método de programación ni hacia donde estará

destinado.

Pruebas:

El producto final tendrá muchas fallas. Los usuarios pueden ocasionar errores graves al sistema y corromper la

información. No habrá medidas para solucionar posibles errores en la programación.

Documentación:

La programación puede no ser clara para futuras actualizaciones y comprensión de código.

No habrá referencias sobre el entorno de desarrollo del sistema o sobre quien lo desarrollo.

No se contará con un manual que sirva de soporte a los usuarios.

Mantenimiento:

No permitirá la actualización del software. Reducción del periodo de vida útil del sistema. Fallos en los equipos y el producto.

45 | P á g i n a

Page 46: Portafolio Programacion I 2012

CAPITULO 2: VISUAL STUDIO 2005 Y C#

46 | P á g i n a

Page 47: Portafolio Programacion I 2012

ACTIVIDAD N°: 13 FECHA: 11/04/2012 - 12/04/2012

TEMA:1. Investigar: Cuales son los DBMS que trabajan con C#, características,

ventajas, desventajas. Seleccionar el DBMS idóneo en el que desarrollaría la Base de Datos para un Sistema

UNIDAD N° 2.1: CONEXIÓN A BASE DE DATOS

OBJETIVO: Evaluar y seleccionar el DBMS adecuado para el proyecto final del modulo

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistase) Identificar, formular y resolver problemas de ingeniería.g) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

47 | P á g i n a

Page 48: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

ORACLE

Ventajas

Oracle es el motor de base de datos relacional más usado a nivel

mundial.

Puede ejecutarse en todas las plataformas, desde una Pc hasta un

supercomputador.

Oracle soporta todas las funciones que se esperan de un servidor "serio":

un lenguaje de diseño de bases de datos muy completo (PL/SQL) que

permite implementar diseños "activos", con triggers y procedimientos

almacenados, con una integridad referencial declarativa bastante potente.

Permite el uso de particiones para la mejora de la eficiencia, de

replicación e incluso ciertas versiones admiten la administración de bases

de datos distribuidas.

El software del servidor puede ejecutarse en multitud de sistemas

operativos.

Existe incluso una versión personal para Windows 9x, lo cual es un punto

a favor para los desarrolladores que se llevan trabajo a casa.

Oracle es la base de datos con más orientación hacía INTERNET.

Un aceptable soporte

Desventajas

Una de las versiones más recientes de Oracle es la 8 punto algo (Aunque

ya está la 9i). Y es que desde el lanzamiento original de la 8 se

sucedieron varias versiones con correcciones, hasta alcanzar la

estabilidad en la 8.0.3. El motivo de tantos fallos fue, al parecer, la

remodelación del sistema de almacenamiento por causa de la

introducción de extensiones orientadas a objetos.

El mayor inconveniente de Oracle es quizás su precio. Incluso las

licencias de Personal Oracle son excesivamente caras, en mi opinión.

48 | P á g i n a

Page 49: Portafolio Programacion I 2012

Otro problema es la necesidad de ajustes. Un error frecuente consiste en

pensar que basta instalar el Oracle en un servidor y enchufar

directamente las aplicaciones clientes. Un Oracle mal configurado puede

ser desesperantemente lento.

También es elevado el coste de la formación, y sólo últimamente han

comenzado a aparecer buenos libros sobre asuntos técnicos distintos de

la simple instalación y administración

POSTGRESQL

Ventajas

Instalación ilimitada:

Ahorros considerables de costos de operación:.

Estabilidad y confiabilidad:

Extensible:

Multiplataforma:

Diseñado para ambientes de alto volumen:

Herramientas gráficas de diseño y administración de bases de datos.

Soporta los tipos de datos, cláusulas, funciones y comandos de tipo estándar

SQL92/SQL99 y extendidos propios de PostgreSQL.

Puede operar sobre distintas plataformas, incluyendo Linux, Windows, Unix,

Solaris y MacOS X.

Buen sistema de seguridad mediante la gestión de usuarios, grupos de

usuarios y contraseñas.

Gran capacidad de almacenamiento.

Buena escalabilidad ya que es capaz de ajustarse al número de CPU y a la

cantidad de memoria disponible de forma óptima, soportando una mayor

cantidad de peticiones simultáneas a la base de datos de forma correcta.

Desventajas:

Soporte en línea: Hay foros oficiales, pero no hay una ayuda obligatoria.

Consume más recursos que MySQL.

49 | P á g i n a

Page 50: Portafolio Programacion I 2012

La sintaxis de algunos de sus comandos o sentencias no es nada intuitiva

Es fácil de vulnerar sin protección adecuada.

InnoDB genera mucho footprint en memoria al indizar.

El toolset empresarial tiene un costo adicional por suscripción anual.

Realizar revisiones llegar a ser una labor manual y tediosa para el DBA.

Reducida cantidad de tipos de datos

ACCESS

Por medio de Microsoft Access, puede administrar toda la información desde un

único archivo de base de datos.

Tablas para almacenar los datos.

Consultas para buscar y recuperar únicamente los datos que necesita.

Formularios para ver, agregar y actualizar los datos de las tablas.

Informes para analizar o imprimir los datos con un diseño específico.

Almacenar los datos una vez en una tabla y verlos desde varios lugares.

Ventajas:

Es la base de datos más amigable y versátil del mercado.

Es portable.

Crear tablas rápidamente sin preocuparse de la complejidad de las bases

de datos.

Actualizar y recopilar información directamente del origen.

Obtener acceso a información procedente de orígenes diversos.

Desventajas:

Entre sus mayores inconvenientes figuran que no es multiplataforma, pues

sólo está disponible para sistemas operativos de Microsoft

Su uso es inadecuado para grandes proyectos de software que requieren

tiempos de respuesta críticos

50 | P á g i n a

Page 51: Portafolio Programacion I 2012

MySQL

Ventajas:

MySQL software es Open Source

Velocidad al realizar las operaciones, lo que le hace uno de los gestores con

mejor rendimiento.

Bajo costo en requerimientos para la elaboración de bases de datos, ya que

debido a su bajo consumo puede ser ejecutado en una máquina con

escasos recursos sin ningún problema.

Facilidad de configuración e instalación.

Soporta gran variedad de Sistemas Operativos

Baja probabilidad de corromper datos, incluso si los errores no se producen

en el propio gestor, sino en el sistema en el que está.

Su conectividad, velocidad, y seguridad hacen de MySQL Server altamente

apropiado para acceder bases de datos en Internet

El software MySQL usa la licencia GPL

Desventajas:

Un gran porcentaje de las utilidades de MySQL no están documentadas.

No es intuitivo, como otros programas (ACCESS)

No permite el modo de autentificación local (seguridad integrada de

Windows), sólo el modo estándar

La base de datos que utilizare para desarrollar mi base de datos es Microsoft

Access.

51 | P á g i n a

Page 52: Portafolio Programacion I 2012

ACTIVIDAD N°: 14 FECHA: 11/04/2012 - 12/04/2012

TEMA:

Resolver Mini caso Práctico “La Dirección General de Hacienda” (Lo que sería para nosotros el SRI) obteniendo el diagrama de procesos y diagrama E/R respectivo. Tomado del Libro Análisis y Diseño de Sistemas de Información. McGraw Hill. Whitten, Bentley, Barlow. 3era. Edición. Página: 363 - 364. Contestar:

¿Qué características debe considerar al momento de identificar los procesos?

¿Por qué? ¿Qué características tienen que tener los datos para ser considerados en

la solución del problema? ¿Por qué? ¿Cómo puede saber cuáles son los datos que se necesitan en un

determinado proceso?

UNIDAD N° 2.2: ACCESO A BASE DE DATOS

OBJETIVO: Modelar y diseñar esquemas de base de datos

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistase) Identificar, formular y resolver problemas de ingeniería.g) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

52 | P á g i n a

Page 53: Portafolio Programacion I 2012

MINICASO PRÁCTICO

LA DIRECCIÓN GENERAL DE HACIENDA (SRI)

El siguiente caso describe cómo procesa una clásica administración regional de Hacienda las declaraciones de impuestos. Las adaptaciones realizadas pretenden hacer más sencillo el ejercicio que cierra el minicaso.

Escena: Wayne Richards, un analista de sistemas con gran experiencia, está manteniendo una entrevista con Paul Adams, supervisor regional de la Dirección General de Hacienda. Wayne ha recibido el encargo de simplificar el modo en que la Dirección General de Hacienda procesa las declaraciones de impuestos con el fin de acelerar tanto las devoluciones de los contribuyentes como el cobro de las declaraciones positivas. Para conseguirlo, Wayne intenta primero aprender los métodos actuales del proceso. Apenas conoce los procedimientos utilizados, ya que su formación se limita al área de sistemas de información en el campo de la fabricación. Unámonos a Wayne y Paul durante su entrevista.

Wayne: A decir verdad, no me siento muy cómodo con estos temas. Si tuvieras la amabilidad de explicarme cómo se procesan las declaraciones de la renta, me sentiría mucho más tranquilo.

Paul: Primero, las declaraciones de la renta se llevan en furgones

postales al centro regional. Se clasifican entonces los sobres por tipo de declaración; por ejemplo, en modelos simplificados u ordinarios o en declaraciones positivas o negativas. Una vez hecha esta primera clasificación, los sobres se envían a Recepción y control, donde se separan en 27 tipos en virtud de su pertenencia a tres posibles categorías generales: modelos simplificados con derecho a devolución, modelos ordinarios con derecho a devolución y declaraciones positivas.

Wayne: ¿Por qué se clasifican dos veces?

Paul: Buena pregunta. Principalmente por el gran número de declaraciones. No es raro que recibamos más de 200.000 al día. La primera clasificación tiene por objetivo dividir el total en varios grupos para hacer el trabajo más manejable.

Wayne: 27 tipos parecen muchísimos. ¿Por qué tantos? Siempre he pensado que las declaraciones sólo podían ser positivas o negativas.

Paul: No es tan sencillo. Hay declaraciones para las que se piden papeles complementarios. Otras son pagos trimestrales. En total, puede haber unos 500 impresos oficiales para rellenar las declaraciones de la renta.

53 | P á g i n a

Page 54: Portafolio Programacion I 2012

Wayne: Tal vez sería más fácil si empezáramos por el más sencillo. ¿Cuál es?

Paul: Para procesar los modelos simplificados con derecho a devolución, los operadores meten los impresos en una máquina que “escanea” las declaraciones y guarda los datos para su proceso posterior. Entonces, los datos son leídos por el ordenador principal, que determina el tipo impositivo correcto, decide si ha de enviarse un reembolso, actualiza los archivos de los contribuyentes e imprime cartas, avisos, declaraciones paralelas, etc.

Wayne: ¿imprimimos nosotros los cheches de reembolso?

Paul: No, la información sobre reembolsos se envía al Centro informático Nacional, que posteriormente solicita al Departamento de Hacienda que emita los cheques. Las cartas, los avisos y las restantes comunicaciones se mandan a las administraciones locales de Hacienda de todo el país, para que remitan las informaciones adecuadas a los contribuyentes.

Wayne: Parece bastante sencillo, ¿y qué puedes decirme de los modelos ordinarios con derecho a devolución?

Paul: El proceso de los modelos ordinarios con derecho a devolución es bastante parecido, aunque no igual, al de los modelos simplificados.

Wayne: ¿Y por qué los procesos son diferentes?

Paul: En parte porque los modelos ordinarios incluyen a menudo tablas múltiples de información, como son las deducciones por categorías. Primero, estas declaraciones se clasifican en bloques de lotes que se procesan como unidades separadas. Los lotes se numeran para asegurar que las declaraciones no se pierdan o se retrasen demasiado en su proceso y, a continuación, se envían a los inspectores. Éstos los comprueban, corrigen los posibles errores y codifican las declaraciones para su proceso.

Wayne: ¿Y qué pasa con las declaraciones que están incompletas o que son ilegibles?

Paul: Los inspectores devuelven a los contribuyentes cualquier impreso con datos incompletos o ilegibles. Además, los administrativos ponen un sello con un número de documento a cada declaración, con el fin de poder hacer un seguimiento de todas ellas cuando vuelvan a entrar en el sistema. A partir de este momento, el proceso es similar al de los modelos simplificados. Las declaraciones son introducidas en el sistema informático, se almacenan los datos para su tratamiento y son leídos por el ordenador principal. Éste determina la tasa impositiva correcta, decide si ha de enviarse o no un reembolso, actualiza los archivos de los contribuyentes, selecciona algunas declaraciones para su inspección e imprime cartas, avisos, declaraciones

54 | P á g i n a

Page 55: Portafolio Programacion I 2012

paralelas, etc. La información de las declaraciones se envía al Centro Informático Nacional, que la remite a su vez al Departamento de Hacienda para la emisión de los cheques de devolución. Los avisos y las informaciones sobre posibles inspecciones se envían a las administraciones locales de Hacienda de todo el país, desde las cuales se mandan a su vez a los contribuyentes las informaciones apropiadas.

Wayne: ¿Cómo se gestionan los pagos?

Paul: Para declaraciones positivas, los inspectores las examinan y corrigen posibles errores, las codifican para su tratamiento y envían a los contribuyentes todas aquellas que contengan datos incompletos o ilegibles. Después, las declaraciones se introducen en el ordenador. Ésta comprueba los cálculos y los importes declarados, asigna números para la localización de los documentos y guarda los datos. Luego se repiten los pasos utilizados operadores diferentes.

Wayne: ¿Por qué se usan dos grupos diferentes de operadores para repetir lo mismo?

Paul: Se contrastan los datos de los segundos operadores con los de los primeros para mayor seguridad. Se envían entonces a los inspectores los informes con errores. Los datos correctos se almacenan para su ulterior tratamiento, y se guardan los cheques de los

depósitos en el Banco Nacional.

Wayne: ¿Qué hacen los inspectores con los informes de errores?

Paul: Los verifican, corrigen lo que pueden y se ponen en contacto con los contribuyentes para recoger cualquier información ausente. A partir de este punto, las declaraciones siguen un tratamiento idéntico al descrito para los modelos ordinarios con derecho a devolución.

55 | P á g i n a

Page 56: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Diagrama Entidad Relación de la Dirección General de Hacienda.

¿Qué características debe considerar al momento de identificar los procesos?

Que debemos realizar un análisis observando los procesos que se puedan automatizar.

Tener conocimiento sobre los impuestos y sus clasificaciones y validación de las haciendas y los procesos que se realizan para tener una idea clara de lo que vamos hacer en el sistema.

Intervenir directamente en los procesos para ver cuáles son los que van a permitir al usuario mejorar del sistema manual al sistema automatizado.

Debemos tomar en cuenta que vamos a manejar en el sistema grandes sumas de dinero de los hacendados así que los procesos de clasificación y cálculos no deben tener errores.

¿Por qué?

Porque debemos realizar un análisis de lo que vamos a realizar y principalmente tener conocimiento en cuanto al tema para que el sistema pueda lograr los objetivos que se plantean en el mismo y pueda ser la solución esperada.

¿Qué características tienen que tener los datos para ser considerados en la solución del problema?

•Deben ser flexibles y adaptables a cualquier otro cambio de sistema o software, se debe realizar un respaldo de datos.

•Los datos deben estar enlazados en archivos únicos y específicos que no permitan que se dupliquen para tener 2 resultados diferentes del mismo proceso

56 | P á g i n a

Tiene

Categorías

Tipos

Tiene

Pago

Declaración Paralela

Genera

AnalizanInspectores

DeclaracionesRembolso

Page 57: Portafolio Programacion I 2012

•Deben permitir al usuario que los resultados de estos sean eficaces y eficientes, y que se los permita gestionar dentro del sistema como ingresar, eliminar, consultas, modificar, etc.

•Deben tener validación y ser verificados en cuanto a lo que se registra en la base de datos.

¿Por qué?

Porque los datos que se utilizan en el sistema principalmente en la base de datos tienen que poder presentar los resultados correctos en cuanto se maneja nombres y dinero de las personas.

¿Cómo puede saber cuáles son los datos que se necesitan en un determinado proceso?

Debemos identificar los resultados que requiere el usuario en un determinado proceso para saber qué datos se van a manejar en el mismo, hay que tomar en cuenta la información recopilada y posteriormente verificar los errores para tener un buen proceso

Para procesar los modelos simplificados con derecho a devolución, los operadores meten los impresos en una máquina que “escanea” las declaraciones y guarda los datos para su proceso posterior. Entonces, los datos son leídos por el ordenador principal, que determina el tipo impositivo correcto, decide si ha de enviarse un reembolso, actualiza los archivos de los contribuyentes e imprime cartas, avisos, declaraciones paralelas, etc.

Los modelos ordinarios con derecho a devolución incluyen a menudo tablas múltiples de información, como son las deducciones por categorías. Primero, estas declaraciones se clasifican en bloques de lotes que se procesan como unidades separadas. Los lotes se numeran para asegurar que las declaraciones no se pierdan o se retrasen demasiado en su proceso y, a continuación, se envían a los inspectores. Éstos los comprueban, corrigen los posibles errores y codifican las declaraciones para su proceso.

57 | P á g i n a

Page 58: Portafolio Programacion I 2012

ACTIVIDAD N°: 15 FECHA: 16/04/2012 - 17/04/2012

TEMA:

Investigar e Implementar el diagrama E/R (Tablas, llaves primarias, relaciones) del Minicaso práctico “La Dirección General de Hacienda”, en un DBMS (Access / SQL Server). Recuerde utilizar nombres nemotécnicos y estandarizados.

Responder:

¿Qué problemas se presentaron al momento de elaborar el diagrama E/R e implementarlo?

¿Qué se me hizo más fácil resolver en este trabajo? ¿Qué problemas tuve para resolver el caso? ¿Qué debo mejorar?

UNIDAD N° 2.2: ACCESO A BASE DE DATOS

OBJETIVO: Modelar y diseñar esquemas de base de datos Organizar los datos y procesos de un sistema

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistase) Identificar, formular y resolver problemas de ingeniería.g) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

58 | P á g i n a

Page 59: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INSPECTOR CATEGORÍA TIPO*Ced_ins *Cod_cat *Cod_tipNom_ins Nom_cat Nom_tipApe_ins Ced_ins Cod_catDirec_insTel_ins

PAGO REMBOLSO DECLARACION*Nro_pag *Nro_rem *Nro_decFec_pag Fec_rem Fec_decValor_pag Valor_rem Per_decNro_dec Nro_dec Ingresos_dec

Egresos_decValor_dec

DECLARACIÓN PARALELA

Cod_tip

*Nro_decparFec_decparPer_decparValor_decparNro_dec

Tablas y llaves primarias creadas:

59 | P á g i n a

Page 60: Portafolio Programacion I 2012

Relaciones Creadas:

¿Qué problemas se presentaron al momento de elaborar el diagrama E/R e

implementarlo?

Los problemas que se presentaron para elaboran el diagrama fue la falta de datos

e información del minicaso y también debido a la complejidad de la explicación del

proceso que pasa a cada declaración ya que está un poco confusa y no se

comprende bien.

60 | P á g i n a

Page 61: Portafolio Programacion I 2012

¿Qué se me hizo más fácil resolver en este trabajo?

La elaboración de el diagrama de entidad – relación.

¿Qué problemas tuve para resolver el caso? ¿Qué debo mejorar?

El problema que tuve para resolver fue por la falta de información no se puede

realizar bien el diagrama.

Debo mejorar un poco la compresión de la lectura ya que se encuentran muy

complejos y es difícil entender la lógica del minicaso.

61 | P á g i n a

Page 62: Portafolio Programacion I 2012

ACTIVIDAD N°: 16 FECHA: 16/04/2012 - 17/04/2012

TEMA:

1. Investigar los elementos de C# que le permitirán implementar el diseño de la Interface de usuarios dentro de los Diseñadores de Formularios. Cómo funcionan y para qué sirven, cuándo y cómo deben ser utilizados. ¿Qué objetos GUI existen en C#?

UNIDAD N° 1.4, 3.6:1.4. DISEÑO DE AMBIENTES WINDOWS3.6. PRINCIPALES CONTROLES

OBJETIVO: Establecer las características físicas que tendrá el sistema informático.

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

62 | P á g i n a

Page 63: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

En la figura que observamos aquí, podemos

visualizar los elementos con los cuales cuenta C#

para realizar el diseño de la interface.

Como son botones, cuadros de texto, Label,

radioButton, checkedListbox, etc

Hay tres pasos básicos para crear interfaces de

usuario para las aplicaciones de formularios

Windows Forms:

Agregar los controles a la superficie de diseño.

Establecer las propiedades iniciales de los

controles.

Escribir los controladores para los eventos especificados.

Sirve para agregar controles a un formulario, organizarlos y escribir el código de

sus eventos. El uso del diseñador permite:

63 | P á g i n a

Page 64: Portafolio Programacion I 2012

Agregar componentes, controles de datos o controles basados en Windows a

un formulario.

Hacer doble clic en el formulario del diseñador y escribir código en el

evento Load de ese formulario, o hacer doble clic en un control del formulario y

escribir código para el evento predeterminado del control.

Modificar la propiedad Text de un control seleccionando el control y

escribiendo un nombre.

Ajustar la ubicación del control seleccionado moviéndolo con el mouse (ratón)

o con las teclas de dirección. De forma similar, ajustar la ubicación con más

precisión utilizando las teclas de dirección y CTRL. Por último, ajustar el

tamaño del control utilizando las teclas de dirección y MAYÚS. Para obtener

información sobre cómo ajustar de una vez la posición de varios controles,

vea Cómo: Alinear varios controles en formularios Windows Forms.

Seleccionar varios controles utilizando MAYÚS+clic o CTRL+clic. Si se utiliza

MAYÚS+clic, el primer control seleccionado es el control dominante al alinear

o manipular el tamaño. Si se utiliza CTRL+clic, el último control seleccionado

es el dominante; por lo tanto, el control dominante cambia cada vez que se

agrega un nuevo control. También se pueden seleccionar varios controles

haciendo clic en el formulario y arrastrando un rectángulo de selección que

rodee los controles que se desean seleccionar.

64 | P á g i n a

Page 65: Portafolio Programacion I 2012

ACTIVIDAD N°: 17 FECHA: 18/04/2012 - 19/04/2012

TEMA:

Utilizando el Minicaso: “La Dirección General de Hacienda”. Tomado del Libro Análisis y Diseño de Sistemas de Información. McGraw Hill. Whitten, Bentley, Barlow. 3era. Edición. Página: 363 - 364. Desarrolle: Analice y seleccione al menos cinco características de un buen diseño de entrada / salida y al menos cinco características de un buen diseño de Interface para el usuario (que sea amigable).

UNIDAD N° 1.4: 1.4. DISEÑO DE AMBIENTES WINDOWS

OBJETIVO: Establecer las características físicas que tendrá el sistema informático.

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistase) Identificar, formular y resolver problemas de ingeniería.g) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

65 | P á g i n a

Page 66: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

CARACTERÍSTICAS DE UN BUEN DISEÑO DE:

ENTRADA

Ingreso ordenado de datos

Deben ser eficaces, precisos, sencillos, atractivos & fáciles de usar.

Ingreso según clasificaciones.

Mensaje de ayuda al usuario al momento de ingresar los datos.

Validación de datos.

SALIDA

Determinar qué información presentar

Decidir si la información será presentada en forma visual, verbal o impresa y

seleccionar el medio de salida.

Disponer de la presentación de la información en un formato aceptable.

Decidir cómo distribuir la salida entre los posibles destinatarios.

Mensajes de advertencia al momento de enviar archivos o apagar el sistema.

CARACTERÍSTICAS DE UN BUEN DISEÑO DE INTERFACE PARA EL

USUARIO

Que no tenga sobrecargar de colores es decir no mezclar tantos colores ni

poner imágenes muy fuertes de fondo.

Que contenga un interfaz fácil de entender.

No sobrecargar la interfaz con tantos iconos, haciendo que al usuario le resulte

difícil encontrar lo que busca.

Utilizar iconos conocidos, para así el usuario reconozca con facilidad las

opciones.

Una interfaz no necesita ser bonita para poder funcionar, sin embargo hacer

un diseño agradable contribuirá a que la experiencia de usuario mejore.

66 | P á g i n a

Page 67: Portafolio Programacion I 2012

¿Qué tipo de Interface de usuario diseñaría usted para los empleados de La

Dirección General de Hacienda?

El interfaz que se diseñaría para los empleados de la dirección general de

hacienda serian:

Con unos colores claros en tonos bajos difuminados.

Un diseño amigable con opciones que necesite el usuario como son para

clasificar los datos recibidos, la forma de pagos que se realizan, si

necesitan o no ser corregidos, etc. de manera que sea de fácil localización,

con iconos demostrativos y una buena visualización de la misma.

También que tenga un interfaz la cual llame la atención a los empleados

para que de esta manera realicen su trabajo con más eficiencia.

Que tenga un ingreso de usuario o empleado para que cada quien manejo

su propia información.

67 | P á g i n a

Page 68: Portafolio Programacion I 2012

ACTIVIDAD N°: 18 FECHA: 18/04/2012 - 19/04/2012

TEMA:

Basados en las características que enunció, diseñe las Interfaces de entrada / salida y de usuario, explique por qué encuentra que es la más adecuada con base en lo que sabe acerca de los empleados de la administración de la dirección general de Hacienda.

UNIDAD N° 1.4: 1.4. DISEÑO DE AMBIENTES WINDOWS

OBJETIVO: Establecer las características físicas que tendrá el sistema informático.

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistase) Identificar, formular y resolver problemas de ingeniería.g) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

68 | P á g i n a

Page 69: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Es la más adecuada porque para los empleados de la hacienda no saben muchos

de sistemas informáticos la cual al momento de diseñar tenemos que tener en

cuenta este punto para de esta manera realizar la interfaz lo más fácil y

comprensible posible, realizando opciones con iconos conocidos para que así

pueda realizar su trabajo con mayor rapidez la búsqueda y utilización del mismo.

69 | P á g i n a

Se colocarán los datos de acuerdo a la tabla (gestión) a procesar

Page 70: Portafolio Programacion I 2012

ACTIVIDAD N°: 19 FECHA: 18/04/2012 - 19/04/2012

TEMA:

1. Implementar la interface (pantallas / formularios) del Minicaso práctico “La Dirección General de Hacienda”, en C#. Responder:

¿Qué problemas se presentaron al momento de elaborar la interface en C#?

¿Qué se me hizo más fácil resolver en este trabajo? ¿Qué problemas tuve para resolver el caso? ¿Qué debo mejorar?

UNIDAD N° 3.6: PRINCIPALES CONTROLES

OBJETIVO: Establecer las características físicas que tendrá el sistema informático. Organizar los datos y procesos de un sistema

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentek) Usar técnicas, habilidades y herramientas para la práctica de Ingeniería.

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

70 | P á g i n a

Page 71: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INTERFACE IMPLEMENTADA DE LA DIRECCIÓN GENERAL DE HACIENDA

71 | P á g i n a

Page 72: Portafolio Programacion I 2012

72 | P á g i n a

Page 73: Portafolio Programacion I 2012

73 | P á g i n a

Page 74: Portafolio Programacion I 2012

¿Qué problemas se presentaron al momento de elaborar la interface en C#?

Hasta ahora ningún problema con el diseño visual de la interfaz, pero con la parte

de realizar el contenido de los formulario se me es un poco confuso la parte de las

2 clasificaciones que se realizan ya que al momento de diseñarlo no sé de qué

manera ponerlos.

¿Qué se me hizo más fácil resolver en este trabajo?

El diseño de la interfaz de las pantallas es decir colores, iconos, el diseño de los

formularios.

¿Qué problemas tuve para resolver el caso? ¿Qué debo mejorar?

El problema que tuve es con la parte de las distintas clasificaciones que se

realizan antes de detectar los errores ya que es un poco confuso al momento de

poder visualizar los documentos por lo que pasan por distintas fases.

74 | P á g i n a

Page 75: Portafolio Programacion I 2012

ACTIVIDAD N°: 20 FECHA: 23/04/2012 - 24/04/2012

TEMA:

Escriba una carta a su último instructor de programación (o al que prefiera). Propóngale un método disciplinado de desarrollo de las especificaciones de los sistemas que sirva de guía a la programación de cursos del próximo ciclo. Su objetivo debería ser conseguir especificaciones (de programación) de los sistemas que eliminen o reduzcan drásticamente la necesidad de aclaraciones que requieren los estudiantes del analista de sistemas, papel desempeñado por el instructor. Defienda su propuesta.

UNIDAD N° 2.3, 2.4, 2.5:

2.3 TIPOS DE DATOS POR VALOR Y REFERENCIA2.4 FUNCIONES2.5 NOMBRES RESERVADOS

OBJETIVO: Organizar los datos y procesos de un sistema

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

75 | P á g i n a

Page 76: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Machala, 23 de abril de 2012

Ing.ROSA LUJAN TORRESINTRUCTORA DE PROGRAMACIÓN DE LA ESCUELA DE INFORMATICAPresente.

De mis Consideraciones

Yo, Luis David Zamora Loján, alumno de la Escuela de Informática me dirijo a usted para proponerle un método disciplinado de desarrollo de las especificaciones de los sistemas que va a servir de guía a la programación de cursos del próximo ciclo.

El método que deseo proponerle consiste que usted como profesora, docente e ingeniera debería realizar ejemplos en clase explicando paso a paso los procesos que se deben realizar en los nuevos programas con los que se trabaje ,ya que sería algo nuevo para todos y poco complicado ya que no sabemos la debida utilización de la mismas.

Para poder tener un mejor entendimiento le propongo que sus clases se han un poco dinámicas las cual nos facilite el aprendizaje, también que al enviar las respectivas tareas extra clase nos dé una breve explicación sobre lo que se debe realizar para de esta manera tener una idea más clara de lo que se tiene que hacer, ya que sería de gran ayuda para los estudiantes para tener un mejor aprendizaje.

Con esta propuesta los estudiantes reducirían drásticamente la necesidad de aclaraciones que requieren los estudiantes.

Atentamente

Luis Zamora

76 | P á g i n a

Page 77: Portafolio Programacion I 2012

ACTIVIDAD N°: 21 FECHA: 23/04/2012 - 24/04/2012

TEMA: Investigar y Elaborar un informe sobre cómo Crear una Base de Datos en Access

UNIDAD N° 2.2: 2.2. CONEXIÓN A BASE DE DATOS

OBJETIVO: Organizar los datos y procesos de un sistema

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

77 | P á g i n a

Page 78: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

BASE DE DATOS Y C#

Crear una nueva base de datos

Microsoft Office Access 2007 dispone de una serie de características mejoradas que simplifican el proceso de creación de nuevas bases de datos. Aunque haya creado bases de datos con anterioridad, probablemente apreciará estas características por su capacidad de agilizar el proceso de creación.

Este manual aborda el proceso básico de iniciar Office Access 2007 y crear una base de datos mediante una plantilla o creando sus propias tablas.

Crear una base de datos en blanco

En la página Introducción a Microsoft Office Access, en Nueva base de datos en blanco, haga clic en Base de datos en blanco.

1. En el panel Base de datos en blanco, escriba un nombre de archivo en el cuadro Nombre de archivo. Si no especifica una extensión de nombre de archivo, Access la agrega automáticamente.

Para cambiar la ubicación predeterminada del archivo, haga clic en Buscar una ubicación donde colocar la base de datos (situado junto al cuadro Nombre de archivo), busque la nueva ubicación y, a continuación, haga clic en Aceptar.

2. Haga clic en Crear.

Access crea la base de datos con una tabla vacía denominada Tabla1 y, a continuación, abre Tabla1 en la vista Hoja de datos. El cursor se sitúa en la primera celda vacía de la columna Agregar nuevo campo.

Importante Si cierra Tabla1 sin guardar los cambios al menos una vez, Access elimina toda la tabla, aunque haya escrito datos en ella.

78 | P á g i n a

Page 79: Portafolio Programacion I 2012

Crear tablas en una base de datos

Cuando se crea una base de datos, los datos se almacenan en tablas, que son listas de filas y columnas basadas en temas. Por ejemplo, puede crear una tabla Contactos para almacenar una lista de nombres, direcciones y números de teléfono, o una tabla Productos para almacenar información sobre productos.

Siempre debe empezar a diseñar una base de datos creando primero sus tablas, incluso antes de crear otros objetos de base de datos. En este manual se explica cómo crear tablas. Aprenderá a crear una tabla, a agregar campos a la tabla y a definir la clave principal de una tabla. Obtendrá también información sobre los tipos de datos y sobre el modo de definir propiedades de los ampos y de la tabla.

Creación de tablas en dbms seleccionado

En esta ocasión vamos a trabajar con Access 2007

Pasos a seguir. Al abrir el Acces lo primero que aparecerá esta pantalla

A continuación debemos de crear una base de datos en blanco le damos un nombre y damos clip en crear.

Nota. La extensión ahora es .accdb

Al arrancar el Access tendremos la siguiente pantalla

79 | P á g i n a

Page 80: Portafolio Programacion I 2012

Se lo ve mejor en la vista de diseño ósea la vista del programador

Ahora damos un nombre a la tabla la vamos a llamar tbalumnos.

Procedemos a poner los distintos campos. Por ejemplo código_alu es importante colocarlo en este formato para más adelante no confundirnos, por ejemplo cuando hay un error de programación imaginemos que simplemente le dejo código y si creo por decir unas 50 tablas si me dice que hay un error de código no sabría en donde esta error tendría que revisar todas las tablas.

En la llave podemos identificar la clave primaria.

80 | P á g i n a

Page 81: Portafolio Programacion I 2012

Guardamos la tabla, luego abrimos la tabla clip derecho sobre la tabla - abrir para llenar los registros

Para crear las relaciones realizamos lo siguiente:

Seleccionamos la opción Herramientas de base de datos del menú principal, se abrirá un cuadro donde podemos agregar las Tablas creadas.

Ahora con el ratón hacemos clic en la Tabla con relación 1 (sin soltar), arrastramos hasta la tabla con Relación N. Aparecerá una línea que representa la relación. No debemos olvidar que el tipo de relación que se emplee dependerá de cómo se declararon las llaves principales y ajenas. En la Relación de 1 a N, debe declararse en la Tabla1 una llave principal, y en la tabla N solo debe constar el campo de llave ajena, no debe ser llave principal ya que en ese caso la relación sería de 1 a 1, como lo podemos observar en la figura que se muestra a continuación:

81 | P á g i n a

Page 82: Portafolio Programacion I 2012

Por último revisamos las opciones de la relación, debemos seleccionar o verificar que esté seleccionado la opción Exigir integridad referencial. Y Por último podemos cerrar el programa de Access.

82 | P á g i n a

Page 83: Portafolio Programacion I 2012

ACTIVIDAD N°: 22 FECHA: 25/04/2012 - 26/04/2012

TEMA:

Revisar, consultar e investigar las funciones (para caracteres, numéricas, fecha, etc.) y los tipos de datos por valor y referencia de C# Realice un informe donde se indique: ¿Cómo funcionan? ¿Qué hacen? ¿Qué uso se les puede dar? Incluya ejemplos.

UNIDAD N° 2.3, 2.4:2.3. TIPOS DE DATOS2.4. FUNCIONES POR VALOR Y REFERENCIA

OBJETIVO:Estandarizar los nombres de indicadores en programaciónConocer y utilizar los tipos de datos en C#Conocer y utilizar las funciones de C#

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistase) Identificar, formular y resolver problemas de ingeniería.g) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

83 | P á g i n a

Page 84: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

FUNCIONES UTILIZADAS EN C#

Caracteres:

Chart()

String()

Delete()

Lenght()

Insert()

Lower Case()

Upper Case()

Left()

Right()

Scanf ()

Mid ()

Matemáticas:

fabs(x): Devuelve el valor absoluto de x.

floor(x): Redondea por defecto al entero más próximo.

pow(x, y): Calcula x elevado a la potencia y.

sqrt (x): Devuelve la raíz cuadrada de x.

Int(): Devuelve números enteros

Double (): Devuelve números decimales.

84 | P á g i n a

Page 85: Portafolio Programacion I 2012

Fecha y Hora:

Now ():Fecha y Hora

Date():Fecha

Time(): Hora

DateTime()

DateTimeOffset()

Year (): El año de la fecha asignada.

Month (): Dato numérico del mes de la fecha asignada.

Day (): Dato numérico del día de la fecha asignada.

Minute (): Minuto de la fecha asignada.

TIPOS DE DATOS POR VALOR Y POR REFERENCIA UTILIZADAS EN C#

Los tipos de datos ofrecidos por C# al programador forman parte de un sistema unificado en el que todos los tipos de datos (incluidos los definidos por el usuario) derivan, aunque sea de manera implícita, de la clase System.Object. Por herencia dispondrán de todos los miembros definidos en ésta clase, en particular los útiles métodos Equals(), GetHashCode(), GetType() y ToString() que describiremnos más adelante.

C# proporciona seguridad con los tipos de datos. C# no admiten ni funciones ni variables globales sino que todo el código y datos han de definirse dentro de definiciones de tipos de datos, lo que reduce problemas por conflictos de nombres y facilita la legibilidad del código. C# incluye mecanismos que permiten asegurar que los accesos a tipos de datos siempre se realicen correctamente:

No pueden usarse variables que no hayan sido iniciadas.

El tipo asignado restringe los valores que puede almacenar y las operaciones en las que puede intervenir.

Siempre se comprueba que los índices empleados para acceder a los elementos de una tabla (vector o matriz) se encuentran en el rango de valores válidos.

Sólo se admiten conversiones de tipo entre tipos compatibles y entre aquellos que se hayan definido explícitamente el mecanismo de conversión (En C# puede

85 | P á g i n a

Page 86: Portafolio Programacion I 2012

implementarse la manera en que se realiza la conversión implícita y explícita entre tipos)

Los tipos de datos en C# pueden clasificarse en dos grandes categorías:

tipos valor tipos referencia

y pueden caracterizarse como sigue:

Tipos valor Tipos referencia

La variable contiene un valor La variable contiene una referencia

El dato se almacena en la pila El dato se almacena en el heap

El dato siempre tiene valor El dato puede no tener valor null

Una asignación copia el valor Una asignación copia la referencia

int i = 123; // tipo valor

string s = "Hello world"; // tipo referencia

El comportamiento cuando se copian o modifican objetos de estos tipos es muy diferente.

Tipos valor

Los tipos básicos son tipos valor. Si una variable es de un tipo valor contiene únicamente un valor del tipo del que se ha declarado.

Los tipos predefinidos de C# son tipos disponibles en la plataforma .NET y que, por comodidad, en C# se emplean usando un alias. En la tabla siguiente enumeramos los tipos simples detallando su nombre completo, su alias, una breve descripción, el número de bytes que ocupan y el rango de valores.

Nombre (.NET Alias Descripción Tamañ Rango

86 | P á g i n a

Page 87: Portafolio Programacion I 2012

Framework)o (bytes)

System.Sbyte sbyte Bytes con signo 1 -128 ... 127

System.Int16 short Enteros cortos 2 -32.768 ... 32.767

System.Int32 int Enteros 4-2.147.483.648 ... 2.147.483.647

System.Int64 long Enteros largos 8

-9.223.372.036.854.775.808 ... 9.223.372.036.854.775.807

System.Byte byte Bytes (sin signo) 1 0 ... 255

System.Uint16 ushortEnteros cortos (sin signo)

2 0 ... 65.535

System.UInt32 uint Enteros (sin signo) 40 ... 18.446.744.073.709.551.615

System.Uint64 ulongEnteros largos (sin signo)

80 ... 18.446.744.073.709.551.615

System.Single float Reales (7 decimales) 4±1.5 x 10-45 ... ±3.4 x 10+38

System.Double doubleReales (15-16 decimales)

8±5.0 x 10-324 ... ±1.7 x 10+308

System.Decimal

decimal

Reales (28-29 decimales)

12±1.0 x 10-28 ... ±7.9 x 10+28

System.Char char Caracteres Unicode 2Cualquier carácter Unicode

System.Boolean

bool Valores lógicos 1 true ó false

87 | P á g i n a

Page 88: Portafolio Programacion I 2012

El comportamiento de los datos de tipos valor es el esperado cuando se inician o reciben un valor por asignación a partir de otro dato de tipo valor (son independientes).

Tipos referencia

Si un dato es de un tipo referencia contiene la dirección de la información, en definitiva, una referencia al objeto que contiene los datos y/o métodos. En definitiva, distinguimos:

La referencia o un nombre por el que nos referimos al objeto y que utilizamos para manipularlo.

El objeto referenciado, que ocupa lugar en memoria (en el heap) y que almacenará el valor efectivo del objeto.

En definitiva: la variable y su contenido "lógico" están en posiciones de memoria diferentes. El valor almacenado en una variable de tipo referencia es la dirección de memoria del objeto referenciado (es una referencia) o tiene el valor null (no referencia a nada). Observe que pueden existir dos variables que referencien al mismo objeto (pueden existir dos referencias a la misma zona de memoria).

C# proporciona dos tipos referencia predefinidos: object y string. Todos los demás tipos predefinidos son tipos valor.

El tipo object es el tipo base del cual derivan todos los tipos básicos predefinidos y los creados por el usuario. Pueden crearse nuevos tipos referencia usando declaraciones de clases (class), interfaces (interface) y delegados (delegate), y nuevos tipos valor usando estructuras struct.

Los objetos de las clases creadas por el usuario son siempre de tipo referencia. El operador new permite la creación de instancias de clases definidas por el usuario.

new es muy diferente en C# y en C++:

En C++ indica que se pide memoria dinámica.

En C# indica que se llama al constructor de una clase.

El efecto, no obstante, es similar ya que como la variable es de un tipo referencia, al llamar al constructor se aloja memoria en el heap de manera implícita.

Considere el siguiente fragmento de código, en el que todas las variables son del mismo tipo: ObjetoDemo).

88 | P á g i n a

Page 89: Portafolio Programacion I 2012

Entonces podemos decir que en C# se puede almacenar variables por valor y por referencia. Explicamos lo que significa cada uno, como funcionan y que usos se le puede dar.

Tipos por valor: los tipos por valor almacenan datos a los que se puede acceder de forma directa, a su vez dentro de esta categoría encontramos más subcategorías como los tipos nativos, los tipos de datos creados por el programador y los enumerados. Los tipos por valor no pueden tener valores nulos.

Cuando creamos tipos por valor, el valor de la variable de este tipo se almacena en el Stack, si asignamos una variable de estas características a otra, se crea una copia en el Stack. Al destruir un tipo por valor, se destruye también el valor que se guardó en el Stack.

Tipos por referencia: Los tipos creados por referencia almacenan la dirección de memoria en la que se encuentra un dato determinado de manera que usaremos esa dirección de memoria para acceder de forma indirecta al dato. Los tipos por referencia se dividen en varios subgrupos como son las clases propias de la plataforma, interfaces, clases creadas por el programador, etc.

Cuando ejecutamos una aplicación es necesario que los datos se sitúen en la memoria del ordenador, la cual está divida en dos partes, una llamada Stack, de pequeño tamaño pero de un acceso muy rápido y otra llamada Heap que cuenta con un mayor tamaño pero con una velocidad de acceso inferior.

Cuando creamos un tipo por referencia, en realidad lo que guardamos en el Heap es una dirección de memoria que apunta a un valor, pero no al valor en sí mismo. Si asignamos una variable que contiene un tipo por referencia a otra variable, se dice que ambas se refieren al mismo valor. Los tipos por referencia si pueden contener valores nulos.

Pasar argumentos por valor y por referencia

En C#, puede transferir un argumento a un procedimiento por valor o por referencia. Esto se conoce como mecanismo para pasar argumentos, y determina si el procedimiento puede modificar el elemento de programación subyacente al argumento en el código de llamada. La declaración del procedimiento determina el mecanismo para pasar argumentos de cada parámetro mediante la palabra clave ByVal o ByRef.

Al pasar un argumento a un procedimiento, tenga en cuenta las distintas condiciones que interactúan entre sí:

Si el elemento de programación subyacente es modificable o no modificable

Si el propio argumento es modificable o no modificable

89 | P á g i n a

Page 90: Portafolio Programacion I 2012

Si el argumento se transfiere por valor o por referencia

Si el tipo de datos del argumento es un tipo de valor o un tipo de referencia

Para poder pasar los argumentos necesitamos seleccionar un mecanismo entre ellos se encuentra protección y rendimiento.

Protección. A la hora de elegir uno de los dos mecanismos que existen para pasar argumentos, el criterio más importante que hay que tener en cuenta es la exposición al cambio de las variables de llamada.

Rendimiento. Aunque el mecanismo que se utilice para pasar argumentos también puede afectar al rendimiento del código, la diferencia suele ser insignificante.

Determinación del mecanismo para pasar argumentos

La declaración del procedimiento especifica el mecanismo para pasar argumentos de cada parámetro. El código de llamada no puede reemplazar a un mecanismo ByVal, pero si un argumento se declara con ByRef, el código de llamada puede forzar al mecanismo para que pase el argumento ByVal; para ello hay que encerrar el nombre del argumento entre paréntesis en la llamada.

Cuándo pasar un argumento por valor

Si el elemento del código de llamada subyacente al argumento es un elemento no modificable, declare el parámetro correspondiente ByVal. Ningún código puede cambiar el valor de un elemento no modificable.

Si el elemento subyacente es modificable, pero no desea que el procedimiento pueda modificar su valor, declare el parámetro ByVal. Sólo el código de llamada puede cambiar el valor de un elemento modificable transferido por valor.

Cuándo pasar un argumento por referencia

Si el procedimiento necesita realmente modificar el valor subyacente en el código de llamada, declare el parámetro correspondiente ByRef.

Si la ejecución correcta del código depende del procedimiento que cambia el elemento subyacente en el código de llamada, declare el parámetro ByRef. Si lo transfiere por valor o si el código de llamada en lugar de utilizar el mecanismo para pasar argumentos ByRef incluye el argumento entre paréntesis, la llamada al procedimiento podría producir resultados inesperados.

Tipos por Valor vs. Tipos por Referencia

En Visual C# existen dos tipos de variables, y para el desarrollador de aplicaciones es muy importante saberlo, y saber cómo y cuándo está usando un tipo u otro, porque de ello depende en buena medida la calidad de su desarrollo.

90 | P á g i n a

Page 91: Portafolio Programacion I 2012

Las variables pueden ser por Valor o por Referencia.

Un Tipo por Valor es un tipo que contiene los propios datos almacenados. Podemos imaginarnos los Tipos por valor como una cajita donde metemos cosas. Cuando necesitamos usar la cosa, vemos el contenido de la cajita, y lo manipulamos directamente. Los tipos numéricos de Visual Studio: int, long, double, float son ejemplos de Tipos por Valor.

Cuando asignamos a una variable de un tipo por valor el contenido de otra variable, hacemos una copia de la "cosa" contenida en la cajita, y desde ese momento, ambas copias son completamente independientes. Pongamos un ejemplo:

static void Main(string[] args){ int i; int j;

i = 1; j = i; i++; j--; Console.WriteLine(String.Format("i={0} j={1}", i, j)); // i=2 j=0, porque al asignar j=i, lo que hacemos es // una copia de su contenido. Console.ReadKey();}

Los Tipos por Referencia, por el contrario, son tipos que contienen una referencia a los datos, en vez de los datos en sí. Podemos imaginarnos los tipos por referencia como una cajita donde, en vez de cosas, guardamos un papel que dice dónde está la cosa que queremos usar.

Cuando asignamos una variable de un tipo por referencia a otra, copiamos el papel que dice dónde está guardada la cosa. Algunos ejemplos de tipos por referencia son object, List, etc.

static void Main(string[] args){ List L; List M;

L = new List(); L.Add(7);

M = L; M.Add(1);

91 | P á g i n a

Page 92: Portafolio Programacion I 2012

Console.WriteLine(String.Format( "Elementos en L={0} Elementos en M={1}", L.Count, M.Count)); // Elementos en L=2 Elementos en M=2, porque L y M apuntan al // mismo objeto. Console.ReadKey();}

El caso del tipo string es particular, ya que es un tipo por referencia, pero se comporta como un tipo por valor. Esto se debe a que Visual Studio .Net define los strings como inmutables, es decir: una vez creado el objeto, no se puede cambiar de ninguna manera.

92 | P á g i n a

Page 93: Portafolio Programacion I 2012

ACTIVIDAD N°: 23 FECHA: 30/04/2012 - 01/05/2012

TEMA:Realizar una investigación y elaborar un informe acerca de los nombres reservados usados en C#. ¿Tratando de explicar qué son? ¿Para qué sirven? ¿Cómo funcionan?

UNIDAD N° 2.5: NOMBRES RESERVADOS

OBJETIVO: Estandarizar nombres de indicadores en programación

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistase) Identificar, formular y resolver problemas de ingeniería.g) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

93 | P á g i n a

Page 94: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

NOMBRES DEFINICION

abstract

Este indica que el elemento objeto de la modificación tiene una implementación incompleta o que le falta una implementación. El modificador abstract se puede usar con clases, métodos, propiedades, indizadores y eventos.Se usa el modificador abstract en una declaración de clase para indicar que la clase sólo se puede utilizar como clase base de otras clases.

asEl operador as se usa para realizar determinados tipos de conversiones entre tipos de referencia compatibles.

base

La palabra clave base se utiliza para obtener acceso a los miembros de la clase base desde una clase derivada.El acceso a una clase base sólo se permite en un constructor, en un método de instancia o en un descriptor de acceso a una propiedad de instancia

boolLa palabra clave bool es un alias de System.Boolean. Se utiliza para declarar variables que almacenan los valores booleanos, true y false.

break

Es una instrucción que permite terminar el bucle envolvente más cercano o la instrucción switch en la cual aparece. El control se transfiere a la instrucción que sigue a la instrucción terminada, si existe alguna.

byteLa palabra clave byte denota un tipo integral que almacena valores.No es posible convertir implícitamente a byte otros tipos numéricos no literales de mayor tamaño de almacenamiento.

char

La palabra clave char se utiliza para declarar un carácter Unicode. Las constantes de tipo char se pueden escribir como literales de cadena, secuencias de escape hexadecimales o representaciones. El tipo System.Char proporciona varios métodos estáticos para trabajar con valores char.

checked

Esta palabra clave usa con el fin de habilitar explícitamente la comprobación de desbordamiento para operaciones aritméticas y conversiones de tipo integral.Si la expresión contiene uno o varios valores no constantes, el compilador no detecta el desbordamiento.

claseLa palabra clave class permite declarar las clases. Una clase puede heredar la implementación de una sola clase base. Sin embargo, una clase puede implementar más de una interfaz.

const

Se utiliza para modificar una declaración de un campo o una variable local. Especifica que el valor del campo o de la variable local es constante, o sea que no se puede modificar. Una expresión constante debe dar un valor del tipo destino o de un tipo que se pueda convertir implícitamente en el tipo destino.

continueTransfiere el control a la siguiente iteración de la instrucción de iteración envolvente donde aparece

94 | P á g i n a

Page 95: Portafolio Programacion I 2012

decimal

El tipo decimal tiene una mayor precisión y un intervalo más reducido, lo que lo hace adecuado para cálculos financieros y monetarios.Se puede dar formato a los resultados mediante el método String.Format o a través del método Console.Write, el cual llama a String.Format().

default

La palabra clave default se puede utilizar en la instrucción switch o en código genéric.Cada tipo de referencia tiene un valor por defecto, este valor es devuelto por el valor por defecto (tipo), el valor predeterminado es más útil para la escritura de clases genéricas.

do

La instrucción do ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una determinada expresión se evalúa como false. El cuerpo del bucle se debe incluir entre llaves, {}, a menos que esté compuesto por una sola instrucción. En ese caso, las llaves son opcionales

double

La palabra clave double denota un tipo simple que almacena valores de punto flotante de 64 bits. Se utiliza para almacenar valores muy grandes y muy pequeños, este también almacena los valores fraccionarios como 1.5 y los valores negativos, tales como -1,5.

event

La palabra clave event se utiliza para declarar un evento en una clase de editor. Los eventos son un tipo especial de delegado multidifusión que sólo se puede invocar desde dentro de la clase o struct

explicit

Este declara un operador de conversión de tipos definido por el usuario que se debe invocar con una conversión de tipos. Si una operación de conversión puede producir excepciones o pérdida de información, debe marcarse como explicit. De esta forma, se evita que el compilador realice la conversión automáticamente y se produzcan posibles consecuencias no deseadas.

True-false

Devuelve el valor booleano true para indicar que un operando es false; de lo contrario, devuelve false. Debe sobrecargar ambos operadores, true y false, por separado para controlar correctamente los valores NULL en la expresión.

float

La palabra clave float denota un tipo simple que almacena valores de punto flotante de 32 bits. Float es un alias para el tipo System.Single.De forma predeterminada, un literal numérico real en el lado derecho del operador de asignación se trata como double. Por consiguiente, para inicializar una variable de tipo float, utilice el sufijo f o F

for

El bucle for ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una determinada expresión se evalúa como false. El bucle for es útil para recorrer en iteración matrices y para procesar secuencialmente.

goto

La instrucción goto transfiere el control del programa directamente a una instrucción identificada por una etiqueta. Un uso habitual de goto consiste en transferir el control a una etiqueta switch-case específica o a la etiqueta predeterminada de una instrucción switch.

95 | P á g i n a

Page 96: Portafolio Programacion I 2012

La instrucción goto es útil para salir de bucles de varios niveles de anidamiento.

If- else

La instrucción if selecciona una instrucción para ejecución en base al valor de una expresión Boolean.Si se desea ejecutar más de una instrucción, es posible ejecutar varias instrucciones en forma condicional al incluirlas en bloques mediante {}

implicit

La palabra clave implicit se utiliza para declarar un operador de conversión de tipo implícito definido por el usuario. Utilícela para permitir conversiones implícitas entre un tipo definido por el usuario y otro tipo, si existen garantías de que la conversión no provocará la pérdida de datos.

intLa palabra clave int denota un tipo integral que almacena valores según el tamaño. Las variables de tipo int se pueden declarar e inicializar.

interface

Una interfaz contiene solo las firmas de métodos, propiedades, eventos o indizadores. Una clase o struct que implementa la interfaz debe implementar los miembros de la interfaz que se especifican en la definición de interfaz. En el ejemplo siguiente, la clase ImplementationClass debe implementar un método denominado SampleMethod que no tenga ningún parámetro y devuelva void.

is

Comprueba si un objeto es compatible con un tipo determinado.La palabra clave is genera una advertencia en tiempo de compilación si se sabe que la expresión siempre será true o siempre será false, pero normalmente evalúa la compatibilidad de tipos en tiempo de ejecución.

lock

La palabra clave lock marca un bloque de instrucciones como una sección crucial, para lo cual utiliza el bloqueo de exclusión mutua de un objeto, la ejecución de una instrucción y, posteriormente, la liberación del bloqueo. Esta garantiza que un subproceso no va a entrar en una sección crítica del código mientras otro subproceso se encuentre ya en esta sección.

new

La palabra clave new se puede utilizar como operador, modificador o restricción.Operador: Se utiliza para crear objetos e invocar constructores.Modificador: Se utiliza para ocultar un miembro heredado de un miembro de clase base.Restricción: Se utiliza para restringir tipos que se podrían utilizar como argumentos para un parámetro de tipo en una declaración genérica.

nullEste es un literal que representa una referencia nula, es decir, que no apunta a ningún objeto. null es el valor predeterminado de variables de tipo referencia.

override El modificador override es necesario para ampliar o modificar la implementación abstracta o virtual de un método, propiedad, indizador o evento heredado.El método invalidado por una declaración override se conoce como método base invalidado. El método base reemplazado debe tener la misma firma que el método override.

96 | P á g i n a

Page 97: Portafolio Programacion I 2012

params

Este permite especificar un parámetro de método que acepta un número variable de argumentos.Puede enviar una lista separada por comas de argumentos del tipo especificado en la declaración de parámetro o una matriz de argumentos del tipo especificado. También puede no enviar ningún argumento.

private

Es un modificador de acceso de miembros. El acceso de tipo private corresponde al nivel de acceso más restrictivo. Los miembros privados sólo son accesibles dentro del cuerpo de la clase o struct en los que se declaran

protected

Es un modificador de acceso a miembros. Un miembro protegido es accesible dentro de su clase y por instancias de clases derivadas. Encontrará una comparación de protected con los otros modificadores de acceso en Niveles de accesibilidad. Los miembros de un struct no se pueden proteger, ya que el struct no se puede heredar.

public

Es un modificador de acceso para tipos y miembros de tipos. El acceso de tipo public corresponde al nivel de acceso menos restrictivo. No existen restricciones para obtener acceso a los miembros públicos.

return

La instrucción return termina la ejecución del método en el que aparece y devuelve el control al método que realizó la llamada. También puede devolver un valor opcional. Si el método es del tipo void, la instrucción return se puede omitir.Si la instrucción return está incluida en un bloque try, el bloque finally, si existe, se ejecutará antes de que el control se devuelva al método de llamada

stackalloc

La palabra clave stackalloc se utiliza en un contexto de código no seguro para asignar un bloque de memoria en la pila. Dado que intervienen los tipos de puntero, stackalloc requiere el contexto unsafe. El uso de stackalloc habilita automáticamente las características de detección de saturación del búfer en Common Language Runtime (CLR).

static

Este se utiliza para declarar un miembro estático, que pertenece al propio tipo en vez de a un objeto específico. El modificador static puede utilizarse con clases, campos, métodos, propiedades, operadores, eventos y constructores, pero no puede utilizarse con indizadores, destructores o tipos que no sean clases.No se puede hacer referencia a un miembro estático por medio de una instancia. En vez de ello, se debe hacer referencia por medio del nombre de tipo

string

El tipo string representa una secuencia de cero o más caracteres Unicode. string es un alias de String en .NET Framework.Aunque string es un tipo de referencia, los operadores de igualdad (== y !=) se definen para comparar los valores de objetos string, no las referencias. De esta forma, es más intuitivo comprobar la igualdad entre cadenas.

Switch -case

Switch es una instrucción de control que selecciona una sección del modificador para ejecutar desde una lista de candidatos.

97 | P á g i n a

Page 98: Portafolio Programacion I 2012

Este puede incluir un número cualquiera de secciones del modificador y cada sección puede tener una o más etiquetas case. Sin embargo, las etiquetas de dos casos pueden contener el mismo valor constante.

this

La palabra clave this hace referencia a la instancia actual de la clase y también se utiliza como modificador del primer parámetro de un método de extensión. Ejemplo: Pasar un objeto como parámetro a otros métodos

throw

La instrucción throw se utiliza para señalizar la aparición de una situación anómala (excepción) durante la ejecución del programa.Normalmente, la instrucción throw se utiliza junto con las instrucciones try-catch o try-finally.

Try-Finally

El bloque finally es útil para limpiar cualquier recurso asignado en el bloque try, así como también para ejecutar cualquier código que deba ejecutarse incluso si hay una excepción. El control se transfiere siempre al bloque finally independientemente de cómo finalice el bloque try.finally se emplea para asegurar la ejecución de un bloque de instrucciones sin importar cómo finaliza el bloque try anterior

unchecked

Este se utiliza con el fin de suprimir la comprobación de desbordamiento para operaciones aritméticas y conversiones de tipo integral.Si se quita el entorno unchecked, se produce un error de compilación. Se puede detectar el desbordamiento en tiempo de compilación porque todos los términos de la expresión son constantes.De forma predeterminada, se suprime la comprobación de desbordamiento de las expresiones que contienen términos no constantes en tiempo de compilación y tiempo de ejecución.

virtual

La palabra clave virtual se utiliza para modificar un método, propiedad, indizador o declaración de evento y permite invalidar cualquiera de estos elementos en una clase derivada.La implementación de un miembro virtual puede reemplazarse por un miembro de reemplazo de una clase derivada.

void

Cuando se utiliza como tipo de valor devuelto por un método, void especifica que el método no devuelve ningún valor.No se permite utilizar void en la lista de parámetros de un método. Un método que no utiliza parámetros y que no devuelve ningún valor se declara del siguiente modo void SampleMethod();Void es un alias para el tipo System.Void de .NET Framework.

volatile

La palabra clave volatile indica que varios subprocesos que se ejecutan a la vez podrían modificar un campo. Los campos que se declaran como volatile no están sujetos a optimizaciones del compilador que suponen el acceso por un subproceso único. Esto garantiza que el valor más actualizado está en todo momento presente en el campo.El modificador volatile suele utilizarse para un campo al que tengan acceso varios subprocesos sin utilizar la instrucción lock para serializar el acceso.

while La instrucción while ejecuta una instrucción o un bloque de

98 | P á g i n a

Page 99: Portafolio Programacion I 2012

instrucciones repetidamente hasta que una expresión especificada se evalúa como false.Un bucle while se puede terminar cuando una instrucción break, goto, return o throw transfiere el control fuera del bucle. Para pasar el control a la siguiente iteración sin salir del bucle, use la instrucción continue.

99 | P á g i n a

Page 100: Portafolio Programacion I 2012

CAPITULO 3: USO DE CONTROLES Y

METODOLOGÍA DE DESARROLLO

100 | P á g i n a

Page 101: Portafolio Programacion I 2012

ACTIVIDAD N°: 24 FECHA: 02/05/2012 - 03/05/2012

TEMA:

Con la ayuda de las lecturas realizadas:

Lectura complementaria: “La programación Orientada a Objetos”. Cap. 9, pág. 339 – 343, del libro Programación Visual Fox PRO 6.0 Paso a Paso. Editorial Macro. Rubén Luna Villavicencio. 1era. Edición.

Lectura complementaria: “Conceptos Fundamentales de Orientación a Objetos”. Capítulo 15. pág. 575 – 609, del libro Fundamentos de Programación: Algoritmos, Estructura de Datos y Objetos. Mc. GrawHill

Liste las palabras claves y trate de darle una breve descripción a cada una de estas.

UNIDAD N° 3.1: CLASES Y MÉTODOS

OBJETIVO:Establecer los beneficios de utilizar programación orientada a objetosEstablecer y utilizar programación modular de eventosDiseñar programas modulares

PROBLEMA:Desarrollo de Sistemas informáticos que no son modulares y que permitan alto acoplamiento y baja cohesión.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

Page 102: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Con la ayuda de las lecturas realizadas:

Liste las palabras claves y trate de darle una breve descripción a cada una de estas.

Orientada

Objetos

Clase

Agrupar

Reutilizar

Sobrescribe

La programación orientada a objetos es lo que se conoce como un paradigma o modelo de programación, es una forma de programar, una manera de plantearse la programación.

Es aquella que representa las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos.

Los objetos posee sus propias características o datos que determinan su comportamiento, además posee sus propios métodos o código asociado, los cuales van a responder a las acciones que se den sobre dicho objeto.

La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase.

Las clases tienes las siguientes características:

Encapsulamiento es la agrupación de los datos y el código asociado a una determinada clase ocultando de esta manera la complejidad que ésta pueda tener.

Herencia es aquella que nos permite reutilizar el código de manera fácil y ordenada para de esta manera ahorrar recursos y espacio. La herencia se produce al crear subclases dentro de una clase.

102 | P á g i n a

Page 103: Portafolio Programacion I 2012

Polimorfismo consiste en que varios objetos que tengan distintas clases pero los mismos métodos o propiedades con el mismo nombre se puede establecer. Este tiene relación con la herencia ya que se sobrescribe.

Expresa la relación que existe entre Métodos, Clases y el objeto. Tanto objetos, métodos y clases están relacionadas entre sí ya que cada uno se contiene. Un Objeto es aquel que tiene característica y métodos ya que gracias a esto responde a las acciones que debe realizar y un objeto es la instancia de una clase

103 | P á g i n a

Page 104: Portafolio Programacion I 2012

ACTIVIDAD N°: 25 FECHA: 02/05/2012 - 03/05/2012

TEMA:

Revisar las propiedades de los controles y determinar para qué sirve, cómo funcionan y cuáles son los posibles valores que pueden contener.Realizar un informe donde explique las propiedades de los controles, e identificar aquellas propiedades que se utilizan para varios controles. Tome en cuenta los que usted considera más importantes y que le servirán para su Proyecto Final.

UNIDAD N° 3.1: CLASES Y MÉTODOS

OBJETIVO:Establecer los beneficios de utilizar programación orientada a objetosEstablecer y utilizar programación modular de eventosDiseñar programas modulares

PROBLEMA:Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistase) Identificar, formular y resolver problemas de ingeniería.g) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

104 | P á g i n a

Page 105: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Estos controles son los más utilizados y los cuales utilizare dentro de mi proyecto.

BUTTON:

Es aquel que realizar una acción al hacer clip dentro del botón. Este tiene las siguientes características.

Name: Nombre del botón con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al botón.

BackgroundImage: Se puede insertar una imagen de fondo al botón.

BackgroundImageLayout: Se puede escoger entre diferentes opciones que cuenta como es centrar, zoom, strech de la imagen.

Enabled: Se puede poner como activo o desactivado el botón.

Font: Aquí se cambia la fuente, el estilo y tamaño del texto del botón.

ForeColor: Aquí se cambia el color del texto del botón.

Text: Aquí ponemos un nombre con cual se va identificar los botones hacia el usuario.

105 | P á g i n a

Page 106: Portafolio Programacion I 2012

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga

LABEL:

Es una etiqueta que permite identificar algo que se va realizar.

Name: Nombre del label con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al label o también podemos ponerlo como transparente para que no se note.

Enabled: Se puede poner como activo o desactivado el label.

Font: Aquí se cambia la fuente, el estilo y tamaño del texto del label.

ForeColor: Aquí se cambia el color del texto del label.

Text: Aquí ponemos un nombre con cual se va identificar el label hacia el usuario.

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga

CHECKBOX:

Este es una casilla de verificación que nos permite escoger entre varios opciones.

106 | P á g i n a

Page 107: Portafolio Programacion I 2012

Name: Nombre del checkbox con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al checkbox o también podemos ponerlo como transparente para que no se note.

BackgroundImage: Se puede insertar una imagen de fondo al checkbox.

BackgroundImageLayout: Se puede escoger entre diferentes opciones que cuenta como es centrar, zoom, strech de la imagen.

Font: Aquí se cambia la fuente, el estilo y tamaño del texto del checkbox.

ForeColor: Aquí se cambia el color del texto del checkbox.

Text: Aquí ponemos un nombre con cual se va identificar el label hacia el usuario.

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga

COMBOBOX:

Este componente es una lista desplegable con distintas entradas.

Name: Nombre del combobox con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al combobox o también podemos ponerlo como transparente para que no se note..

107 | P á g i n a

Page 108: Portafolio Programacion I 2012

Font: Aquí se cambia la fuente, el estilo y tamaño del texto del combobox.

ForeColor: Aquí se cambia el color del texto del combobox.

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga

Item: Aquí podremos insertar lo elementos que queremos que contenga el combobox.

DATAGRIDVIEW:

Este inserta una tabla que nos permite observar datos tanto ingresado como de la base de datos.

Name: Nombre del datagridview o tabla con cual se va a identificar de los demás al momento de codificar.

Backgroundcolor: Aquí podremos cambiar el color de fondo de la tabla.

BorderStyle: Esta opción permite con los borde cambien su función es decir finos, grueso, 3d.

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga

108 | P á g i n a

Page 109: Portafolio Programacion I 2012

MENUSTRIP:

Este nos proporción un sistema de menús dentro de un formulario para de esta manera insertas diferentes submenús.

Name: Nombre del menustrip o tabla con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al menustrip o también podemos ponerlo como transparente para que no se note.

BackgroundImage: Se puede insertar una imagen de fondo al menustrip.

Text: Aquí ponemos un nombre con cual se va identificar el label hacia el usuario.

PICTUREBOX:

Nos permite ingresar imágenes.

Name: Nombre del picturebox con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al picturebox o también podemos ponerlo como transparente para que no se note.

BorderStyle: Esta opción permite con los borde cambien su función es decir finos, grueso, 3d.

Image: Nos permite ingresar la imagen que queremos captar.

109 | P á g i n a

Page 110: Portafolio Programacion I 2012

TEXTBOX:

Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras aplicaciones.

Name: Nombre del textbox con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al textbox o también podemos ponerlo como transparente para que no se note.

BorderStyle: Esta opción permite con los borde cambien su función es decir finos, grueso, 3d.

Font: Aquí se cambia la fuente, el estilo y tamaño del texto del textbox.

ForeColor: Aquí se cambia el color del texto del textbox..

Text: Aquí ponemos un nombre con cual se va identificar el textbox hacia el usuario.

110 | P á g i n a

Page 111: Portafolio Programacion I 2012

ACTIVIDAD N°: 26 FECHA: 07/05/2012 - 08/05/2012

TEMA:Realizar un ensayo acerca de la creación de base de datos en Sql Server y la conexión en C#, tratando de explicar cuál ha sido su experiencia, dificultades encontradas y cómo logró superarlas, reflexione sobre lo que necesita mejorar.

UNIDAD N° 3.2: CONEXIÓN A LA BASE DE DATOS CON EL DATAADAPTER

OBJETIVO:Establecer la estructura de la Base de DatosSeleccionar el DBMS a utilizar

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistase) Identificar, formular y resolver problemas de ingeniería.g) Comunicarse efectivamente

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

111 | P á g i n a

Page 112: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

CREACION DE BASE DE DATOS:

Para crear una base de datos en SQL Server primeramente debemos ya tener instalado el programa. Una vez hecho esto procedemos a crear una nueva base de datos. Para realizar esto, al lado derecho podemos encontrar todos los objetos que contiene esta instancia, hay encontraremos una carpeta con el mismo nombre donde haremos clip derecho nueva base de datos, nos aparecerá una nueva pantalla donde en la parte superior escribiremos el nombre de nuestra nueva base de datos y haremos clip en aceptar para poder continuar.

En la parte superior podemos observar que ya se encuentra el nombre de nuestra base de datos. Una vez creada la base de datos, dentro de esta encontraremos una diversidad de carpetas, entre ellas tablas.

Para poder crear las tablas que contendrá nuestra base de datos hacienda_bd haremos clip derecho nueva tabla. Dentro de ella podemos escribir los campos k contendrá esta tabla poniendo las distintas llaves, tipo de valor, etc. Luego procederemos a guardar nuestra tabla designándole su correspondiente nombre y a su sucesivamente creando todas las tablas necesarias que tendrá nuestra base de datos hacienda_bd. Ejemplo:

1.- Abrir el Management Studio

Figura 1. Seleccionar la Herramienta SQL Server Management Studio

Seleccionar la instancia en la que se quiere trabajar, en la figura 2 es la instancia de SQLEXPRESS.

112 | P á g i n a

Page 113: Portafolio Programacion I 2012

Figura 2. Conectar a un servidor de bases de datos con el Management Studio

A continuación damos clic en conectar o connect dependiendo si está en español o inglés:

Figura 3. Cuadro de dialogo Management Studio

Y listo ya tenemos abierto Microsoft SQL Server Management Studio, el cual servirá para crear bases de datos con sus tablas correspondientes entre otras cosas más, para crear las Bases de datos podemos utilizar los asistentes o realizarlo a través de código SQL, en este primer ejemplo, veamos cómo crear nuestra Base de Datos utilizando la interfaz gráfica.

Con el botón derecho (o el botón secundario), pulsar en Bases de datos y del menú seleccionar Nueva base de datos, tal como se muestra en la figura 4.

113 | P á g i n a

Page 114: Portafolio Programacion I 2012

Figura 4. Crear una nueva base de datos

Entonces se abrirá una ventana en la cual daremos los datos correspondientes para crear nuestra base de datos, el nombre que en este ejemplo se utiliza es MiDB:

114 | P á g i n a

Como primer paso

debemos hacer click derecho

sobre la carpeta de: bases de

datos

Después debemos

seleccionarla opción de:

Nueva base de datos

Page 115: Portafolio Programacion I 2012

Figura 5. Cuadro de diálogo para ingresar información sobre la base de datos.

Damos clic en OK, y listo, nuestra base de datos está creada y aparecerá dentro de la carpeta Base de Datos, pero ahora falta agregarle tablas, procedemos entonces a realizarlo, de la siguiente manera: Extendemos la jerarquía de las carpetas de nuestra base de datos hasta poder ver la carpeta que dice Tables (Tablas), como se muestra en la Figura 6, le damos clic derecho y seleccionamos New Table (Nueva Tabla).

Figura 6. Jerarquía de Carpetas.

Haciendo esto tendremos una ventana como aparece la figura 7, donde podremos ingresar la estructura de nuestra tabla.

115 | P á g i n a

Una vez que seleccionamos la opción de Nueva base de datos aparecerá una ventana

como esta

En esta ventana asignaremos un

nombre a la base de datos

Después presionamosAceptar (OK)

Jerarquía de carpetas

Para crear una tabla en nuestraBase daremos click derecho

sobre la Carpeta Tablasubicada dentro de

la base de datos (“MiDB” para el ejemplo)

y seleccionaremos“Nueva tabla”

Page 116: Portafolio Programacion I 2012

Figura 7. Diseñador de tablas.

En esta ventana empezaremos primero a darle nombre a los campos y el tipo de datos que manejarán, y desde luego si manejan o no valores nulos.

 

  Figura 8. Diseñador de tablas.

También le asignaremos al campo Id la Primary Key

116 | P á g i n a

En esta ventana agregaremosTodos los campos que

Necesitemos en la tabla.Ingresaremos:

Nombre de columna – Tipo de dato – Permitir si el valor será nulo

Page 117: Portafolio Programacion I 2012

 

  Figura 9. Asignación Clave principal.

Con esto, ya tenemos creada una tabla en nuestra base de datos, ahora lo que resta es guardarla con un nombre, para eso daremos clic derecho en la pestaña de dicha tabla (o seleccionamos la opción Archivo del menú principal) y le daremos en Save Table_1 (Grabar Tabla):

  Figura 10. Grabar tabla creada.

Entonces les damos un nombre a la tabla:

 

  Figura 11. Nombre de la tabla a crear.

117 | P á g i n a

Al hacer clic en esta opciónconfiguramos el camposeleccionado como llave

principal de la tabla

Clic en la opción Save Table 1

(Grabar Tabla1)

Click derecho en la pestaña de la tabla

Ingrese el nombre que le quiere dar a su tabla

Click en el botón OK para grabar tabla.

Nota: con esta opción podremos crear las

relaciones entre las tablas. (links entre llave principal y

llave ajena)

Page 118: Portafolio Programacion I 2012

Y listo ya hemos creado nuestra tabla en Microsoft SQL Server 2005. Si hacemos clic en el nombre de la tabla creada dentro de la estructura jerárquica de carpetas ubicada en el panel izquierdo, luego clic con el botón derecho y seleccionamos SCRIPT ….., esto permitirá observar el código que se ejecutó para la creación de dicha tabla (se aplica para cualquier objeto de la base de datos que se haya seleccionado). Como lo muestra la Figura 12

  Figura 12. Crear SCRIPT para crear objeto en SQL.

Ahora bien, veamos un ejemplo para crear una base de datos, utilizando comandos SQL. Para esto, en la base de datos que hemos creado, pulsa con el botón derecho del ratón para que te muestre el menú contextual, del que seleccionarás Nueva consulta, tal como puedes ver en la figura 13.

 

118 | P á g i n a

Clic en el botón secundario del mouse sobre el objeto y seleccionar SCRIPT…

Se muestra la codificación SQL para crear dicho

objeto.

Page 119: Portafolio Programacion I 2012

Figura 13. Crear una nueva consulta en Management Studio

Eso hará que se muestre una ventana en el panel de la derecha (junto a la ficha Resumen). En la ventana de consulta se puede escribir el código de SQL que se desee para crear los objetos de la base de datos. A continuación se presenta un ejercicio para realizar la creación a través de comandos, para lo cual se presenta un esquema E-R (figura 14), y los códigos que se deben ejecutar:

Figura 14. Modelo E-R, esquema a implementarse

119 | P á g i n a

A lado de esta pestaña se abrirá una

nueva para editar código SQL.

Page 120: Portafolio Programacion I 2012

COMANDOS SQL. Sentencias que se deben ejecutar:

--Sentencias para crear base de datos

CREATE DATABASE BANCO

GO

--Sentencias para seleccionar base de datos donde se creará la tabla

USE BANCO

GO

--Sentencias para crear tabla Cliente

CREATE TABLE CLIENTE

(IDCLIENTE VARCHAR(5)PRIMARYKEY, //Aquí se declara la llave principal

APELLIDOS VARCHAR(30),

NOMBRES VARCHAR(30))

GO

--Sentencias para crear tabla Cuenta

CREATE TABLE CUENTA

(IDCLIENTE VARCHAR(5), //Aquí se declara campo para llave ajena

IDCUENTA VARCHAR(5)PRIMARYKEY, //Aquí se declara la llave principal

SALDO FLOAT,

DIVISA VARCHAR(20))

GO

--Sentencias para crear tabla Movimiento

120 | P á g i n a

Page 121: Portafolio Programacion I 2012

CREATE TABLE MOVIMIENTO

(IDCUENTA VARCHAR(5), //Aquí se declara campo para llave ajena

IDMOVIMIENTO VARCHAR(5)PRIMARYKEY, //Aquí se declara la llave principal

TIPO VARCHAR(2),

MONTO FLOAT,

FECHA DATETIME)

GO

--Sentencias para crear llaves ajenas en la tabla Cuenta

ALTER TABLE CUENTA

ADD FOREIGN KEY(IDCLIENTE)REFERENCES CLIENTE

GO

--Sentencias para crear llaves ajenas en la tabla Movimiento

ALTER TABLE MOVIMIENTO

ADD FOREIGN KEY(IDCUENTA)REFERENCES CUENTA

GO

Una vez escrito el código en la ventana de consultas, pulsar el botón Ejecutar (ver la figura 15), o bien pulsa la tecla F5.

 

121 | P á g i n a

Page 122: Portafolio Programacion I 2012

Figura 15. Ejecutar la consulta

Esto creará la Base de datos Banco y sus tablas Clientes, Cuentas y Movimientos. Si expande la base de datos y pulsa en Tablas, se observará que ya están las tablas creadas, parecido a como lo muestra la Figura 16.

Figura 16. La tabla de Clientes ya está creada

122 | P á g i n a

Page 123: Portafolio Programacion I 2012

Ahora vamos a añadir unos cuantos datos. Para ello vamos a utilizar el comando INSERT, y colocarlo dentro de la ventana consulta.

--Sentencias para insertar registros en la tabla Cliente

INSERT INTO CLIENTE VALUES ('00001','CORDOVA','WLIMER')

GO

INSERT INTO CLIENTE VALUES ('00002','ACOSTA','ANA')

GO

INSERT INTO CLIENTE VALUES ('00003','CORDOVA','DANIELA')

GO

--Sentencias para insertar registros en la tabla Cuenta

INSERT INTO CUENTA VALUES ('00001','00011',200,'DOLARES')

GO

INSERT INTO CUENTA VALUES ('00002','00012',150,'DOLARES')

GO

INSERT INTO CUENTA VALUES ('00003','00013',300,'DOLARES')

GO

--Sentencias para insertar registros en la tabla Movimiento

INSERT INTO MOVIMIENTO VALUES ('00011','00111','D',20,'24/10/2005')

GO

INSERT INTO MOVIMIENTO VALUES ('00012','00112','R',100,'05/05/2000')

GO

INSERT INTO MOVIMIENTO VALUES ('00013','00113','D',50,'25/08/2006')

GO

Al igual que con la creación, una vez escrito el código en la ventana de consultas, pulsar el botón Ejecutar (ver la figura 15), o bien pulsa la tecla F5 y se añadirán

123 | P á g i n a

Page 124: Portafolio Programacion I 2012

estos datos. También se puede grabar un archivo de texto y abrirlo para ejecutarlo en cualquier momento.

Otra opción es abrir la tabla de Clientes para que muestre lo que tiene, se mostrará algo parecido a lo que se muestra en la figura 17. En esta ventana, el último registro en blanco, permite adicionar nuevos registros.

Figura 17. Los datos que se añadieron a la tabla de Clientes

 

CONEXION CON C#

Una vez realizada la debida instalación de Microsoft Visual Studio c#, podemos crear un proyecto donde dentro de este crearemos un respectivo formulario.

A continuación procedemos a enlazar la base de datos, haciendo clip en el menú data y escogemos data source, hay nos aparecerá un ventanita donde haremos clip dentro de ella en la parte que dice agregar base de datos.

Aparecerá una ventana nueva donde haremos clip en base de datos siguiente, aquí escogeremos la base de datos donde después nos aparecerá todo lo referente con lo que trabaja esa base de datos. Haremos clip en tablas y se desplegaran todas las que contiene y señalaremos las tablas con las cuales vamos a trabajar y se cerrara esa pequeña ventana.

Ahora en la ventana principal de c# a lado izquierdo podremos visualizar las tablas con sus respectivos campos.

Dentro de cada tabla al hacer clic podemos hacer que los datos de esta se visualicen en una tabla o como detalles. Si es como detalle dentro de cada campo

124 | P á g i n a

Este espacio permite adicionar nuevos

registros.

Registros ingresados en la tabla Clientes

Page 125: Portafolio Programacion I 2012

al hacer clip podemos escoger en donde quiere que lo hagan es decir si en un label, textbox, etc.

Una vez realizado todo esto procedemos a arrastrar la tabla hacia el formulario donde automáticamente se colocaron todos los campos correspondientes. De ahí solo se procede a cambiar la interfaz, colores, letra, etc. Ejemplo:

Enlazar una Base de Datos SQL Server a los Formularios

Visual Studio 2008 proporciona a los desarrolladores un conjunto de herramientas y asistentes que facilitan enormemente el trabajo y ahorran grandes cantidades de tiempo en el desarrollo de diferentes aplicaciones.

De los asistentes o herramientas que nos proporcionan mayor rendimiento en el entorno de desarrollo rápido de Microsoft, está la que nos permite trabajar con fuentes de datos como los datos de una aplicación típica maestro detalle.

Entre otras cosas, nos centraremos en esta acción, que será la que veremos en detalle a continuación.

¿Qué son los datos Maestro Detalle?

El desarrollador de aplicaciones que debe trabajar con datos y fuentes de datos relacionadas entre sí, encuentra con frecuencia problemas de desarrollo en aplicaciones con datos interrelacionados.

Además, este tipo de aplicaciones, consumen gran parte del tiempo de desarrollo y son por lo general, acciones repetitivas.

Supongamos como ejemplo general, la tabla Socios de un videoclub. Además, relacionemos los socios del videoclub, con una tabla Alquileres, para saber si un socio determinado tiene películas alquiladas, y en ese caso, saber cuáles.

Este sencillo ejemplo, es un claro exponente de una aplicación que relaciona datos maestro detalle.

Ambas tablas deben estar relacionadas para recopilar la información que se necesite en un momento dado.

Los datos maestros serían expuestos por los socios del videoclub, mientras que los datos detalle estarían relacionados con los datos de los alquileres de los socios.

En nuestro caso, vamos a cambiar las palabras maestro y detalle por padre e hijo, y a partir de ahora, nos referiremos a padre como la tabla Socios, e hijo como la tabla Alquileres. De esta forma, ubicaremos sin problemas ambos conceptos dentro del entorno de Visual Studio 2008, ya que éste tiene alguna ligera connotación que podría infundirnos a error como observará más adelante.

125 | P á g i n a

Page 126: Portafolio Programacion I 2012

Por suerte, Visual Studio 2008 nos proporciona un conjunto de herramientas, que hace que realizar una aplicación Windows con todas las características de una aplicación maestro detalle, sea un auténtico juego de niños, que nos llevará aproximadamente un minuto de nuestro tiempo como mucho.

Configurando la fuente de datos

Trabajar con fuentes de datos requiere como tarea inicial, que tengamos listo y preparado un origen de fuentes de datos válido.

Para esta tarea, deberemos configurar la fuente de datos que vamos a utilizar, algo que vamos a aprender a hacer a continuación.

Configurando el origen de la fuente de datos

Iniciaremos una nueva aplicación Windows con Visual Studio 2008 y seleccionaremos el menú Data > Show Data Sources (Datos > Mostrar orígenes de datos) como se indica en la figura 1.

Figura 1. Menú para mostrar los orígenes de datos

En este punto, aparecerá una ventana como la que se muestra en la figura 2.

Figura 2. Ventana de orígenes de datos

126 | P á g i n a

Page 127: Portafolio Programacion I 2012

Como podemos apreciar, la ventana no tiene por defecto ningún origen de datos asignado, además, esta ventana inicialmente, no está anclada a ningún sitio del entorno.

Para situarla en un lugar específico del entorno, haga clic sobre la ventana y arrástrela sobre la parte en la que desee situarla, como se indica por ejemplo, en la figura 3.

Figura 3. La ventana orígenes de datos podemos situarla dónde deseemos dentro de Visual Studio 2008

En este punto, la ventana de orígenes de datos, quedará anclada en el entorno de desarrollo, como se muestra en la figura 4.

127 | P á g i n a

Page 128: Portafolio Programacion I 2012

Figura 4. La ventana orígenes de datos anclada en Visual Studio 2008

Cada uno, puede situar esta ventana dónde considere oportuno. En mi caso la he situado entre las ventanas del Explorador de soluciones y de Propiedades, pero podemos situarla dónde consideremos oportuno.

Sobre la configuración del origen de datos, haga clic sobre la opción Agregar nuevo origen de datos... como se indica en la figura 5.

Figura 5. Opción para agregar un nuevo origen de datos

128 | P á g i n a

Page 129: Portafolio Programacion I 2012

Aparecerá una ventana como la que se muestra en la figura 6 en la cual indicaremos el lugar de dónde la aplicación obtendrá los datos, y que en nuestro caso será de una Base de datos.

Figura 6. Como tipo de origen de datos elegiremos una Base de datos

Una vez seleccionado la opción de Base de datos como tipo de origen de datos, presionaremos el botón Siguiente.

En la siguiente ventana, elegiremos la conexión de la base de datos que vamos a utilizar, o presionaremos sobre el botón Nueva conexión... si no tenemos seleccionada la conexión que queremos utilizar, como se muestra a continuación en la figura 7.

Figura 7. Ventana dónde elegimos la conexión de datos

129 | P á g i n a

Hacer clic en el botón New Connection… para crear una nueva conección.

Page 130: Portafolio Programacion I 2012

Aparecerá una nueva ventana denominada Agregar conexión, aquí podemos observar la opción Origen de datos, si esta en blanco o contiene otro origen diferente, debemos hacer clic en el botón Cambiar, tal como lo muestra la figura 8.

Figura 8. Ventana para seleccionar el origen de datos.

Al hacer clic en ese botón aparece una ventana con la lista de orígenes de datos disponibles para el proveedor .NET Framework, de esta lista se debe seleccionar el dbms donde se ha implementado la base de datos, en este caso seleccionamos Microsoft Sql Server. Y hacemos clic en Aceptar, como lo muestra la figura 9.

Figura 9. Lista de orígenes de datos.

Retornamos a la ventana anterior (Agregar conexión), aquí seleccionaremos nuestro Servidor, si no se encuentra el nombre del servidor en la lista, haga clic en el botón Actualizar, o solicitar información del nombre del servidor al

130 | P á g i n a

Primero seleccionamos el origen de datos Microsoft SQL Server y luego hacemos clic en el botón Aceptar

Page 131: Portafolio Programacion I 2012

administrador de la Red. A continuación seleccionaremos nuestra Base de Datos (para el ejemplo se está utilizando la base de datos denominada “Negocio”), para asegurarse de que la conexión se está estableciendo, probaremos la Conexión (Tiene que funcionar, por lo que debe aparecer un mensaje indicando esta situación), por último hacemos clic en el botón aceptar, como lo muestra la figura 10.

Figura 10. Ventana dónde se muestra los datos que elegimos para la conexión

Con esto regresará a la ventana anterior, como dato informativo por el momento, hacemos clic en el “+” de cadena de conexión como lo demuestra la figura 11. Esta cadena la podemos copiar y podrá ser utilizada dentro de la codificación cuando no se desee utilizar este asistente, por lo que en este caso luego de copiar se presiona Cancelar. Este apartado lo veremos más adelante.

131 | P á g i n a

Page 132: Portafolio Programacion I 2012

Figura 11. Ventana dónde se muestra la cadena de conexión utilizada.

Regresando a nuestro tema, en la figura 12, podemos ver cómo hemos establecido la conexión con nuestra fuente de datos, que utilizaremos en nuestro ejemplo de creación de la aplicación de acceso a datos maestro detalle.

Figura 12. Ventana dónde se muestra la conexión de datos que elegimos

A continuación, haremos clic en el botón Siguiente. En la nueva ventana que aparece ahora dentro del asistente para la creación del origen de datos,

132 | P á g i n a

Page 133: Portafolio Programacion I 2012

indicaremos el nombre de la cadena de conexión que crearemos. En nuestro caso, no modificaremos el nombre de la cadena de conexión, dejándola por defecto como se muestra en la figura 13.

Figura 13. Asignamos un nombre para el nombre de la cadena de conexión

A continuación, haremos clic sobre el botón Siguiente.

En este punto, el asistente se conecta a la base de datos para recuperar la información de la base de datos y mostrarla en la ventana del asistente como se muestra en la figura 14.

Figura 14. Ventana con los objetos de la base de datos seleccionada

A continuación, despliegue el objeto Tablas y seleccione las tablas Alquileres y Socios como se indica en la figura 15.

133 | P á g i n a

Page 134: Portafolio Programacion I 2012

Figura 15. Selección de los objetos de la base de datos seleccionada

Una vez que hemos seleccionado los objetos de la base de datos, haremos clic sobre el botón Finalizar para que el asistente concluya las opciones añadidas al asistente.

La ventana del origen de datos, quedará ahora configurado de una forma similar a la que se presenta en la figura 16.

Figura 16. Ventana de origen de datos con la configuración añadida

A partir de aquí, deberemos preparar las tablas del origen de datos para que se comporten como auténticos datos e informaciones maestro detalle.

Preparando el origen de datos

Ya hemos aprendido a añadir nuestro origen de datos, y ahora aprenderemos a prepararlo para poder utilizarlo posteriormente en la aplicación Windows.

134 | P á g i n a

Page 135: Portafolio Programacion I 2012

La preparación del origen de datos, nos permitirá seleccionar que tabla o datos queremos que actúen como maestro y cuales como detalle, o dicho de otra forma, que datos queremos que sean padre y cuales hijo.

Nuestro objetivo principal es mostrar la tabla Alquileres como tabla hijo y la tabla Socios como padre de la tabla anterior.

Prepararemos e incrustaremos primero la tabla Socios dentro del formulario Windows como Detalle de la información, y posteriormente insertaremos la tabla Alquileres dentro del formulario.

Por último, asignaremos alguna relación que permita trabajar con las dos tablas en nuestro formulario Windows sin perder la conexión entre ambas tablas y permitiéndonos acceder a la información que nos proporciona dicha relación.

Preparando la tabla padre

Lo primero que haremos será preparar la tabla padre para poderla añadir al formulario Windows.

Por esa razón, haremos clic sobre la tabla Socios de la ventana de Orígenes de datos como se indica en la figura 17.

Figura 17. Tabla Socios de la ventana de orígenes de datos

En la ventana de Orígenes de datos y en concreto con la tabla Socios desplegada, centraremos nuestra atención en el campo NIF como se indica en la figura 18.

Figura 18. Campo NIF de la tabla Socios

Pulse sobre la lista desplegable que aparece a la derecha del campo NIF y seleccione la opción Label como se indica en la figura 19.

135 | P á g i n a

Page 136: Portafolio Programacion I 2012

Figura 19. Lista desplegable con la opción Label seleccionada como campo de la tabla desplegada

En este caso, la ventana de Orígenes de datos quedará informada tal y como se indica en la figura20.

Figura 20. Campo NIF modificado en la ventana de Orígenes de datos

A continuación, haremos clic sobre la tabla Socios como se indica en la figura 21, y posteriormente presionaremos sobre la lista desplegable que aparece a la derecha de la tabla.

Figura 21. Tabla Socios seleccionada en la ventana de Orígenes de datos

Si hacemos clic sobre la lista desplegable, aparecerá una lista de opciones o posibilidades, para indicar cómo queremos que sean los campos de la tabla seleccionada con respecto a qué tipo de controles queremos que sean. Esto es lo que se indica en la figura 22.

136 | P á g i n a

Page 137: Portafolio Programacion I 2012

Figura 22. Lista desplegable de la tabla Socios de la ventana de Orígenes de datos

Por defecto, una tabla queda determinada con un icono que representa el control DataGridView, aunque se puede modificar la representación que deseamos tengan los datos dentro de un formulario seleccionando cualquiera de las opciones que tenemos de la lista desplegable.

Estas opciones pueden ser cualquiera de las siguientes:

Representa los datos volcados dentro de un control DataGridView

Representa los datos volcados dentro de controles estándar como TextBox u otros controles para reflejarla como Detalle de la información

No representa ningún control como tipo de control de volcado de datos

En el caso de la tabla Socios que usaremos como tabla padre, cambiaremos la representación por defecto de DataGridView para indicarle que nos represente la información en controles, tal y como se indica en la figura 23.

Figura 23. Tabla Socios seleccionada en la ventana de Orígenes de datos como Detalle

Ahora que tenemos la tabla maestra ya preparada, pasaremos a preparar la tabla hija.

Preparando la tabla hija

137 | P á g i n a

Page 138: Portafolio Programacion I 2012

Ahora que ya tenemos preparada la tabla tabla padre, prepararemos la tabla hija de los alquileres de las películas de video, para poder usar su información dentro del formulario Windows.

Por esa razón, haga clic sobre la tabla Alquileres de la ventana de Orígenes de datos como se indica en la figura 24.

Figura 24. Tabla Alquileres de la ventana de orígenes de datos

Dentro de la ventana de Orígenes de datos y en concreto de la tabla Alquileres desplegada, centraremos nuestra atención en el campo AlquilerID y SocioNIF como se indica en la figura 25.

Figura 25. Campos AlquilerID y SocioNIF de la tabla Alquileres

Sobre el campo AlquilerID y SocioNIF, haremos una pequeña modificación. Pulse sobre la lista desplegable que aparece a la derecha del campo AlquilerID y SocioNIF y seleccione la opción Label como se indica en la figura 26.

138 | P á g i n a

Page 139: Portafolio Programacion I 2012

Figura 26. Lista desplegable de opciones de un campo de la tabla desplegada

De esta manera, el campo AlquilerID y SocioNIF quedarán modificados en la ventana Orígenes de datos como se indica en la figura 27.

Figura 27. Campo AlquilerID y SocioNIF modificados en la ventana de Orígenes de datos

A continuación, haremos clic sobre la tabla Alquileres como se indica en la figura 28, y posteriormente presionaremos sobre la lista desplegable que aparece a la derecha de la tabla.

Figura 28. Tabla Alquileres seleccionada en la ventana de Orígenes de datos

Nos aseguraremos que está seleccionada la opción DataGridView que es la que aparece por defecto.

Esto es lo que se indica en la figura 29.

139 | P á g i n a

Page 140: Portafolio Programacion I 2012

Figura 29. En la tabla Alquileres, nos aseguraremos de seleccionar la opción DataGridView

Una vez que tenemos las tabla maestra y detalle preparadas para utilizarlas, las añadiremos al formulario Windows para que tengan el funcionamiento esperado.

Incrustando los datos maestro detalle

Ya sabemos cómo crear un origen de datos, también sabemos cómo preparar los datos maestro y detalle, y por último, lo que nos queda es insertar esos datos en el formulario, y relacionar todos sus datos para que funcionen de la forma esperada.

A continuación, veremos cómo llevar a cabo esta tarea y aprenderemos a hacerlo posible de forma muy rápida y sencilla.

Incrustando la tabla padre en el formulario

Nuestra primera acción, será incrustar en el formulario los datos o tabla padre, que en nuestro caso es la formada por la tabla Socios.

Para situar los datos de la tabla Socios dentro de un formulario y en concreto como una información de detalle, bastará con arrastrar y soltar la tabla Socios sobre el formulario como se indica en la figura 30.

Figura 30. Para presentar la información como detalle, arrastraremos la tabla Socios de la ventana Orígenes de datos sobre el formulario Windows

140 | P á g i n a

Page 141: Portafolio Programacion I 2012

Observaremos que Visual Studio 2008, generará por nosotros un conjunto de componentes y controles, que por defecto tendrá una apariencia similar a la que se presenta en la figura 31.

Figura 31. Controles y Componentes de la tabla maestra añadidos al formulario Windows

Observe por un momento, que el campo NIF que declaramos como Label en la ventana de Orígenes de datos, aparece como tal en el formulario, tal y como se indica en la figura 32.

Figura 32. Campo NIF de la tabla, representado como un control Label en el formulario Windows

Si ejecutamos nuestra aplicación, observaremos que esta actúa como una típica aplicación de acceso a datos que nos permite navegar a través de los campos de la tabla Socios, tal y como se indica en la figura 33.

141 | P á g i n a

Page 142: Portafolio Programacion I 2012

Figura 33. Aplicación en ejecución de la tabla de detalle incrustada en el formulario Windows

A continuación, insertaremos en el formulario la tabla Alquileres y relacionaremos ambas tablas para que se muestren los datos relacionados, dentro del formulario Windows.

Incrustando la tabla hija en el formulario

Ya tenemos la tabla padre insertada en nuestro formulario Windows. Nuestra segunda acción, será la de incrustar en el formulario los datos o tabla hoja, que en nuestro caso es la formada por la tabla Alquileres, la cual además, posee una relación entre campos con la tabla Socios insertada anteriormente. Para llevar a cabo esta acción arrastraremos y soltaremos la tabla Alquileres sobre el formulario como se indica en la figura 34.

Figura 34. Para presentar la información de la tabla Alquileres, arrastraremos la tabla de la ventana Orígenes de datos sobre el formulario Windows

142 | P á g i n a

Page 143: Portafolio Programacion I 2012

Observe que Visual Studio 2008, genera por nosotros más componentes y controles, que por defecto tendrá una apariencia similar a la que se presenta en la figura 35.

Figura 35. Controles y Componentes de la tabla maestra y detalle añadidos al formulario Windows

Como podemos observar, el entorno de trabajo ha hecho por nosotros el trabajo más complejo para representar los datos de forma rápida y sencilla. El esquema de datos tipados, aparecía ya en nuestro proyecto cuando asignamos el correspondiente origen de datos.

Ahora lo que ha ocurrido, es que al arrastrar y soltar la tabla padre Socios de la ventana de Orígenes de datos, en el entorno se ha añadido un componente de nombre MSDNVideoDataSet que es el que permitirá relacionar el DataSet tipado con nuestros datos. Este componente será usado por la relación maestro detalle de las dos tablas añadidas al formulario.

En la figura 36, podemos ver el esquema añadido a nuestro proyecto, y el componente del que estamos hablando.

Figura 36. Esquema del DataSet tipado añadido al proyecto y su componente de relación

Ejecute la aplicación y observe el comportamiento de la misma.

143 | P á g i n a

Page 144: Portafolio Programacion I 2012

Observará por lo tanto, que los datos entre detalle y maestra, no están relacionados.Si navegamos a través de los datos de detalle a través del objeto SociosBindingNavigator, el control DataGridView no representa la relación de los datos seleccionados. Esto es lo que se muestra en la figura 37.

Figura 37. Ejecución de la aplicación confirmando que los datos mostrados no están relacionados

A continuación, la tarea que nos queda para completar el correcto funcionamiento de nuestra aplicación, es la de relacionar la tabla detalle y la tabla maestra entre sí, para que los datos que se muestran en la aplicación, estén relacionados entre sí.

Relacionando la tabla padre con la tabla hija

La tarea más sencilla es la de relacionar la tabla detalle con la tabla maestra. Es una tarea sencilla, porque Visual Studio 2008 nos proporciona las herramientas necesarias para simplificar al máximo esta tarea.

Para llevar a cabo esta tarea, haga clic sobre el control DataGridView que corresponde a los datos de la tabla maestra, y acceda a la ventana de Propiedades.

Dentro de la ventana de Propiedades, acceda a la propiedad DataSource como se indica en la figura 38.

144 | P á g i n a

Page 145: Portafolio Programacion I 2012

Figura 38. Propiedad DataSource del control DataGridView de la información maestra

Despliegue esta propiedad, y de la lista desplegable que aparece, seleccione la opción FK_Alquileres_Socios como se indica en la figura 39.

Figura 39. Asignación de la clave de relación entre las tablas

Cuando se asigna el campo de relación de las tablas, dentro de la aplicación se añade esta relación para que cuando naveguemos entre los datos de la tabla Socios aparezca toda la información de la tabla Alquileres relacionada con la tabla Socios.

Esto de lo que hablamos, está supeditado por el componente FK_Alquileres_SociosBindingSource que es lo que se indica en la figura 40.

145 | P á g i n a

Page 146: Portafolio Programacion I 2012

Figura 40. Controles y componentes incluido el de relación entre tablas, añadidos al formulario Windows

Para finalizar, ejecutaremos nuestra aplicación y comprobaremos que el funcionamiento de esta, incluida la relación entre tablas, funciona como esperábamos.

En la figura 41, podemos observar el comportamiento de nuestra aplicación en ejecución.

Figura 41. Aplicación en ejecución, mostrando la correcta relación entre las tablas

Manipulando los datos maestro - detalle

146 | P á g i n a

Page 147: Portafolio Programacion I 2012

Obviamente, los datos maestro detalle no nos sirve únicamente para insertar las tablas de datos en un formulario, mostrarlos y navegar por ellos.

Además de esto, podemos también manipular los datos maestro detalle, modificarlos, actualizarlos, borrarlos, sin hacer ninguna acción adicional.

El control BindingNavigator ya proporciona todas las características necesarias para realizar estas acciones.

Podemos personalizar el control para permitir o denegar estas acciones. Además, dentro de la ventana de Orígenes de datos, podemos seleccionar diferentes campos de las tablas y cambiar el tipo de control en el que queremos representar sus datos.

A continuación veremos un breve ejemplo de cómo manipular datos para que nos sirva de aprendizaje de cómo hacer esto posible.

 Modificando datos

Ejecute la aplicación de ejemplo que hemos diseñado hasta ahora y sitúese en alguno de sus campos.

Centrándonos en la información de la tabla Socios, cambiaremos un campo determinado, como el que se muestra en la figura 42.

Figura 42. Modificaremos el valor de un campo para que nos sirva de ejemplo

Acto seguido, cuando hayamos realizado la modificación, haremos clic sobre la opción de Guardar datos, tal y como se muestra en la figura 43.

147 | P á g i n a

Page 148: Portafolio Programacion I 2012

Figura 43. Opción del control BindingNavigator para guardar los datos modificados

Como vemos, la manipulación de datos es realmente sencilla y en la relación de datos mostrada, no tiene porqué presentarnos ninguna dificultad.

 Insertando y eliminando datos

Si queremos agregar datos, deberemos hacer clic sobre la opción Agregar nuevo del control BindingNavigator como se muestra en la figura 44.

Figura 44. Añadir un registro nuevo es realmente sencillo

De la misma manera funciona el mecanismo para eliminar un registro, tal y como se muestra en la figura 45.

Figura 45. Eliminar un registro de forma rápida

Recuerde presionar el icono si quiere que los cambios y modificaciones realizadas se mantengan. Pulsando sobre ese icono, la acción de manipulación de datos se lanza contra la base de datos.

Reflexión:

Bueno al momento de realizar la debida conexión con la base de datos si tuve algunos problemas porque no recordaba ciertas pasos y me di cuenta que había seleccionado mal algo ya que ese era el problema del porque no se cargaban las tablas de mi base de datos.

Pero pude resolverlo viendo unos videos que se facilitaron en la clase de programación para conectar la base de datos y así poder seguir paso a paso para realizar una buena conexión.

148 | P á g i n a

Page 149: Portafolio Programacion I 2012

ACTIVIDAD N°: 27 FECHA: 14/05/2012 - 15/05/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de la programación de botones de navegación

UNIDAD N° 3.3, 3.4:3.3 PROGRAMACIÓN DE MÉTODOS3.4 PROGRAMACIÓN DE BOTONES DE NAVEGACIÓN

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

149 | P á g i n a

Page 150: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

PROGRAMACIÓN DE METODOS

HIDE

Este método permite ocultar cualquier tipo de componente que este dentro del formulario:

Ejemplo:

Formulario normal:

private void button1_Click(object sender, EventArgs e) { imgmetodos.Hide(); lbmetodos.Hide(); btmetodos.Hide(); }

150 | P á g i n a

Page 151: Portafolio Programacion I 2012

Formulario Aplicando Hide:

SHOW

Este método permite mostrar cualquier tipo de componente que este dentro del formulario:

Ejemplo:

Formulario Aplicando Show:

151 | P á g i n a

Page 152: Portafolio Programacion I 2012

private void button2_Click(object sender, EventArgs e) { imgmetodos.Show(); lbmetodos.Show(); btmetodos.Show(); }

FOCUS

Este método permite poner la selección en el objeto especificado, es decir, el foco se posiciona en el control que se especificó:

Ejemplo:

Formulario Aplicando Focus:

private void button3_Click(object sender, EventArgs e) { btmetodos.Focus(); }

152 | P á g i n a

Page 153: Portafolio Programacion I 2012

CONEXIÓN A BASE DE DATOS A TRAVES DE CÓDIGO

CONCEPTOS BASICOS PARA CONECTAR UNA BASE DE DATOS A TRAVES DE CÓDIGO:

ADO.NET¿QUE ES ADO.NET?Responde a las siglas de Microsoft Activex Data Object, es un modelo de conexión y acceso a la base de datos y se caracterizan por:-Trabajar desconectados del origen de datos que se utilicen-El uso de ADO es independiente del lenguaje de programación que se utilice.El modelo de ADO esta dividido en 2 grupos:-Los proveedores de datos o Managed Data Providers-Los contenedores de datos, que aunque están vinculados a los orígenes de datos, son independientes de ellos.

NAMESPACES:ADO se basa en los siguientes espacion de nombres de acceso a datos:System.Data: proporciona las clases de acceso a datos generalesSystem.Data.Common, contienen las clases compartidas por los proveedores de datos.System.Data.OleDb, almacena las clases del proveedor de datos OLE DBSystem.Data.SqlClient, expone las clases del proveedor de datos para SQL Server.

Ejemplo:

MANAGED PROVIDERS:El Managed Provider es el proveedor de datos de la plataforma .NET que permite conectar a un origen de datos con una aplicación para recuperar y modificar información, ademas, este proveedor sirve de puente entre el origen de datos y el objeto de ADO más importante, el Dataset.

153 | P á g i n a

Page 154: Portafolio Programacion I 2012

Para utilizar los proveedores de acceso a datos debe utilizarse el NAMESPACE correspondiente:

System.Data.SqlClient: para SQL SERVERSystem.Data.OleDb para proveedores OLE DB (ACCESS)

COMPONENTES DE ADO.NET

-CLASE OLEDBCONNECTION:

Es la clase encargada de establecer la conexion con el origen de datos . Dependiendo del origen de datos que se utilice se deberá utilizar OleDbConnection o SqlConnection.Los métodos más importantes de la clase connection son:Open: Permite establecer la conexión con el origen de los datos.Close: Cierra la conexión.Create Command: Crea un objeto command.

154 | P á g i n a

Page 155: Portafolio Programacion I 2012

-CLASE OLEDBCOMMAND

Esta clase representa una declaración OLE DB que puede ser un comando SQL, un procedimiento almacenado concreto u cualquier texto que entienda el proveedor OLE DB.

Para ejecutar un comando se necesita que haya una conexión valida abierta y dependiendo del comportamiento que se desee dar al objeto Command se utilizara uno de los siguientes métodos:-ExecuteNonQuery.- se utiliza para para ejecutar consultas de acción mediante clausulas como INSERT, UPDATE, DELETE, CREATE, SET principalmente.

-ExecuteReader.- devuelve un objeto OleDbDataReader después de ejecutar una sentencia SQL de selección SELECT.

CREAR UNA CONEXIÓN A TRAVES DE CÓDIGO:1.- Diseñar un formulario con los siguientes controles:

155 | P á g i n a

Page 156: Portafolio Programacion I 2012

2.- Crear una Clase ConexionBd.cs dentro de una carpeta llamada DAC, en el proyecto que se está trabajando:

3.- Escribir el siguiente código que permite conectar a una Base de Datos ACCESS:

using System;using System.Collections.Generic;using System.Linq;using System.Text;//LIBRERIAS PARA CONECTARA A LA BASE DE DATOS (ACCESS)using System.Data.OleDb;

namespace PRACTICA_CONEXIONBD_CODIGO.DAC{ class ConexionBD { //Establece una conexion a una Base de Datos ACCESS OleDbConnection Conexion = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=D:\\basedatos.accdb"); public void EjecutarExecuteNonQuery(String sql) { Conexion.Open();//abre la conexion a la BD

156 | P á g i n a

Page 157: Portafolio Programacion I 2012

//OleDbCommand: permite realizar sentencias SQL OleDbCommand coman = new OleDbCommand(sql, Conexion); //ExecuteNonQuery: EJECUTA SENTENCIAS INSERT, UPDATE DELETE coman.ExecuteNonQuery(); Conexion.Close();//cierra la conexion a la BD }

public void EjecutarExecuteReader(String sql) { Conexion.Open(); OleDbCommand coman = new OleDbCommand(sql, Conexion); //ExecuteReader: EJECUTA SENTENCIAS SELECT coman.ExecuteReader(); Conexion.Close(); } }}

4.- Una vez creada la conexión, nos dirigimos al formulario principal y damos doble clic sobre el para escribir el siguiente código:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.ProviderBase;//LIBRERIA PARA CONECTARA A LA BASE DE DATOS (ACCESS)using System.Data.OleDb;//RUTA DONDE SE ENCUENTRA LA CLASE ConexionBDusing PRACTICA_CONEXIONBD_CODIGO.DAC;

namespace PRACTICA_CONEXIONBD_CODIGO{ public partial class Form1 : Form { public Form1() { InitializeComponent(); ListarDatos(); }

//CODIGO PARA LA CONEXION A LA BASE DE DATOS ////////////////////////////////////////

//Creamos una instancia de la Clase ConexionBD ConexionBD Conexion = new ConexionBD();

157 | P á g i n a

Page 158: Portafolio Programacion I 2012

//creamos la clase cliente public class Cliente { public String id; public String nombre; public String apellido; public String direccion; }

//creamos la clase que lee los datos del formulario public Cliente leer() { Cliente cli = new Cliente(); cli.nombre = txtnombre.Text; cli.apellido = txtapellido.Text; cli.direccion = txtdireccion.Text; return cli; }

//clase que permite insertar en la BD los datos leidos en la clase anterior public void guardar(Cliente cli) { try { //Sentencia SQL para INSERTAR String sql = ("INSERT INTO clientes(nombre,apellido,direccion) VALUES('" + cli.nombre + "','" + cli.apellido + "','" + cli.direccion + "')"); //ejecuta la sentencia sql Conexion.EjecutarExecuteNonQuery(sql); } catch (Exception ex) { MessageBox.Show("Error al insertar en la bd: " + ex + " .");

} }

//////////////////////////////////////////////////////////////////////////

private void ListarDatos() {OleDbConnection conex = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\basedatos.accdb"); OleDbCommand coman = new OleDbCommand("SELECT * From clientes",conex);

conex.Open();

//executereader se usa solo es SELECT y ExecuteNonQuery para INSERT UPDATE DELETE OleDbDataReader lee = coman.ExecuteReader(); while (lee.Read()) {

158 | P á g i n a

Page 159: Portafolio Programacion I 2012

String[] filas = { lee[0].ToString(), lee[1].ToString(), lee[2].ToString(), lee[3].ToString() }; grid_datos.Rows.Add(filas); } lee.Close(); conex.Close(); }

public void habilitar_textos(Boolean ok) { txtnombre.Enabled = ok; txtapellido.Enabled = ok; txtdireccion.Enabled = ok; }

public void limpiar_textos() { txtnombre.Text = ""; txtapellido.Text = ""; txtdireccion.Text = ""; }

public void habilitar_botones(Boolean ok) { btingresar.Enabled = !ok; btnuevo.Enabled = ok; }

private void button1_Click(object sender, EventArgs e) { guardar(leer()); MessageBox.Show("Añadido", "Se añadio el registro", MessageBoxButtons.OK, MessageBoxIcon.Information); grid_datos.Rows.Clear(); ListarDatos(); habilitar_textos(false); habilitar_botones(true); }

private void bteliminar_Click(object sender, EventArgs e) { limpiar_textos(); habilitar_textos(true); habilitar_botones(false); }

private void button3_Click(object sender, EventArgs e) { this.Hide(); frmmenu frm = new frmmenu(); frm.Show(); } }}

159 | P á g i n a

Page 160: Portafolio Programacion I 2012

5.- Diseñar una Base de Datos en Access con el siguiente formato:

6.- Ejecutar el programa y empezar a guardar datos:

160 | P á g i n a

Page 161: Portafolio Programacion I 2012

PROGRAMACION DE BOTONES DE NAVEGACIÓN

CONCEPTOS BASICOS PARA PROGRAMAR BOTONES DE NAVEGACIÓN (INICIO, ATRÁS, SIGUIENTE, FIN)

-CLASE DATA ADAPTER

La clase DataAdapter se encarga de las operaciones entre la capa de datos y la capa intermedia, donde los datos son transferidos, se puede decir que es como un puente entre un objeto DataSet y un origen de datos asociados para recuperar y guardar datos.

Los principales constructores de la clase son:

-Fill (DataSet ds). Rellena un objeto de la clase Data set.

-Update (Data Set ds). Actualiza el DataSet correspondiente.

-CLASE DATASET

La clase DataSet es la clase principal de la arquitectura ADO.NET. Un objeto de esta clase es una representación en memoria de los datos en forma relacional, El Objeto DataSet se rellena con DataAdapters o con datos locales.

-CLASE DATATABLE

La clase DataTable representa una tabla en memoria y es donde reside la información de los datos.

-CLASE DATACOLUMN

El conjunto de columnas de un objeto DataTable corresponde a una colección de objetos DataColumn.

-CLASE DATAROW

El conjunto de filas de un objeto DataTable corresponde a una colección de objetos DataRow.

CREAR BOTONES DE NAVEGACION DE REGISTROS DE UNA BASE DE DATOS:

1.- Diseñar un formulario con los siguientes controles:

161 | P á g i n a

Page 162: Portafolio Programacion I 2012

2.- Dar doble clic en el formulario y programar el siguiente código:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;//LIBRERIA PARA CONECTARA A LA BASE DE DATOS (ACCESS)using System.Data.OleDb;

namespace PRACTICA_CONEXIONBD_CODIGO{ public partial class frmcodigoconexionbd : Form { public frmcodigoconexionbd() { InitializeComponent(); }

//CODIGO PARA MOVER LOS REGISTROS A TRAVES DEL DATA ADAPTER private DataTable tabladedatos; private OleDbDataAdapter DataAdapter; private int fila;

private void mostrarDatos(int f) { //cuenta el numero de filas de la tabla de datos int uf = tabladedatos.Rows.Count - 1; //si el parametro recibido es menor que 0 y menor que el numero de filas de la consulta if (f < 0 || uf < 0) return; //almacena la fila de datos

162 | P á g i n a

Page 163: Portafolio Programacion I 2012

DataRow dr = tabladedatos.Rows[f]; txtId.Text = dr["id"].ToString(); txtNombre.Text = dr["nombre"].ToString(); txtApellido.Text = dr["apellido"].ToString(); txtDireccion.Text = dr["direccion"].ToString(); //btactualizar.Enabled = true; }

private void frmcodigoconexionbd_Load(object sender, EventArgs e) { string Conex = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=D:\\basedatos.accdb"; string Sentencia = "SELECT * FROM clientes";

// Crear un nuevo objeto del tipo DataAdapter DataAdapter = new OleDbDataAdapter(Sentencia, Conex); // Crear un nuevo objeto del tipo DataTable tabladedatos = new DataTable();

// Llenar la tabla con los datos indicados DataAdapter.Fill(tabladedatos); // Mostrar el primer registro if (tabladedatos.Rows.Count > 0) { btinicio_Click(null,null); } else { fila = -1; //btactualizar.Enabled = false; } }

private void btinicio_Click(object sender, EventArgs e) { // Posicionarse en la primera fila fila = 0; // Mostrar los datos de la fila indicada mostrarDatos(fila); }

private void btatras_Click(object sender, EventArgs e) { // Posicionarse en la fila anterior fila = fila - 1; if (fila < 0) fila = 0; // Mostrar los datos de la fila indicada mostrarDatos(fila); }

private void btsiguiente_Click(object sender, EventArgs e) { // Posicionarse en la fila siguiente

163 | P á g i n a

Page 164: Portafolio Programacion I 2012

int uf = tabladedatos.Rows.Count - 1; fila = fila + 1; if (fila > uf) fila = uf; // Mostrar los datos de la fila indicada mostrarDatos(fila); }

private void btfin_Click(object sender, EventArgs e) { // Posicionarse en la última fila fila = tabladedatos.Rows.Count - 1; // Mostrar los datos de la fila indicada mostrarDatos(fila); }

private void button3_Click(object sender, EventArgs e) { this.Hide(); frmmenu frm = new frmmenu(); frm.Show(); } }}

3.- Ejecutar el programa y verificar los botones de navegación:

164 | P á g i n a

Page 165: Portafolio Programacion I 2012

ACTIVIDAD N°: 28 FECHA: 21/05/2012 - 22/05/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de las tareas de ingresar, modificar, eliminar registros.

UNIDAD N° 3.5: OPERACIONES CRUD

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

165 | P á g i n a

Page 166: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

BOTONES PARA EL MANEJO DE FORMULARIOS

Creación del Formulario:

Primeramente, el formulario se lo creó con los siguientes botones:

Añadir.

Modificar.

Eliminar.

Aceptar.

Cancelar.

Ahora veremos que realiza cada botón según la siguiente imagen:

166 | P á g i n a

Aquí se insertarán los datos.

Botón para cambiar los datos de algún

ingreso.

Botón para eliminar los registros.

Botón para guardar los registros.

Botón para borrar lo que estemos

digitando.

Tabla donde se mostrará todos los

registros.

Botón para habilitar los cuadros de textos.

Page 167: Portafolio Programacion I 2012

A continuación se explicará cada botón, su funcionamiento y su codificación:

Añadir y Aceptar Registro.

Para añadir un registro, simplemente daremos clic en el botón AÑADIR, el cual automáticamente habilitará los cuadros de texto y a su vez los botones de ACEPTAR y CANCELAR.

Una vez que todos los campos estén llenos daremos clic en el botón ACEPTAR y listo nuestro registro se guardará y se visualizará en la tabla de abajo.

167 | P á g i n a

Page 168: Portafolio Programacion I 2012

Para el botón Añadir, su codificación es el que encontramos a continuación:

private void btnAñadir_Click_1(object sender, EventArgs e)

{

btnAñadir.Enabled = false;

btnAceptar.Enabled = true;

btnCancel.Enabled = true;

txtcedula.Enabled = true;

txtnombre.Enabled = true;

txtapellido.Enabled = true;

txtdireccion.Enabled = true;

txtedad.Enabled = true;

txttelefono.Enabled = true;

limpiar_cajas();

bandera = 0;

}

Primero se da doble click en el botón AÑADIR que se encuentra en la interfaz y automáticamente se crea un evento para poder codificar dentro de él. Cada una de estas líneas de código sirven para dejar habilitado y deshabilitado los botones de Aceptar, Cancelar, Añadir, también se aplica en las cajas de texto.

Además encontramos el método “limpiar_cajas()” que nos sirve para que todos los datos que se encuentren escritos en la cajas de texto se vuelva a dejar en blanco, listo para volver ingresar un nuevo registro.

Para el botón Aceptar, su codificación es la que encontramos a continuación:

private void btnAceptar_Click_1(object sender, EventArgs e)

{

try

{

conexion.Open();

if (bandera == 0)

{

168 | P á g i n a

Page 169: Portafolio Programacion I 2012

//OleDbCommand sirve para crear comandos tipo sentencias SQL

OleDbCommand insertar = new OleDbCommand("INSERT into Persona(Cedula, Nombre, Apellido, Direccion, Edad, Telefono ) values('" + txtcedula.Text.ToString() + "','" + txtnombre.Text.ToString() + "','" + txtapellido.Text.ToString() + "','" + txtdireccion.Text.ToString() + "','" + Convert.ToInt16(txtedad.Text.ToString()) + "','" + txttelefono.Text.ToString()+"')", conexion);

//OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand

OleDbDataAdapter dainsertar = new OleDbDataAdapter();

dainsertar.InsertCommand = insertar;

dainsertar.InsertCommand.ExecuteNonQuery();

txtcedula.Enabled = false;

txtnombre.Enabled = false;

txtapellido.Enabled = false;

txtdireccion.Enabled = false;

txtedad.Enabled = false;

txttelefono.Enabled = false;

limpiar_cajas();

}

else

{

//OleDbCommand sirve para crear comandos tipo sentencias SQL

OleDbCommand actualizar = new OleDbCommand("UPDATE Persona SET Nombre='" + txtnombre.Text.ToString() + "',Apellido='" + txtapellido.Text.ToString() + "',Direccion='" + txtdireccion.Text.ToString() + "',Edad='" + Convert.ToInt16(txtedad.Text.ToString()) + "',Telefono='" + txttelefono.Text.ToString() + "' where Cedula='" + txtcedula.Text.ToString()+"' ", conexion);

//OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand

OleDbDataAdapter daactualizar = new OleDbDataAdapter();

daactualizar.UpdateCommand = actualizar;

// ExecuteNonQuery() sirve para ejecutar sentencias SQL(generalmente es usado para sentencias Insert, Delete, Update, Truncate)

// ExecuteReader() sirve para ejecutar sentencias SQL(select)

daactualizar.UpdateCommand.ExecuteNonQuery();

}

listar_datos();

}

catch

{

}

169 | P á g i n a

Page 170: Portafolio Programacion I 2012

finally

{

if (conexion.State == ConnectionState.Open)

{

conexion.Close();

}

}

}

}

}

Este botón se encarga de guardar todos los datos que se hayan ingresado en las cajas de texto e inmediatamente se presentará en la tabla que se encuentra debajo.

Modificar Registro.

Para modificar un registro, lo primero que hacemos es seleccionar en la tabla el registro y seguidamente dar clic en el botón MODIFICAR, el cual habilitará esos datos y podremos modificar el campo que deseemos.

Luego de esto daremos clic en ACEPTAR, y el registro de modificará. En este caso trabajamos con el campo apellido el cual se cambió de “Lima” a “Serrano”.

170 | P á g i n a

Page 171: Portafolio Programacion I 2012

Su codificación es la siguiente:

private void btnModificar_Click(object sender, EventArgs e)

{

btnAñadir.Enabled = false;

btnModificar.Enabled = false;

btnAceptar.Enabled = true;

btnCancel.Enabled = true;

txtnombre.Enabled = true;

txtapellido.Enabled = true;

txtdireccion.Enabled = true;

txtedad.Enabled = true;

txttelefono.Enabled = true;

bandera = 1;

}

private void frmexposicion_Load(object sender, EventArgs e)

171 | P á g i n a

Page 172: Portafolio Programacion I 2012

{

listar_datos();

}

public void listar_datos()

{

// la variable canal es tipo OleDbDataAdapter sta servira para hacer de canal entre el DataSet y un origen de datos para recuperar y guardar los datos.

OleDbDataAdapter canal = new OleDbDataAdapter("SELECT * FROM Persona ", conexion);

DataSet mibd = new DataSet();

canal.Fill(mibd, "Persona");

// sirve para darle un origen de datos a la grilla

grilla_datos.DataSource = mibd;

grilla_datos.DataMember = "Persona";

grilla_datos.Update();

}

// el evento SelectionChanged permite obtener los datos que hayamos seleccionado en un grilla

private void grilla_datos_SelectionChanged(object sender, EventArgs e)

{

try

{

//CurrentRow sirve para obtener la fila actual dond se encuentra el puntero o la seleccion dentro de la grilla.-

// .Value es para obtener el valor o contenido que se encuentra dentro de la Fila(columna) seleccionada.

// se los debe convertir a tipo string porq mientras constan en la grilla mantienen el mismo tipo de datos de origen

txtcedula.Text = grilla_datos.CurrentRow.Cells[1].Value.ToString();

txtnombre.Text = grilla_datos.CurrentRow.Cells[2].Value.ToString();

txtapellido.Text = grilla_datos.CurrentRow.Cells[3].Value.ToString();

txtdireccion.Text = grilla_datos.CurrentRow.Cells[4].Value.ToString();

txtedad.Text = grilla_datos.CurrentRow.Cells[5].Value.ToString();

txttelefono.Text = grilla_datos.CurrentRow.Cells[6].Value.ToString();

172 | P á g i n a

Page 173: Portafolio Programacion I 2012

txtcedula.Enabled = false;

txtnombre.Enabled = false;

txtapellido.Enabled = false;

txtdireccion.Enabled = false;

txtedad.Enabled = false;

txttelefono.Enabled = false;

}

catch

{

}

}

En este botón, no es necesario llenar nuevamente todos los campos para que se pueda modificar, basta con llenar el campo que se desea cambiar para que se guarde los demás igual. La codificación que se encuentra en la parte de arriba sirve para que pueda actuar este botón.

Eliminar Registro.

Primeramente seleccionamos el registro de la tabla que deseemos eliminar.

Seguidamente damos clic en el botón ELIMINAR, y como podemos observar en el gráfico de abajo, el registro con Id número “11” se ha eliminado.

173 | P á g i n a

Page 174: Portafolio Programacion I 2012

Su codificación es la siguiente:

private void btnEliminar_Click(object sender, EventArgs e)

{

try

{

conexion.Open();

{

OleDbCommand eliminar = new OleDbCommand("DELETE FROM Persona where Cedula='" + txtcedula.Text.ToString() + "'", conexion);

//OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand

OleDbDataAdapter deliminar = new OleDbDataAdapter();

deliminar.DeleteCommand = eliminar;

deliminar.DeleteCommand.ExecuteNonQuery();

}

listar_datos();

}

catch

{

}

finally

{

174 | P á g i n a

Page 175: Portafolio Programacion I 2012

if (conexion.State == ConnectionState.Open)

{

conexion.Close();

}

}

}

En este botón se aplica la sentencia SQL para poder eliminar un registro, solo basta con seleccionar el registro y presionamos eliminar y se borra automáticamente.

Cancelar Registro.

Simplemente daremos clic en el botón CANCELAR y nuestros cuadros de texto se pondrán en blanco, es decir, todo lo que hayamos ingresado en ellos se borrará

Su codificación es la siguiente:

private void btnCancel_Click(object sender, EventArgs e)

{

175 | P á g i n a

Page 176: Portafolio Programacion I 2012

limpiar_cajas();

btnAñadir.Enabled = true;

btnModificar.Enabled = true;

btnAceptar.Enabled = false;

btnCancel.Enabled = false;}

Lo que realiza este botón es solamente todos los botones habilitarlos o deshabilitarlos (Añadir, Modificar, Aceptar, Cancelar) y dejar las cajas de texto sin nada de escritos.

Ahora la codificación de toda la aplicación es la siguiente:

CODIGO DE LA APLICACIÓN

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

// DATA son para datos..

// sirve para poder utilizar todas las referencias para hacer uso de BD en ACCESS

using System.Data.OleDb;

using System.Data.SqlClient;

//Proporciona una implementación base para el modelo de proveedor extensible

using System.Data.ProviderBase;

using System.Data.Common;

using System.Data;

namespace exposicion

{

176 | P á g i n a

Page 177: Portafolio Programacion I 2012

public partial class frmexposicion : Form

{

static OleDbConnection conexion = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\\Users\\Usu\\Documents\\Visual Studio 2010\\Projects\\exposicion\\dbexposicion1.accdb");

//sirve para tener una referencia para cuando necesite guardar cambias

// tendra un valor 0 cuando se requiera ingresar un nuevo elemento

// valor = 1 cuando se trate de modificar.

static int bandera = 0;

public frmexposicion()

{

InitializeComponent();

btnAceptar.Enabled=false;

btnCancel.Enabled = false;

}

public void limpiar_cajas()

{

// limpiar cajas de texto

txtcedula.Clear();

txtnombre.Clear();

txtapellido.Clear();

txtdireccion.Clear();

txtedad.Clear();

txttelefono.Clear();

}

private void btnModificar_Click(object sender, EventArgs e)

{

btnAñadir.Enabled = false;

btnModificar.Enabled = false;

btnAceptar.Enabled = true;

177 | P á g i n a

Page 178: Portafolio Programacion I 2012

btnCancel.Enabled = true;

txtnombre.Enabled = true;

txtapellido.Enabled = true;

txtdireccion.Enabled = true;

txtedad.Enabled = true;

txttelefono.Enabled = true;

bandera = 1;

}

private void frmexposicion_Load(object sender, EventArgs e)

{

listar_datos();

}

public void listar_datos()

{

// la variable canal es tipo OleDbDataAdapter sta servira para hacer de canal entre el DataSet y un origen de datos para recuperar y guardar los datos.

OleDbDataAdapter canal = new OleDbDataAdapter("SELECT * FROM Persona ", conexion);

DataSet mibd = new DataSet();

canal.Fill(mibd, "Persona");

// sirve para darle un origen de datos a la grilla

grilla_datos.DataSource = mibd;

grilla_datos.DataMember = "Persona";

grilla_datos.Update();

}

// el evento SelectionChanged permite obtener los datos que hayamos seleccionado en un grilla

private void grilla_datos_SelectionChanged(object sender, EventArgs e)

{

try

{

//CurrentRow sirve para obtener la fila actual dond se encuentra el puntero o la seleccion dentro de la grilla.-

// .Value es para obtener el valor o contenido que se encuentra dentro de la Fila(columna) seleccionada.

178 | P á g i n a

Page 179: Portafolio Programacion I 2012

// se los debe convertir a tipo string porq mientras constan en la grilla mantienen el mismo tipo de datos de origen

txtcedula.Text = grilla_datos.CurrentRow.Cells[1].Value.ToString();

txtnombre.Text = grilla_datos.CurrentRow.Cells[2].Value.ToString();

txtapellido.Text = grilla_datos.CurrentRow.Cells[3].Value.ToString();

txtdireccion.Text = grilla_datos.CurrentRow.Cells[4].Value.ToString();

txtedad.Text = grilla_datos.CurrentRow.Cells[5].Value.ToString();

txttelefono.Text = grilla_datos.CurrentRow.Cells[6].Value.ToString();

txtcedula.Enabled = false;

txtnombre.Enabled = false;

txtapellido.Enabled = false;

txtdireccion.Enabled = false;

txtedad.Enabled = false;

txttelefono.Enabled = false;

}

catch

{

}

}

private void btnEliminar_Click(object sender, EventArgs e)

{

try

{

conexion.Open();

{

OleDbCommand eliminar = new OleDbCommand("DELETE FROM Persona where Cedula='" + txtcedula.Text.ToString() + "'", conexion);

//OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand

OleDbDataAdapter deliminar = new OleDbDataAdapter();

deliminar.DeleteCommand = eliminar;

deliminar.DeleteCommand.ExecuteNonQuery();

}

179 | P á g i n a

Page 180: Portafolio Programacion I 2012

listar_datos();

}

catch

{

}

finally

{

if (conexion.State == ConnectionState.Open)

{

conexion.Close();

}

}

}

private void btnCancel_Click(object sender, EventArgs e)

{

limpiar_cajas();

btnAñadir.Enabled = true;

btnModificar.Enabled = true;

btnAceptar.Enabled = false;

btnCancel.Enabled = false;

}

private void btnAñadir_Click_1(object sender, EventArgs e)

{

btnAñadir.Enabled = false;

btnAceptar.Enabled = true;

btnCancel.Enabled = true;

txtcedula.Enabled = true;

txtnombre.Enabled = true;

txtapellido.Enabled = true;

txtdireccion.Enabled = true;

180 | P á g i n a

Page 181: Portafolio Programacion I 2012

txtedad.Enabled = true;

txttelefono.Enabled = true;

limpiar_cajas();

bandera = 0;

}

private void btnAceptar_Click_1(object sender, EventArgs e)

{

try

{

conexion.Open();

if (bandera == 0)

{

//OleDbCommand sirve para crear comandos tipo sentencias SQL

OleDbCommand insertar = new OleDbCommand("INSERT into Persona(Cedula, Nombre, Apellido, Direccion, Edad, Telefono ) values('" + txtcedula.Text.ToString() + "','" + txtnombre.Text.ToString() + "','" + txtapellido.Text.ToString() + "','" + txtdireccion.Text.ToString() + "','" + Convert.ToInt16(txtedad.Text.ToString()) + "','" + txttelefono.Text.ToString()+"')", conexion);

//OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand

OleDbDataAdapter dainsertar = new OleDbDataAdapter();

dainsertar.InsertCommand = insertar;

dainsertar.InsertCommand.ExecuteNonQuery();

txtcedula.Enabled = false;

txtnombre.Enabled = false;

txtapellido.Enabled = false;

txtdireccion.Enabled = false;

txtedad.Enabled = false;

txttelefono.Enabled = false;

limpiar_cajas();

}

else

{

//OleDbCommand sirve para crear comandos tipo sentencias SQL

181 | P á g i n a

Page 182: Portafolio Programacion I 2012

OleDbCommand actualizar = new OleDbCommand("UPDATE Persona SET Nombre='" + txtnombre.Text.ToString() + "',Apellido='" + txtapellido.Text.ToString() + "',Direccion='" + txtdireccion.Text.ToString() + "',Edad='" + Convert.ToInt16(txtedad.Text.ToString()) + "',Telefono='" + txttelefono.Text.ToString() + "' where Cedula='" + txtcedula.Text.ToString()+"' ", conexion);

//OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand

OleDbDataAdapter daactualizar = new OleDbDataAdapter();

daactualizar.UpdateCommand = actualizar;

// ExecuteNonQuery() sirve para ejecutar sentencias SQL(generalmente es usado para sentencias Insert, Delete, Update, Truncate)

// ExecuteReader() sirve para ejecutar sentencias SQL(select)

daactualizar.UpdateCommand.ExecuteNonQuery();

}

listar_datos();

}

catch

{

}

finally

{

if (conexion.State == ConnectionState.Open)

{

conexion.Close();

}

}

}

}}

182 | P á g i n a

Page 183: Portafolio Programacion I 2012

ACTIVIDAD N°: 29 FECHA: 28/05/2012 - 29/05/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de los principales controles que se pueden utilizar en C#

UNIDAD N° 3.6: PRINCIPALES CONTROLES

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

183 | P á g i n a

Page 184: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Control, control de usuario y formulario

La mayoría de las clases del espacio de nombres System.Windows.Forms derivan de la

clase Control. La clase Control proporciona la funcionalidad base de todos los controles

que se muestran en un objeto Form. La clase Form representa una ventana dentro de

una aplicación. Incluye cuadros de diálogo, ventanas no modales y ventanas cliente y

principal de la Interfaz de documentos múltiples (MDI). También puede crear sus propios

controles derivando de la clase UserControl.

Menús y barras de herramientas

Windows.Forms contiene un amplio conjunto de clases para que pueda crear sus propias

barras de herramientas y menús personalizadas, con un aspecto y comportamiento

modernos (apariencia y percepción). Las clases ToolStrip, MenuStrip, ContextMenuStripy

StatusStrip se pueden utilizar para crear barras de herramientas, barras de menús,

menús contextuales y barras de estado, respectivamente.

Controles

El espacio de nombres System.Windows.Forms dispone de diferentes clases de

controles que se pueden utilizar para crear interfaces de usuario completas. Algunos

controles están diseñados para la entrada de datos en la aplicación, por ejemplo, los

controles TextBox y ComboBox. Otros controles muestran datos de la aplicación, por

ejemplo, Label y ListView. El espacio de nombres también dispone de controles para

invocar comandos en la aplicación, por ejemplo, Button. El control WebBrowser y las

clases HTML administradas, como HtmlDocument, permiten mostrar y manipulan páginas

HTML desde su propia aplicación administrada de formularios Windows Forms. El control

MaskedTextBox es un control de entrada de datos avanzado que permite definir

máscaras que aceptan o rechazan automáticamente los datos proporcionados por el

usuario. Además, puede utilizar el control PropertyGrid para crear su propio Diseñador de

Windows Forms que muestra las propiedades visibles de diseñador de los controles.

Diseño

Hay varias clases importantes en Windows.Forms que ayudan a controlar el diseño de los

controles en una superficie de presentación, como un formulario o

control.FlowLayoutPanel dispone en serie todos los controles que contiene y

TableLayoutPanel permite definir celdas y filas para disponer los controles en una

184 | P á g i n a

Page 185: Portafolio Programacion I 2012

cuadrícula fija. SplitContainer divide la superficie de presentación en dos o más partes

ajustables.

Datos y enlace de datos

Windows.Forms define una arquitectura enriquecida para enlazar a los orígenes de datos

como las bases de datos y los archivos XML. El control DataGridView proporciona una

tabla personalizable para mostrar los datos y le permite personalizar celdas, filas,

columnas y bordes. El control BindingNavigator representa una forma estandarizada de

explorar datos y trabajar con ellos en un formulario; BindingNavigator se empareja

frecuentemente con el control BindingSource para recorrer los registros de datos de un

formulario e interactuar con ellos.

Componentes

Además de los controles, el espacio de nombres System.Windows.Forms proporciona

otras clases que, aunque no se derivan de la clase Control, también aportan

características visuales a las aplicaciones basadas en Windows. Algunas clases, como

ToolTip y ErrorProvider, amplían las capacidades o proporcionan información al usuario.

Con las clases Help y HelpProvider, puede mostrar información de Ayuda al usuario de

sus aplicaciones.

Cuadros de diálogo comunes

Windows proporciona varios cuadros de diálogo comunes que se pueden utilizar para

ofrecer a la aplicación una interfaz de usuario coherente a la hora de realizar tareas como

abrir y guardar archivos, manipular la fuente o el color del texto o imprimir. Las clases

OpenFileDialog y SaveFileDialog proporcionan la funcionalidad para mostrar un cuadro

de diálogo que permita al usuario buscar o escribir el nombre del archivo que desea abrir

o guardar. La clase FontDialog muestra un cuadro de diálogo para cambiar los elementos

del objeto Font que utiliza la aplicación. Las clases PageSetupDialog, PrintPreviewDialog

y PrintDialog muestran cuadros de diálogo que permiten al usuario controlar la impresión

de documentos. Para obtener más información sobre cómo imprimir desde una aplicación

basada en Windows, vea el espacio de nombres System.Drawing.Printing. Además de los

cuadros de diálogo comunes, el espacio de nombres System.Windows.Forms dispone

de la clase MessageBox para mostrar un cuadro de mensaje que pueda presentar datos

del usuario y también recuperarlos de éste.

185 | P á g i n a

Page 186: Portafolio Programacion I 2012

186 | P á g i n a

Page 187: Portafolio Programacion I 2012

187 | P á g i n a

Page 188: Portafolio Programacion I 2012

DESCRIPCIÓN Y EJEMPLO DE CONTROLES:

TEXTBOX

Un control TextBox acepta datos del usuario en un formulario.

CREACIÓN DE UN CUADRO DE TEXTO

Para crear un control TextBox en tiempo de diseño, sólo tiene que arrastrar y soltar un control TextBox desde Caja de herramientas a un formulario en Visual Studio. Después de arrastrar y colocar un cuadro de texto en un formulario, el cuadro de texto se parece. Una vez que un cuadro de texto está en el formulario, puede moverse y cambiar su tamaño a través del ratón y establecer sus propiedades y eventos.

188 | P á g i n a

Page 189: Portafolio Programacion I 2012

ESTABLECER LAS PROPIEDADES DE TEXTBOXDespués de colocar un control TextBox en un formulario, el siguiente paso es establecer las propiedades.La forma más fácil es establecer las propiedades de la ventana Propiedades. Puede abrir la ventana Propiedades presionando F4 o haga clic derecho sobre un control y seleccionar la opción Propiedades del menú.

UBICACIÓN, ALTURA, ANCHURA Y TAMAÑO

189 | P á g i n a

Page 190: Portafolio Programacion I 2012

La propiedad Location toma un punto que especifica la posición inicial del cuadro de texto en un formulario. La propiedad Tamaño especifica el tamaño del control. También podemos utilizar la propiedad Ancho y Altura lugar de la propiedad Tamaño

FONDO, PRIMER PLANO, BORDERSTYLELas propiedades BackColor y ForeColor se utilizan para establecer el fondo y el color de primer plano de un cuadro de texto, respectivamente. Si hace clic sobre estas propiedades en la ventana de Propiedades, el cuadro de diálogo de color aparece.

NOMBRENombre de la propiedad representa un nombre único de un control TextBox.

TEXTO, TEXTALIGN Y TEXTLENGTH Propiedad Text de un cuadro de texto representa el texto actual de un control TextBox. La propiedad TextAlign representa la alineación del texto que puede ser de Izquierda, Centro o Derecha. La propiedad textLength devuelve la longitud del contenido de un TextBox.

FUENTE Propiedad Font representa la fuente del texto de un control TextBox. Si hace clic en la propiedad Font en la ventana de Propiedades, verá el nombre de fuente, tamaño y otras opciones de la fuente.

CONTRASEÑA CARÁCTER Y EL CARÁCTER DE LA CARCASAPropiedad PasswordChar se utiliza para aplicar máscara en un cuadro de texto cuando necesite usarlo para un ingreso de la contraseña y hacer ahora lo que la contraseña sea fácil de leer. Por ejemplo, puede colocar una estrella (*) para caracteres de la contraseña.

LONGITUD MÁXIMAPuede restringir el número de caracteres en un control TextBox estableciendo la propiedad MaxLength. El fragmento de código siguiente se establece la duración máxima de un cuadro de texto de 50 caracteres.

COMBOBOX

Un control ComboBox es una combinación de un control TextBox y un control ListBox. Sólo un elemento de la lista se muestra a la vez en un ComboBox y otros artículos disponibles son cargados en una lista desplegable.

CREACIÓN DE UN COMBOBOXPodemos crear un control ComboBox con un diseñador de formularios en tiempo de diseño. Para crear un control ComboBox en tiempo de diseño, sólo tiene que arrastrar y soltar un control ComboBox desde Caja de herramientas a un formulario en Visual Studio. Después de arrastrar y soltar un ComboBox en un formulario. Una vez que un ComboBox es en el formulario, puede moverse y cambiar su tamaño a través del ratón y establecer sus propiedades y eventos.

190 | P á g i n a

Page 191: Portafolio Programacion I 2012

ESTABLECER LAS PROPIEDADES DE COMBOBOXDespués de colocar un control ComboBox en un formulario, el siguiente paso es establecer las propiedades.La forma más fácil es establecer las propiedades de la ventana Propiedades. Puede abrir la ventana Propiedades presionando F4 o haga clic derecho sobre un control y seleccionar la opción Propiedades del menú.

NOMBRENombre de la propiedad representa un nombre único de un control ComboBox. Se utiliza para acceder al control en el código.

191 | P á g i n a

Page 192: Portafolio Programacion I 2012

UBICACIÓN, ALTURA, ANCHURA Y TAMAÑOLa propiedad Location toma un punto que especifica la posición inicial del ComboBox en un formulario. También puede utilizar las propiedades Left y Top para especificar la ubicación de un control de la esquina superior izquierda del formulario. La propiedad Tamaño especifica el tamaño del control.

DROPDOWNHEIGHT Y DROPDOWNWIDTHUsted puede controlar el tamaño del área desplegable de un ComboBox. Las propiedades DropDownHeight y dropdownWidth representan la altura y la anchura de la zona desplegable de píxeles respectivamente. Si las propiedades dropdownWidth y DropDownHeight son inferiores a los valores de anchura y altura, no será aplicable. Si todos los elementos que no caben en el tamaño de la zona desplegable, las barras de desplazamiento aparecerán.

FUENTE

Propiedad Font representa la fuente del texto de un control ComboBox. Si hace clic en la propiedad Font en la ventana de Propiedades, verá el nombre de fuente, tamaño y otras opciones de la fuente.

Fondo y primer planoLas propiedades BackColor y ForeColor se utilizan para establecer el fondo y el color de primer plano de un ComboBox, respectivamente. Si hace clic sobre estas propiedades en la ventana de Propiedades, el cuadro de diálogo de color aparece.

ARTÍCULOS COMBOBOXLa propiedad Ítems se utiliza para agregar y trabajar con los elementos de un ComboBox. Podemos añadir elementos a un ComboBox en tiempo de diseño desde la ventana de Propiedades, haga clic en la colección de elementos.

192 | P á g i n a

Page 193: Portafolio Programacion I 2012

Al hacer clic en las colecciones, la colección de cadenas ventana del editor se abrirá donde usted puede escribir una cadena. Cada línea de agregar a esta colección se convertirá en un elemento de ComboBox.

193 | P á g i n a

Page 194: Portafolio Programacion I 2012

PICTUREBOX

Control PictureBox se utiliza para mostrar imágenes en Windows Forms.

CREACIÓN DE UN PICTUREBOX

MOSTRAR UNA IMAGENPropiedad Image se utiliza para establecer una imagen que se mostrará en un control PictureBox.

SIZEMODE

Propiedad SizeMode se utiliza para colocar una imagen en un cuadro de imagen. Puede ser normal, StretchImage, AutoSize, CenterImage, y Zoom.

LISTBOX

194 | P á g i n a

Page 195: Portafolio Programacion I 2012

Un control ListBox proporciona una interfaz para visualizar una lista de elementos. Los usuarios pueden seleccionar uno o varios elementos forman la lista. Un ListBox se puede utilizar para mostrar varias columnas y estas columnas pueden tener imágenes y otros controles.

CREACIÓN DE UN LISTBOXHay dos enfoques para crear un control ListBox de formularios Windows Forms. En tiempo de diseñoPara crear un control ListBox en tiempo de diseño, simplemente arrastre y suelte un control ListBox de caja de herramientas a un formulario en Visual Studio. Después de arrastrar y soltar un control ListBox en un formulario, el control ListBox aparecerá. Una vez que un ListBox es en el formulario, puede moverse y cambiar su tamaño a través del ratón y establecer sus propiedades y eventos.

ESTABLECER LAS PROPIEDADES DE LISTBOXLa forma más fácil es establecer las propiedades de la ventana Propiedades. Puede abrir la ventana Propiedades presionando F4 o haga clic derecho sobre un control y seleccionar la opción Propiedades del menú.

195 | P á g i n a

Page 196: Portafolio Programacion I 2012

NOMBRENombre de la propiedad representa un nombre único de un control ListBox. Se utiliza para acceder al control en el código

UBICACIÓN, ALTURA, ANCHURA Y TAMAÑOLa propiedad Location toma un punto que especifica la posición de partida de la ListBox en un formulario. También puede utilizar las propiedades Left y Top para especificar la ubicación de un control de la esquina superior izquierda del formulario. La propiedad Tamaño especifica el tamaño del control.

FUENTEPropiedad Font representa la fuente del texto de un control ListBox. Si hace clic en la propiedad Font en la ventana de Propiedades, verá el nombre de fuente, tamaño y otras opciones de la fuente.

FONDO Y PRIMER PLANOLas propiedades BackColor y ForeColor se utilizan para establecer el fondo y el color de primer plano de un ListBox, respectivamente. Si hace clic sobre estas propiedades en la ventana de Propiedades, el cuadro de diálogo de color aparece.

196 | P á g i n a

Page 197: Portafolio Programacion I 2012

LISTBOX ARTÍCULOSLa propiedad Items se utiliza para agregar y trabajar con los elementos de un ListBox. Podemos añadir elementos a un control ListBox en tiempo de diseño de la ventana Propiedades, haga clic en la colección de elementos.

Al hacer clic en las colecciones, la colección de cadenas ventana del editor se abrirá donde usted puede escribir una cadena. Cada línea de agregar a esta colección se convertirá en un elemento de ListBox.

197 | P á g i n a

Page 198: Portafolio Programacion I 2012

SELECCIÓN DEL MODO Y LA SELECCIÓN DE OBJETOS Propiedad SelectionMode define cómo se seleccionan los elementos en un ListBox. El valor SelectionMode puede ser uno de los siguientes cuatro valores de enumeración SelectionMode.

Ninguno - No hay elemento se puede seleccionar. Uno - Sólo un elemento se puede seleccionar. MultiSimple - Varios elementos pueden ser seleccionados. MultiExtended - Varios elementos se pueden seleccionar, y el usuario puede utilizar las teclas SHIFT, CTRL y las teclas de flecha para hacer las selecciones.

T o seleccionar un elemento en un control ListBox, podemos usar el método que se SetSelect índice de elemento y un valor verdadero o falso en verdadero valor representan el elemento a seleccionar.

CÓMO DESHABILITAR LA SELECCIÓN DE ELEMENTOS EN UN LISTBOX? Sólo tienes que configurar la propiedad SelectionMode en Ninguno.

ORDENAR LOS ELEMENTOSLa propiedad Sorted establecida en true, los elementos de ListBox se ordenan.

CHECKBOX

Un control CheckBox permite a los usuarios seleccionar las opciones de uno o varios de una lista de opciones.

CREACIÓN DE UN CHECKBOXPodemos crear un control CheckBox con un diseñador de formularios en tiempo de diseño.Para crear un control CheckBox en tiempo de diseño, sólo tiene que arrastrar y soltar un control CheckBox de la caja de herramientas a un formulario en Visual Studio. Después de arrastrar y soltar un control CheckBox en un formulario. Una vez que un control CheckBox está en el formulario, puede moverse y cambiar su tamaño a través del ratón y establecer sus propiedades y eventos.

198 | P á g i n a

Page 199: Portafolio Programacion I 2012

ESTABLECER LAS PROPIEDADES DE CHECKBOXDespués de colocar un control CheckBox en un formulario, el siguiente paso es establecer las propiedades.La forma más fácil es establecer las propiedades de la ventana Propiedades. Puede abrir la ventana Propiedades presionando F4 o haga clic derecho sobre un control y seleccionar la opción Propiedades del menú.

UBICACIÓN, ALTURA, ANCHURA Y TAMAÑO

199 | P á g i n a

Page 200: Portafolio Programacion I 2012

La propiedad Location toma un punto que especifica la posición inicial de la casilla de verificación en un formulario. También puede utilizar las propiedades Left y Top para especificar la ubicación de un control de la esquina superior izquierda del formulario. La propiedad Tamaño especifica el tamaño del control. También podemos utilizar la propiedad Ancho y Altura lugar de la propiedad Tamaño.

FONDO, PRIMER PLANO, BORDERSTYLELas propiedades BackColor y ForeColor se utilizan para establecer el fondo y el color de primer plano de un control CheckBox, respectivamente. Si hace clic sobre estas propiedades en la ventana de Propiedades, el cuadro de diálogo de color aparece.

NOMBRE Nombre de la propiedad representa un nombre único de un control CheckBox. Se utiliza para acceder al control en el código.

TEXTO Y TEXTALIGN Propiedad Text de un control CheckBox representa el texto actual de un control CheckBox. La propiedad TextAlign representa la alineación del texto que puede ser de Izquierda, Centro o Derecha.

COMPRUEBE LA ALINEACIÓN DE MARKPropiedad CheckAlign se utiliza para alinear la marca de verificación en un control CheckBox.Mediante el uso de las propiedades CheckAlign y TextAlign, podemos colocar el texto y la marca de verificación para cualquier posición en un control CheckBox que queremos.

FUENTE Propiedad Font representa la fuente del texto de un control CheckBox. Si hace clic en la propiedad Font en la ventana de Propiedades, verá el nombre de fuente, tamaño y otras opciones de la fuente.

IMAGEN DE CHECKBOX La imagen característica de un CheckBox control se utiliza para establecer el fondo como una imagen.La propiedad de la imagen necesita un objeto Image. La clase de imagen tiene un método estático llamado FromFile que toma el nombre de un archivo de imagen con la ruta completa y crea un objeto de imagen.También puede alinear la imagen y el texto. Las propiedades ImageAlign y TextAlign de CheckBox se utilizan para este propósito.

ESTADOS CHECKBOX Un control CheckBox típico tiene dos estados posibles â € "registrado como el no. Estado de activación es cuando la casilla se marca de verificación dentro y sin control es cuando la casilla no está marcada. Normalmente, se utiliza un ratón para activar o desactivar un control CheckBox.

200 | P á g i n a

Page 201: Portafolio Programacion I 2012

Propiedad Checked es cierto cuando un control CheckBox se encuentra en estado de activación.

Resumen

Un control TextBox acepta datos del usuario en un formulario. En este artículo, hablamos de discutir la manera de crear un control TextBox de formularios Windows Forms en tiempo de diseño, así como en tiempo de ejecución. Después de eso, vimos cómo utilizar varias propiedades y métodos.

En este artículo, hablamos de discutir la manera de crear un control ComboBox de formularios Windows Forms en tiempo de diseño, así como en tiempo de ejecución. Después de eso, hablamos de cómo utilizar sus diversas propiedades y métodos para crear aplicaciones del mundo real, hablamos de discutir la forma de utilizar un control PictureBox para mostrar imágenes en aplicaciones de Windows Forms, hablamos de discutir la manera de crear un control ListBox de formularios Windows Forms.Después de eso, vimos cómo utilizar varias propiedades y métodos. Vea a continuación la lista de artículos para aprender más sobre el control ListBox, y por último, hablamos de discutir la manera de crear un control CheckBox de formularios Windows Forms en tiempo de diseño, así como en tiempo de ejecución. Después de eso, vimos cómo utilizar varias propiedades y métodos.

http://www.c-sharpcorner.com/uploadfile/mahesh/textbox-in-C-Sharp/http://www.c-sharpcorner.com/uploadfile/mahesh/combobox-in-C-Sharp/

201 | P á g i n a

Page 202: Portafolio Programacion I 2012

ACTIVIDAD N°: 30 FECHA: 04/06/2012 - 05/06/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo realizar la recuperación de información (búsqueda)

UNIDAD N° 3.7: BÚSQUEDA DE REGISTROS

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

202 | P á g i n a

Page 203: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INTRODUCCIÓN

El presente manual de usuario se lo ha realizado para facilitar la utilización del

programa y brindar una mejor visualización del mismo. Para una mejor

comprensión sobre el sistema elaborado se presentan la explicación respectiva

de sus debidos funcionamientos.

Visual Studio es un conjunto de herramientas de desarrollo y de otras tecnologías

basado en componentes para crear aplicaciones eficaces de alto

rendimiento. Además, Visual Studio está optimizado para diseño basado en

equipos, desarrollo e implementación de soluciones empresariales.

Visual Studio es un conjunto completo de herramientas de desarrollo para la

generación de aplicaciones Web ASP.NET, Servicios Web XML, aplicaciones de

escritorio y aplicaciones móviles. Visual Basic, Visual C++, Visual C# y Visual J#

utilizan el mismo entorno de desarrollo integrado (IDE), que les permite compartir

herramientas y facilita la creación de soluciones en varios lenguajes. Asimismo,

dichos lenguajes aprovechan las funciones de .NET Framework, que ofrece

acceso a tecnologías clave para simplificar el desarrollo de aplicaciones Web ASP

y Servicios Web XML.

OBJETIVO

El principal objetivo del manual es facilitar a los usuarios el manejo del programa

de Automatización de Sistema Médico "ASME", permitiendo la realización de

simulaciones del sistema y los procedimientos de búsqueda mediante diferentes

maneras, para optimizar su utilización.

203 | P á g i n a

Page 204: Portafolio Programacion I 2012

PROGRAMACIÓN DE BÚSQUEDA DE REGISTROS

(VARIAS FORMAS O MODELOS)

Explicación de palabras desconocidas.

OleDBConnection.- Representa una conexión abierta a un origen de datos.  En el

caso de un sistema de bases de datos de cliente y servidor, equivale a una

conexión de red al servidor. Dependiendo de la funcionalidad que admita el

proveedor OLE DB nativo, algunos métodos o propiedades de un

objeto OleDbConnection pueden no estar disponibles.

OleDBDataAdapter.- Representa un conjunto de comandos de datos y una

conexión de base de datos que se utilizan para rellenar DataSet y actualizar el

origen de datos.

DataSet.- Representa una caché de memoria interna de datos.

EventArgs.- Contiene los datos adicionales asociados a ciertos tipos de eventos

de estado de flujo de trabajo.

Diferencia entre Object sender y EventArgs e.- Sender representa una referencia al objeto

que lanza ese evento, mientras que eventargs es la clase base para contener los

eventos lanzados por el control. 

204 | P á g i n a

Page 205: Portafolio Programacion I 2012

Explicación de la creación de la Base de Datos

Abrimos el programa Acces para la creación de la Base de Datos, nos vamos a Inicio, Todos los Programas, Microsoft Office y clic en Microsoft Acces.

Una vez abierto el programa damos clic en “BASE DE DATOS EN BLANCO”.

Luego ponemos el nombre de la base de datos en la parte inferior derecha y clic en “CREAR”.

205 | P á g i n a

Page 206: Portafolio Programacion I 2012

Ahora agregamos la tabla en el programa de la siguiente manera.

Colocamos un nombre en este caso el nuestro será Empleados.

Empezamos a crear los campos de la siguiente manera.

Una vez creada los campos realizamos lo siguiente y empezamos a ingresar registros.

206 | P á g i n a

Page 207: Portafolio Programacion I 2012

Ahora guardamos todo lo que hemos realizado.

Explicación de la creación del formulario en Visual C#

Abrimos el programa Visual C# para la creación del formulario y nos vamos a Inicio, Todos los Programas, Microsoft Visual Studio 2010 y clic en Microsoft Visual Studio 2010.

207 | P á g i n a

Page 208: Portafolio Programacion I 2012

Una vez abierto el programa vamos a Archivo, Nuevo, Proyecto y nos aparecerá la siguiente pantalla. Le ponemos un Nombre al archivo y aceptamos.

Editamos el formulario agregando los componentes a utilizar como son:

Explicación de cómo insertar la base de datos al programa.

208 | P á g i n a

TextBox

LabelRadioButton

TextBox

Button

TextBox

DataGridView

Label

Page 209: Portafolio Programacion I 2012

Paso1.-

Paso2.- Presionar el icono de Base de Datos y clic en siguiente.

Paso 3.- Elegimos un modelo de base de datos de la siguiente manera y clic en siguiente.

Paso 4.- Clic en Nueva Conexión y en la pantalla que nos saldrá en la parte de examinar buscamos la base de datos que anteriormente creamos, clic en Probar conexión y aceptamos.

209 | P á g i n a

Page 210: Portafolio Programacion I 2012

Paso5.- En la parte de cadena de conexión copiamos lo que observamos ahí para luego utilizarlo en el código y salimos e la ventana.

Explicación del funcionamiento del programa.

El programa le permitirá buscar al empleado por las opciones de cedula, nombre, ciudad, apellido.

Deberá seleccionar una de las opciones y en un cuadro de texto colocar el valor de cedula, nombre, etc., del registro que quiera buscar y automáticamente en la tabla se presentara el registro, seleccionamos el que se busque y se cargará en los cuadros de texto, además encontramos botones de movimiento que nos permitirá movernos entre registros inicio, fin, siguiente, anterior.

210 | P á g i n a

Page 211: Portafolio Programacion I 2012

Código General.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.ProviderBase;

using System.Data.OleDb;

using Grupo3Parte2.conexionBD;// librebria que nos permite escribir un comando de un conjunto de datos

namespace Grupo3Parte2

{

public partial class Empleado : Form

{

private DataSet datos;

private OleDbDataAdapter medio;

int posicion;

int posicionFinal;

OleDbConnection conexion = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Hacienda.accdb ");

// ruta de conexion

public void cargarDatos()

{

medio = new OleDbDataAdapter("select * from Empleados", conexion);

datos = new DataSet();

medio.Fill(datos, "Empleados");

tabla.DataSource = datos.Tables["Empleados"];

211 | P á g i n a

Page 212: Portafolio Programacion I 2012

posicion = 0;

posicionFinal = (datos.Tables["Empleados"].Rows.Count) - 1;

}

private void mover(int paso)

{

posicion = posicion + paso;

txtCedula.Text = datos.Tables["Empleados"].Rows[posicion][0].ToString();

txtNombre.Text = datos.Tables["Empleados"].Rows[posicion][1].ToString();

txtApellido.Text = datos.Tables["Empleados"].Rows[posicion][2].ToString();

txtFecha.Text = datos.Tables["Empleados"].Rows[posicion][3].ToString();

txtCargo.Text = datos.Tables["Empleados"].Rows[posicion][4].ToString();

txtCiudad.Text = datos.Tables["Empleados"].Rows[posicion][5].ToString();

}

public Empleado()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

// TODO: esta línea de código carga datos en la tabla 'haciendaDataSet.Empleados' Puede moverla o quitarla según sea necesario.

this.empleadosTableAdapter.Fill(this.haciendaDataSet.Empleados);

cargarDatos();

} private void btnInicio_Click(object sender, EventArgs e)

{ mover(-posicion); }

private void btnSiguiente_Click(object sender, EventArgs e)

{

if (posicion == posicionFinal)

{

MessageBox.Show("No hay más registros");

}

212 | P á g i n a

Page 213: Portafolio Programacion I 2012

else

{

mover(1);

} }

private void btnAnterior_Click(object sender, EventArgs e)

{

if (posicion == 0)

{

MessageBox.Show("Estas ya en el primer Registro");

}

else

{

mover(-1);

} }

private void btnFin_Click(object sender, EventArgs e)

{

posicion = 0;

if (posicion == posicionFinal)

{

MessageBox.Show("No hay más registros");

}

else

{

mover(posicionFinal);

} }

private void textBox1_TextChanged(object sender, EventArgs e) {

if (rd1.Checked == true) {

try

213 | P á g i n a

Page 214: Portafolio Programacion I 2012

{

//limpiamos la tabla

DataTable dt = tabla.DataSource as DataTable;

dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Cedula like '" + textBox1.Text + "%'", conexion);

ad.Fill(datos, "Empleados");

tabla.DataSource = datos.Tables[0];}

catch (Exception ex)

{

MessageBox.Show("Error al leer de la bd: " + ex + ".");

} }

if (rd2.Checked == true)

{

try

{

//limpiamos la tabla

DataTable dt = tabla.DataSource as DataTable;

dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Nombre like '" + textBox1.Text + "%'", conexion);

ad.Fill(datos, "Empleados");

tabla.DataSource = datos.Tables[0];

}

catch (Exception ex)

{

MessageBox.Show("Error al leer de la bd: " + ex + ".");

} }

if (rd3.Checked == true)

{

try

214 | P á g i n a

Page 215: Portafolio Programacion I 2012

{

//limpiamos la tabla

DataTable dt = tabla.DataSource as DataTable;

dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Ciudad like '" + textBox1.Text + "%'", conexion);

ad.Fill(datos, "Empleados");

tabla.DataSource = datos.Tables[0];

}

catch (Exception ex)

{ MessageBox.Show("Error al leer de la bd: " + ex + ".");

}

}

if (rd4.Checked == true)

{

try

{

//limpiamos la tabla

DataTable dt = tabla.DataSource as DataTable;

dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Apellido like '" + textBox1.Text + "%'", conexion);

ad.Fill(datos, "Empleados");

tabla.DataSource = datos.Tables[0];

}

catch (Exception ex)

{

MessageBox.Show("Error al leer de la bd: " + ex + ".");

} } }

private void rd2_CheckedChanged(object sender, EventArgs e)

{ }

215 | P á g i n a

Page 216: Portafolio Programacion I 2012

private void rd3_CheckedChanged(object sender, EventArgs e)

{ }

//para cargar de la tabal a los cuadros de texto

private void tabla_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

txtCedula.Text = tabla.CurrentRow.Cells[0].Value.ToString();

txtNombre.Text = tabla.CurrentRow.Cells[1].Value.ToString();

txtApellido.Text = tabla.CurrentRow.Cells[2].Value.ToString();

txtFecha.Text = tabla.CurrentRow.Cells[3].Value.ToString();

txtCargo.Text = tabla.CurrentRow.Cells[4].Value.ToString();

txtCiudad.Text = tabla.CurrentRow.Cells[5].Value.ToString();

} } }

EXPLICACIÓN DE CADA PARTE DEL PROGRAMA CON SU RESPECTIVO CÓDIGO

Mediante esta línea podemos realizar la conexión con nuestra base de datos, aquí colocamos lo que copiamos al momento de realizar la conexión de la base de datos con el programa.

OleDbConnection conexion = new OleDbConnection (@”Provider=Microsoft.ACE.OLEDB.12.0; DataSource=Hacienda.accdb”);

En esta línea de código carga datos en la tabla 'haciendaDataSet.Empleados'. Puede moverla o quitarla según sea necesario.

private void Form1_Load(object sender, EventArgs e)

{

this.empleadosTableAdapter.Fill(this.haciendaDataSet.Empleados);

cargarDatos();

}

Para cargar o colocar los datos de los registros ingresados en la tabla de la Base de Datos creada en Access a la tabla del programa se la realiza de la siguiente manera.

216 | P á g i n a

Page 217: Portafolio Programacion I 2012

public void cargarDatos()

{

medio = new OleDbDataAdapter("select * from Empleados", conexion);

datos = new DataSet();

medio.Fill(datos, "Empleados");

tabla.DataSource = datos.Tables["Empleados"];

posicion = 0;

posicionFinal = (datos.Tables["Empleados"].Rows.Count) - 1;

}

Encontramos también botones de movimiento para podernos desplazar de registro en registro o podemos también ir al principio o final de los registros, según lo que se desee.

El método para permitir que los botones funciones es el siguiente pero este método no va dentro de ningún botón.

217 | P á g i n a

Page 218: Portafolio Programacion I 2012

private void mover(int paso)

{

posicion = posicion + paso;

txtCedula.Text = datos.Tables["Empleados"].Rows[posicion][0].ToString();

txtNombre.Text = datos.Tables["Empleados"].Rows[posicion][1].ToString();

txtApellido.Text = datos.Tables["Empleados"].Rows[posicion][2].ToString();

txtFecha.Text = datos.Tables["Empleados"].Rows[posicion][3].ToString();

txtCargo.Text = datos.Tables["Empleados"].Rows[posicion][4].ToString();

txtCiudad.Text = datos.Tables["Empleados"].Rows[posicion][5].ToString();

}

La codificación de cada botón se encuentra dentro del mismo solo hacemos clic sobre ellos y ponemos el siguiente código:

BOTÓN INICIO:

private void btnInicio_Click(object sender, EventArgs e)

{

mover(-posicion);

}

BOTÓN SIGUIENTE:

private void btnSiguiente_Click(object sender, EventArgs e)

{

if (posicion == posicionFinal)

{

MessageBox.Show("No hay más registros");

}

else

218 | P á g i n a

Page 219: Portafolio Programacion I 2012

{

mover(1);

}

}

BOTÓN ANTERIOR:

private void btnAnterior_Click(object sender, EventArgs e)

{

if (posicion == 0)

{

MessageBox.Show("Estas ya en el primer Registro");

}

else

{

mover(-1);

} }

BOTÓN FIN:

private void btnFin_Click(object sender, EventArgs e)

{

posicion = 0;

if (posicion == posicionFinal)

{

MessageBox.Show("No hay más registros");

}

else

{

mover(posicionFinal);

}

219 | P á g i n a

Page 220: Portafolio Programacion I 2012

}

Lo que encontramos posteriormente es la funcion principal del programa que cuenta con 4 RadioButton y un TextBox en el cual se insertara lo que se requiera buscar.

Todo el código que observamos a continuación para realizar estas acciones se la debe colocar dentro del TextBox y es el siguiente:

Este proceso se lo coloca dentro de un try y un catch para así poder especificar lo que se va a realizar dependiendo de la opción que elija.

Accion del RadioButton Cedula:

private void textBox1_TextChanged(object sender, EventArgs e)

{

if (rd1.Checked == true)

{

try

{

//limpiamos la tabla

DataTable dt = tabla.DataSource as DataTable;

dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Cedula like '" + textBox1.Text + "%'", conexion);

ad.Fill(datos, "Empleados");

tabla.DataSource = datos.Tables[0];

}

catch (Exception ex)

220 | P á g i n a

Page 221: Portafolio Programacion I 2012

{

MessageBox.Show("Error al leer de la bd: " + ex + ".");

}

}

Accion del RadioButton Nombre

if (rd2.Checked == true)

{

try

{

//limpiamos la tabla

DataTable dt = tabla.DataSource as DataTable;

dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Nombre like '" + textBox1.Text + "%'", conexion);

ad.Fill(datos, "Empleados");

tabla.DataSource = datos.Tables[0];

}

catch (Exception ex)

{

MessageBox.Show("Error al leer de la bd: " + ex + ".");

}

}

Accion del RadioButton Ciudad

if (rd3.Checked == true)

{

try

{

221 | P á g i n a

Page 222: Portafolio Programacion I 2012

//limpiamos la tabla

DataTable dt = tabla.DataSource as DataTable;

dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Ciudad like '" + textBox1.Text + "%'", conexion);

ad.Fill(datos, "Empleados");

tabla.DataSource = datos.Tables[0];

}

catch (Exception ex)

{

MessageBox.Show("Error al leer de la bd: " + ex + ".");

}

}

Accion del RadioButton Apellido

if (rd4.Checked == true)

{

try

{

//limpiamos la tabla

DataTable dt = tabla.DataSource as DataTable;

dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Apellido like '" + textBox1.Text + "%'", conexion);

ad.Fill(datos, "Empleados");

tabla.DataSource = datos.Tables[0];

}

catch (Exception ex)

{

MessageBox.Show("Error al leer de la bd: " + ex + ".");

}

222 | P á g i n a

Page 223: Portafolio Programacion I 2012

}

}

Y por último el código que se pondrá dentro del DataGridView que se utiliza para poder realizar la acción que cuando el usuario busque un registro y le aparezca en la tabla este seleccione el registro que quiera y se cargue automáticamente en los cuadros de textos.

//para cargar de la tabal a los cuadros de texto

private void tabla_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

txtCedula.Text = tabla.CurrentRow.Cells[0].Value.ToString();

txtNombre.Text = tabla.CurrentRow.Cells[1].Value.ToString();

txtApellido.Text = tabla.CurrentRow.Cells[2].Value.ToString();

txtFecha.Text = tabla.CurrentRow.Cells[3].Value.ToString();

txtCargo.Text = tabla.CurrentRow.Cells[4].Value.ToString();

txtCiudad.Text = tabla.CurrentRow.Cells[5].Value.ToString();

}

CONCLUSIÓN

Visual Studio, es un idioma muy completo para uso de formularios y manejo con bases de datos, es muy claro y tiene muy buena ayuda en castellano. Sus usos para fines administrativos y contables para pequeñas y medianas administraciones, lo hacen ser uno de los mejores en esa materia.

Es por esto que este sistema ofrece una visión global de lo que podría ser la búsqueda de un medicamento, empleado, etc., dentro del Subcentro de Salud “Velasco Ibarra” la aplicación ofrece alta interactividad con las personas que vayan a trabajar con el sistema, y puede ofrecer datos de manera rápida y sencilla.

223 | P á g i n a

Page 224: Portafolio Programacion I 2012

ACTIVIDAD N°: 31 FECHA: 11/06/2012 - 12/06/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo realizar la validación de la llave principal.

UNIDAD N° 3.8: VALIDACIÓN DE INTEGRIDAD REFERENCIAL (LLAVE PRINCIPAL)

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

224 | P á g i n a

Page 225: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Validación de Integridad Referencial (Llave principal y llave ajena).

Definición de Bases de Datos.

Es una colección de datos referentes a una organización estructurada según un modelo de datos de forma que refleja las relaciones y restricciones existentes entre los objetos del mundo real, y consigue independencia, integridad y seguridad de los datos.

Lo que debemos tener claro es la diferencia entre Base de Datos y SGBD. La base de datos es el almacenamiento donde residen los datos. El SGBD es el encargado de manipular la información contenida en ese almacenamiento mediante operaciones de lectura/escritura sobre la misma. Además las bases de datos no sólo contendrán las tablas (ficheros) de datos, sino que también almacenará formularios (interfaces para edición de datos), consultas sobre los datos, e informes. El SGBD se encargará de manipular esos datos, controlar la integridad y seguridad de los datos, reconstruir y reestructurar la base de datos cuando sea necesario.

Introducción a las técnicas de Bases de Datos.

El objetivo principal de las bases de datos es el de unificar los datos que se manejan y los programas o aplicaciones que los manejan. Anteriormente los programas se codificaban junto con los datos, es decir, se diseñaban para la aplicación concreta que los iba a manejar, lo que desembocaba en una dependencia de los programas respecto a los datos, ya que la estructura de los ficheros va incluida dentro del programa, y cualquier cambio en la estructura del fichero provocaba modificar y recompilar programas. Además, cada aplicación utiliza ficheros que pueden ser comunes a otras de la misma organización, por lo que se produce una REDUNDANCIA de la información, que provoca mayor ocupación de memoria, laboriosos programas de actualización (unificar datos recogidos por las aplicaciones de los diferentes departamentos), e inconsistencia de datos (no son correctos) si los datos no fueron bien actualizados en todos los programas. Con las bases de datos, se busca independizar los datos y las aplicaciones, es decir, mantenerlos en espacios diferentes. Los datos residen en memoria y los programas mediante un sistema gestor de bases de datos, manipulan la información. El sistema gestor de bases de datos recibe la petición por parte del programa para manipular los datos y es el encargado de recuperar la información de la base de datos y devolvérsela al programa que la solicitó. Cada programa requerirá de una cierta información de la base de datos, y podrá haber otros que utilicen los mismos datos, pero realmente residirán en el mismo espacio de almacenamiento y los programas no duplicarán esos datos, si no que trabajarán directamente sobre ellos concurrentemente. Aunque la estructura de la base de datos cambiara, si los datos modificados no afectan a un programa

225 | P á g i n a

Page 226: Portafolio Programacion I 2012

específico, éste no tendrá por qué ser alterado. Mediante estas técnicas de base de datos se pretende conseguir a través del Sistema Gestor de Bases de Datos(SGBD):

• INDEPENDENCIA de los Datos: Cambios en la estructura de la Base de Datos no modifican las aplicaciones.

• INTEGRIDAD de los Datos: Los datos han de ser siempre correctos. Se establecen una serie de restricciones (reglas de validación) sobre los datos.

• SEGURIDAD de los Datos: Control de acceso a los datos para evitar manipulaciones de estos no deseadas.

INTEGRIDAD REFERENCIAL

Podemos definir integridad referencial al hecho de no hacer referencia a registros o campos que no existen porque nunca fueron creados o por que han dejado de existir en el transcurso de la base de datos.

Por tanto podemos afirmar que la integridad referencial impide que queden registros huérfanos, ya que no podemos hablar de una persona que figura en la tabla de ventas si esta no existe en la tabla de clientes.

En una clave ajena no puede haber un valor no nulo que no exista en la tabla de referencia”. Para que no existan errores de integridad referencial en la base de datos, el sistema comprueba automáticamente que los valores introducidos en las claves ajenas existan en el campo de referencia en la otra tabla, si no existe, no nos dejará insertar el registro.

La integridad referencial garantiza que los cambios efectuados en una tabla no afectaran a la relación. Además impide:

Añadir un registro a la tabla seleccionada si el valor del campo de relación no existe en la tabla principal.

Eliminar un registro de la tabla principal si tiene registros relacionados en la tabla relacionada. Esto quiere decir, siguiendo con el ejemplo anterior, que antes de borrar a una persona de la tabla de clientes, habría que borrarla de la tabla de ventas, ya que no pueden existir ventas de un cliente inexistente.

Modificar el campo de relación en la tabla principal si tiene registros relacionados en la tabla relacionada.

Modificar el campo de relación en la tabla relacionada si el nuevo valor que se indexa en el no existe en la tabla principal, ya que este debe estar también en la tabla principal.

Cuando se define una columna como clave foránea, las filas de la tabla pueden contener en esa columna o bien el valor nulo (ningún valor), o bien un valor que

226 | P á g i n a

Page 227: Portafolio Programacion I 2012

existe en la otra tabla, un error sería asignar a un habitante una población que no está en la tabla de poblaciones. Eso es lo que se denomina integridad referencial y consiste en que los datos que referencian otros (claves foráneas) deben ser correctos. La integridad referencial hace que el sistema gestor de la base de datos se asegure de que no hayan en las claves foráneas valores que no estén en la tabla principal.

La integridad referencial se activa en cuanto creamos una clave foránea y a partir de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla.

¿Cuándo se pueden producir errores en los datos?

Cuando insertamos una nueva fila en la tabla secundaria y el valor de la clave foránea no existe en la tabla principal. insertamos un nuevo habitante y en la columna población escribimos un código de población que no está en la tabla de poblaciones (una población que no existe).

Cuando modificamos el valor de la clave principal de un registro que tiene 'hijos', modificamos el código de Valencia, sustituimos el valor que tenía (1) por un nuevo valor (10), si Valencia tenía habitantes asignados, qué pasa con esos habitantes, no pueden seguir teniendo el código de población 1 porque la población 1 ya no existe, en este caso hay dos alternativas, no dejar cambiar el código de Valencia o bien cambiar el código de población de todos los habitantes de Valencia y asignarles el código 10.

Cuando modificamos el valor de la clave foránea, el nuevo valor debe existir en la tabla principal. Por ejemplo cambiamos la población de un habitante, tenía asignada la población 1 (porque estaba empadronado en valencia) y ahora se le asigna la población 2 porque cambia de lugar de residencia. La población 2 debe existir en la tabla de poblaciones.

Cuando queremos borrar una fila de la tabla principal y ese registro tiene 'hijos', por ejemplo queremos borrar la población 1 (Valencia) si existen habitantes asignados a la población 1, estos no se pueden quedar con el valor 1 en la columna población porque tendrían asignada una población que no existe. En este caso tenemos dos alternativas, no dejar borrar la población 1 de la tabla de poblaciones, o bien borrarla y poner a valor nulo el campo población de todos sus 'hijos'.

Asociada a la integridad referencial están los conceptos de actualizar los registros en cascada y eliminar registros en cascada.

Actualizar en cascada los campos relacionados:

227 | P á g i n a

Page 228: Portafolio Programacion I 2012

Al activar esta opción, si realizamos alguna modificación en el campo clave principal de la tabla principal, Access realizara una actualización automática en el campo relacionado de la tabla relacionada.

Eliminar en cascada los registros relacionados:

Si eliminamos un registro en la tabla principal, se eliminaran automáticamente todos los registros relacionados en las demás tablas relacionadas.

Tipos de restricciones de integridad

Datos Requeridos: establece que una columna tenga un valor no NULL. Se define efectuando la declaración de una columna es NOT NULL cuando la tabla que contiene las columnas se crea por primera vez, como parte de la sentencia CREATE TABLE.

Chequeo de Validez: cuando se crea una tabla cada columna tiene un tipo de datos y el DBMS asegura que solamente los datos del tipo especificado sean ingresados en la tabla.

Integridad de entidad: establece que la clave primaria de una tabla debe tener un valor único para cada fila de la tabla; si no, la base de datos perderá su integridad. Se especifica en la sentencia CREATE TABLE. El DBMS comprueba automáticamente la unicidad del valor de la clave primaria con cada sentencia INSERT Y UPDATE. Un intento de insertar o actualizar una fila con un valor de la clave primaria ya existente fallará.

Integridad referencial: asegura la integridad entre las llaves foráneas y primarias (relaciones padre/hijo).

Como crear una Integridad Referencial utilizando el DBMS

Colocaremos un ejemplo de una base de datos que esté relacionado la tabla Empleados y la tabla Proyectos donde existe una relación uno a varios, dentro de la relación activaremos la integridad referencial.

228 | P á g i n a

Page 229: Portafolio Programacion I 2012

Al crear la relación con su respectiva integridad referencial nos quedara las tablas relacionadas de la siguiente manera

Ahora dentro del programa realizado en C# vemos que dentro de los registros de la tabla Proyecto existen 2 registros donde aparece el Empleado “Byron Aguilar”

Si dentro del programa eliminamos el registro de este empleado como vemos en imagen, también se eliminará el proyecto ya que esta activada la integridad referencial

229 | P á g i n a

Page 230: Portafolio Programacion I 2012

Luego de haber eliminado el registro del empleado, volvemos a la tabla de registro de los proyectos y nos damos cuenta que los proyectos en los que constaba el empleado eliminado, también se ha eliminado

Como crear una Integridad Referencial utilizando el Codificación C#

Para realizar la practica con respecto a la integridad referencial vamos a necesitar los siguientes elementos los cuales lo encontraremos en el botón cuadro de herramientas en la barra de herramientas de la aplicación visual C#.

Damos clic ahí y nos aparecerá en el lado derecho una ventana con todos los elementos para realizar un formulario.

230 | P á g i n a

Page 231: Portafolio Programacion I 2012

De esta lista escogeremos los siguientes elementos:

1 DataGridView 1 Panel 3 Label 3 TextBox 2 Button

Los cuales colocaremos de la siguiente forma:

231 | P á g i n a

Page 232: Portafolio Programacion I 2012

Una vez que tenemos la interfaz grafica procederemos ha realizar la programación respectiva del botón “Ingresar (1 método)”

Ahora en la parte de la programación contamos con 3 capas para realizar esta práctica.

La primera capa será la capa de los formularios es decir q ahí van todos los formularios que hagamos.

La capa dos estar la lógica, aquí encontraremos todos las clases necesarias con sus respectivos métodos.

Y la tercera y ultima capa se encontrará la base de datos en esta clase se definirá todo con respecto a la conexión de la base de datos con SQL SERVER MANAGER 2008.

Para realizar la codificación respectiva al botón del primer metodo utilizaremos las siguientes clases:

232 | P á g i n a

Page 233: Portafolio Programacion I 2012

frmClientes (la una pestaña esta el diseño del formulario y en la otra la codificación del formulario) CAPA 1

controlClientes (parte lógica del botón) CAPA 2 baseDatos (conexión y sentencias sql) CAPA3

Ahora demos doble clic en ese botón y nos enviara a la parte del código de la clase frmClientes de ese botón el cual por defecto estará escrito esta parte del código.

private void button1_Click_1(object sender, EventArgs e) { }

Dentro de esta línea de código empezaremos a escribir lo siguiente

controlClientes ctrlClientes = new controlClientes();de esta forma instaciamos un objeto de la clase controClientes para poder acceder a sus métodos.

Dentro de este método escribiremos lo siguiente:

int error= ctrlClientes.ingresarCliente(Convert.ToInt16(txtCodigo.Text), txtNombre.Text, txtApellido.Text);//inicializamos la variable error y le asignamos el metodo ingresarCliente y como lo que escribimos en los textBox es tipo text y un parámetro que recibe el método es entero tenemos que convertirlo por medio del castig Convert.ToInt16 el cual convertirá el nummero que ingresemos en el textBox en entero.

Seguido de esto en la clase controlClientes tendremos el metodo ingresarCliente, este método recibe como parámetro 3 cosas, es decir de la siguiente manera:

public int ingresarCliente(int codigo, String nombre, String apellido) { }

Dentro de este método haremos una instanciación a la clase baseDatos para poder acceder a sus métodos. baseDatos bd = new baseDatos(); instanciamos la clase// String sentencia = ("INSERT INTO clientes (id_cliente , nombre_cliente , apellido_cliente) VALUES ( ' " + codigo + "','" + nombre + "','" + apellido + "')");// en esta línea estamos escribiendo nuestra sentencia y utilizamos INSERT para insertar los datos q se ingresan en el textBox.

233 | P á g i n a

Page 234: Portafolio Programacion I 2012

Seguidamente a esta línea escribimos la siguiente línea en la que ya llamamos al método ejecutarComandos de la clase baseDatos, el cual recibe como parámetro la sentencia que nosotros escribimos.

public int ejecutarComandos(String sql) { conectar();//establecemos la conexión con la bse de datos comandos.CommandText = sql; especificamos el tipo de sentencia en este caso sql comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado

Realizamos un try catch para capturar errore en los cuales definiremos lo siguiente:

si la excepción cae en el try “el ingreso se realizo con éxito”, pasando directamente a cerrar la conexión y retornándome un valor de 0.

try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito");//envía un mensaje por consola que se realizo con éxito el ingreso }

cerrarConexion(); return 0;

si la excepción cae en el catch “el ingreso me va a dar error”, cerrará la conexión y me retornará un valor de 1

catch (SqlException exc) { Console.WriteLine("ERROR: "+ exc.Message); return 1; } }

Una vez que me retornan los valores de 0 o 1 respectivamente este valor se retornara en la capa anterior que es la numero 2 la capa de la lógica donde esta la clase controlCliente en donde se inicializa la variable error para que reciba un entero. int error= bd.ejecutarComandos(sentencia);// se inicializa “error” y le asignamos el método ejecutarComandos y como parámetro la sentencia que escribimos.

Seguida a esta línea escribiremos la siguiente que nos permite obtener el valor del error de la capa3 de la base de datos.

return error;// este error captura el error de la base de datos sea 0 o 1

234 | P á g i n a

Page 235: Portafolio Programacion I 2012

Una vez que este error tiene el valor de la capa 3 lo envía a la capa 1 donde se encuentra la clase del formulario; en esta parte se hará la comparación.

Si el valor q retorna es cero entra en el if actualiza la tabla y envía el mensaje “Se realizo con éxito”

if (error == 0)//compara el valor de retorno { ActualizarGRID();//actualiza la tabla MessageBox.Show("Registro Guardado con Exito", "Guardar");//muestra mensaje }

Pero si el valor q retorna es uno pasa el if y se ejecuta la línea del else mostrándome un mensaje de error

else MessageBox.Show("ERROR", "REGISTRO NO GUARDADO");//muestra mensaje

Ahora si una vez explicado las líneas de código aquí les dejo para q se guíen de una mejor forma cada clase con su método y líneas de código utilizado.

CAPA 1 FORMULARIOS

CLASE: frmClientes

private void button1_Click_1(object sender, EventArgs e)

235 | P á g i n a

Page 236: Portafolio Programacion I 2012

{ controlClientes ctrlClientes = new controlClientes();

int error= ctrlClientes.ingresarCliente(Convert.ToInt16(txtCodigo.Text), txtNombre.Text, txtApellido.Text); if (error == 0) { ActualizarGRID(); MessageBox.Show("Registro Guardado con Exito", "Guardar"); } else MessageBox.Show("ERROR", "REGISTRO NO GUARDADO"); }

CAPA 2 LÓGICA

CLASE: controlClientes

public int ingresarCliente(int codigo, String nombre, String apellido) { //DataTable tabla = new DataTable(); baseDatos bd = new baseDatos(); String sentencia = ("INSERT INTO clientes (id_cliente , nombre_cliente , apellido_cliente) VALUES ( ' " + codigo + "','" + nombre + "','" + apellido + "')"); int error= bd.ejecutarComandos(sentencia); return error; }

CAPA 3 BASE DE DATOS

CLASE: baseDatos

public int ejecutarComandos(String sql) {

//Console.WriteLine("LLEGA A EJECUTAR COMANDOS "); conectar(); //onsole.WriteLine("SI CONECTA"); comandos.CommandText = sql; comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito"); } catch (SqlException exc)

236 | P á g i n a

Page 237: Portafolio Programacion I 2012

{ Console.WriteLine("ERROR: "+ exc.Message); return 1; } cerrarConexion(); return 0; }

BOTON INGRESAR (2 METODO)

- En el cuadro de herramientas se selecciona un botón para poder agregar al

formulario

- En la clase lógica “controlClientes” se encuentra el método “verificarllaveprimaria”

- Aquí recibe como parámetro un entero que será el código

- Instanciaremos un objeto de la clase “baseDatos” para poder acceder su método

“ejecutarSeleccionSQL”

- La variable sentencia guardara la sentencia sql que se va implementar para poder

seleccionar de la base de datos el código que se haya ingresado en el formulario.

public int verificarLlavePrimaria(int codigo) {

baseDatos bd = new baseDatos(); String sentencia = ("Select * from clientes where id_cliente = " + codigo); DataTable tabla= bd.ejecutarSeleccionSQL(sentencia); int t = tabla.Rows.Count; return t; }

- En la clase de la base de dato “baseDatos” se encuentra el método

“ejecutarSeleccionSQL”.

- Este método recibe como parámetro la sentencia sql.

- Aquí se instancia una tabla en donde recibe como parámetro la sentencia sql y la

conexión para conectarse con la base de datos y pueda ver los registros.

- Luego se llenara o cargara la tabla con la consulta que se hizo en la base de datos,

es decir con los códigos que se encuentra en dicho registro.

public DataTable ejecutarSeleccionSQL(String sql) { DataTable tabla = new DataTable();

237 | P á g i n a

Page 238: Portafolio Programacion I 2012

SqlDataAdapter adap = new SqlDataAdapter(sql, miConexion); //sirve para hacer selecciones SQL adap.Fill(tabla); //llena o carga la tabla con la base de datos return tabla; }

- Aquí retorna lo que está en la variable tabla para guardarse en la variable tabla que está en la clase “controlClientes”

DataTable tabla= bd.ejecutarSeleccionSQL(sentencia);

- De ahí cuenta el numero de filas que tiene dicha tabla y lo guarda en tint t = tabla.Rows.Count;

- Entonces en la clase del formulario con el método “verificarllaveprimaria” con lo

que retorna “t” el número de filas si este es igual a 1 no podrá ingresarse un nuevo

registro ya que esta existente esa llave primaria. Pero si es igual a 0 si se puede

ingresar un nuevo registro.

private void button2_Click(object sender, EventArgs e) { controlClientes ctrlClientes = new controlClientes(); int numRegistro=ctrlClientes.verificarLlavePrimaria(Convert.ToInt16(txtCodigo.Text));

if (numRegistro == 0) { //MessageBox.Show("LLAVE PRIMARIA NO REPETIDA", "CORRECTO" ); ctrlClientes.ingresarCliente2(Convert.ToInt16(txtCodigo.Text), txtNombre.Text, txtApellido.Text); ActualizarGRID(); MessageBox.Show("Registro Guardado con Exito", "Guardar");

} else MessageBox.Show("LLAVE PRIMARIA REPETIDA", "MAL");

}

- Dentro del if se encuentra el método ingresarCliente2 que está en la clase

controlClientes.

- Aquí el siguiente método recibe como parámetro el código, el nombre y apellido

del cliente.

238 | P á g i n a

Page 239: Portafolio Programacion I 2012

- Se instancia un objeto de la clase “basededatos”

- En la variable “sentencia” se guardará la sentencia sql insert.

- Se llama al método “ejecutarComandos2” que está en la clase de “baseDatos”.

public void ingresarCliente2(int codigo, String nombre, String apellido) {

baseDatos bd = new baseDatos(); String sentencia = ("INSERT INTO clientes (id_cliente , nombre_cliente , apellido_cliente) VALUES ( ' " + codigo + "','" + nombre + "','" + apellido + "')"); bd.ejecutarComandos2(sentencia);

} }

- Este método “ejecutarComandos2” recibe como parámetro la sentencia sql.

- Hace que se ejecute la sentencia sql.

- Verifica si se realizo con éxito cuando entra al try

- En caso de que no sea así el catch me mostrará un mensaje en consola que hubo

un error.

- Por último cierra la conexión.

public void ejecutarComandos2(String sql) {

//Console.WriteLine("LLEGA A EJECUTAR COMANDOS "); conectar(); //onsole.WriteLine("SI CONECTA"); comandos.CommandText = sql; comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito"); } catch (SqlException exc) { Console.WriteLine("ERROR: " + exc.Message); } cerrarConexion(); } CAPA 1 FORMULARIOS

239 | P á g i n a

Page 240: Portafolio Programacion I 2012

private void button2_Click(object sender, EventArgs e) { controlClientes ctrlClientes = new controlClientes(); int numRegistro=ctrlClientes.verificarLlavePrimaria(Convert.ToInt16(txtCodigo.Text));

if (numRegistro == 0) { //MessageBox.Show("LLAVE PRIMARIA NO REPETIDA", "CORRECTO" ); ctrlClientes.ingresarCliente2(Convert.ToInt16(txtCodigo.Text), txtNombre.Text, txtApellido.Text); ActualizarGRID(); MessageBox.Show("Registro Guardado con Exito", "Guardar");

} else MessageBox.Show("LLAVE PRIMARIA REPETIDA", "MAL");

}CAPA 2 LOGICA

public int verificarLlavePrimaria(int codigo) {

baseDatos bd = new baseDatos(); String sentencia = ("Select * from clientes where id_cliente = " + codigo); DataTable tabla= bd.ejecutarSeleccionSQL(sentencia); int t = tabla.Rows.Count; return t;

}

public void ingresarCliente2(int codigo, String nombre, String apellido) {

baseDatos bd = new baseDatos(); String sentencia = ("INSERT INTO clientes (id_cliente , nombre_cliente , apellido_cliente) VALUES ( ' " + codigo + "','" + nombre + "','" + apellido + "')"); bd.ejecutarComandos2(sentencia); }

CAPA 3 BASE DE DATOS

public DataTable ejecutarSeleccionSQL(String sql) { DataTable tabla = new DataTable(); SqlDataAdapter adap = new SqlDataAdapter(sql, miConexion); //sirve para hacer selecciones SQL

240 | P á g i n a

Page 241: Portafolio Programacion I 2012

adap.Fill(tabla); //llena o carga la tabla con la base de datos return tabla; }

public void ejecutarComandos2(String sql) { //Console.WriteLine("LLEGA A EJECUTAR COMANDOS "); conectar(); //onsole.WriteLine("SI CONECTA"); comandos.CommandText = sql; comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito"); } catch (SqlException exc) { Console.WriteLine("ERROR: " + exc.Message); } cerrarConexion();

}

Formulario CELULARES

Bueno primeramente este proyecto echo en c# esta realizado en capas esto nos sirve para no mezclar el código y será más fácil utilizarlo, como lo muestro a continuación:

241 | P á g i n a

Capa 1 que es AccesoADatos

Capa 2 que es ExposicionIntegralReferencial

Capa 3 que es LOGIC

Page 242: Portafolio Programacion I 2012

Luego de crear las capas procedemos a crear el formulario, para ello seleccionamos la capa en la que deseamos crear el formulario y damos Click derecho buscamos la opción Agregar y se nos despliega más opciones en la cual seleccionamos Windows froms y damos Click ….

Luego nos aparecerá una new ventana en la cual colocaremos el nombre de cómo queremos que se llame el new formulario en mi caso le colocare fromCelulares.cs y podemos notar que se pone automáticamente la extensión .cs y damos Click en aceptar y se nos creara el nuevo from el cual nos aparecerá totalmente Facio o limpio.

Luego de tener el new From procedemos a colocar los componentes en el from para ello se los debe seleccionar del cuadro de herramientas en el cual hay muchos componentes como observamos en la

242 | P á g i n a

Form New

Page 243: Portafolio Programacion I 2012

Para agregar los componentes solo se los debe arrastrar al from, en mi caso le coloque botones una DATAGRIDVIEW (tabla), label y textbox y un Panel.

243 | P á g i n a

El cuadro de herramientas consta de varias pestañas como controles comunes, contenedores entre otras mas

DATAGRIDVIEW

BUTTON

LABEL

TEXTBOX

PANEL

Page 244: Portafolio Programacion I 2012

Estos componentes mencionados anteriormente se les puede cambiar de apariencia entre otras cosas mediante las propiedades en el caso del button se le puede colocar imagen al panel igual a los label, textbox y button se les puede colocar un formato y color de la letra, para esto seleccionar el campo y les aparece al lado izquierdo la herramienta de las propiedades.

Una vez ya creado el from y colocado los componentes y colocándole nombre a los componentes para que se nos haga más fácil su utilización procedemos a realizar la codificación de los botones q hallamos colocado.

Al hacer doble Click nos aparecerá lo siguiente, el cual es el modo de edición:

244 | P á g i n a

Le damos doble Click para abrir el modo edición el cual nos dará un método con evento para que al momento de ejecutarlo funcione el

Page 245: Portafolio Programacion I 2012

A continuación se mostrara el código del botón.

private void button1_Click(object sender, EventArgs e){//lo que hacemos aquí es simplemente crear un new objeto de la clase controlCelular que se encuentra en la Capa LOGIC

controlCelulares ctrlCelulares = new controlCelulares();//primeramente se creado el objeto mediante la instanciación utilizamos el método ingresar celular la cual recibe parámetros de tal forma que convertimos lo que capturamos en el textbox llamado txtcodigo a un entero de 16bits porque este método recibe parámetros String y el código entero por lo cual hacemos la conversión//la variable entera declarada int error nos va a servir para guardar el valor del error ya se ha este 0 o 1;int error = ctrlCelulares.ingresarCelular(Convert.ToInt16(txtCodigo.Text), txtMarca.Text, txtModelo.Text , txtPertenece.Text);

//nos preguntamos si el error q nos devuelve en igual igual a 0 si es así ara lo siguiente caso contrario salta al else.

if (error == 0) {

//llama el metodo actualizarGrip la cual se encuentra en la misma clase.

ActualizarGRID(); //nos presenta un mensaje que nos indica que se guardo

correctamente. MessageBox.Show("Registro Guardado con Éxito", "Guardar");

//aquí simplemente hacemos que al momento que se guarde los datos se limpien los textbox en el cual

245 | P á g i n a

Como pueden ver lo seleccionado es el código que contiene nuestro botón. Al darle doble Click en nuestro botón. Por defecto nos aparecerá el siguiente método el cual recibe el evento para su ejecución al darle Click cuando este en marcha el programa.

Private void button1_Click (object sender, EventArgs e){}

Page 246: Portafolio Programacion I 2012

mediante el .Text= “”; para que queden vacio y se borre lo que estaba en ellos.

txtCodigo.Text = " "; txtMarca.Text = " "; txtModelo.Text = " "; txtPertenece.Text = ""; } Else

//nos mostrara un mensaje de error porq retorno el valor 1 MessageBox.Show("ERROR", "REGISTRO NO GUARDADO"); }

public int ingresarCelular(int codigo, String marca, String modelo , String pertenece){

//crear un new objeto de la clase baseDatos que se encuentra en la Capa LOGIC

AccesoADatosbaseDatos bd = new baseDatos(); //creamos una new variable tipo string la cual utilizaremos para guardarlo que ingresamos en tabla celulares String sentencia = ("INSERT INTO celulares (id_celular , marca_celular , modelo_celular , id_cliente ) VALUES ( ' " + codigo + "','" + marca + "','" + modelo + "','" + pertenece + "')");//se llama el metodo ejecutarComandos de la clase basedatos y le mandamos en este caso la variable que creamos de tipo String la cual será como sentencia sql, la variable int error es la que nos va a almacenar ya se 0 o 1 deacuerdo al error int error = bd.ejecutarComandos(sentencia);

return error; //retornara 0 o 1}

public int ejecutarComandos(String sql){conectar();comandos.CommandText = sql;comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito"); } catch (SqlException exc) { Console.WriteLine("ERROR: "+ exc.Message); return 1; } cerrarConexion(); return 0; }

private void ActualizarGRID()

{//lo que hacemos aquí es simplemente crear un new objeto de la clase controlCelular que se encuentra en la Capa LOGIC

246 | P á g i n a

Page 247: Portafolio Programacion I 2012

controlCelulares ctrlCelulares = new controlCelulares(); tblCelulares.DataSource = ctrlCelulares.mostrarDatosEnGrid("celulares"); }

public DataTable mostrarDatosEnGrid(String nombreTabla){

//Creamos un new objeto de la clase baseDatos que se encuentra en la Capa AccesoADatosbaseDatos bd = new baseDatos();//creamos una variable tipo String y la inicializamos

String nomTabla = nombreTabla;//llamamos al metodo llenartabla y le mandamos el parámetro el cual es la variable q creamos en este caso nomTabla

DataTable s = bd.llenarTabla(nomTabla); return s; //retorna en este caso los datos de la tabla}

Formulario Celulares (usando el boton de 2 metodo)

Primeramente hay que crear un proyecto y dentro del proyecto las siguientes clases. Lo podremos hacer desde el menú archivo de C#

Seguido de eso en el formulario Celulares.cs tendremos que tener los siguientes controles:

Un datagrid 3 labels 3 textboxs 2 botones

247 | P á g i n a

Page 248: Portafolio Programacion I 2012

Ahora damos doble clic en el botón ingresar 2 metodo para acceder al código y codificamos lo siguiente

controlClientes ctrlClientes = new controlClientes(); int numRegistro=ctrlClientes.verificarLlavePrimaria(Convert.ToInt16(txtCodigo.Text));

if (numRegistro == 0) { //MessageBox.Show("LLAVE PRIMARIA NO REPETIDA", "CORRECTO" );

ctrlClientes.ingresarCliente2(Convert.ToInt16(txtCodigo.Text), txtNombre.Text, txtApellido.Text);

ActualizarGRID(); MessageBox.Show("Registro Guardado con Exito", "Guardar");

} else MessageBox.Show("LLAVE PRIMARIA REPETIDA", "MAL");

}

Lo que hace este código es extraer los valores de los textboxs para su validación primeramente y luego para hacer el respectivo ingreso.

Ahora no dirigiremos a la clase controlCelulares.cs que la podremos apreciar en el explorador de proyectos ubicado en el lado derecho de C#

248 | P á g i n a

Page 249: Portafolio Programacion I 2012

Y tendremos estos códigos:

METODO PARA VERIFICAR QUE LA LLAVE PRIMARIA QUE NO ESTÉ REPETIDA

public int verificarLlavePrimaria(int codigo) {

baseDatos bd = new baseDatos(); String sentencia = ("Select * from celulares where id_celular = " + codigo); DataTable tabla = bd.ejecutarSeleccionSQL(sentencia); int t = tabla.Rows.Count; return t;

}

249 | P á g i n a

Page 250: Portafolio Programacion I 2012

ACTIVIDAD N°: 32 FECHA: 13/06/2012 - 14/06/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo realizar validar la llave ajena.

UNIDAD N° 3.9: VALIDACIÓN DE INTEGRIDAD REFERENCIAL (LLAVE AJENA)

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

250 | P á g i n a

Page 251: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Continuando con el ejercicio anterior, podemos realizar la verificación de la

integridad referencial en cuanto a la llave ajena.

METODO PARA VERIFICAR QUE LA LLAVE AJENA TENGA REFERENCIA A LA TABLA PRINCIPAL.

public int verificarLlaveAjena(int codigo) {

baseDatos bd = new baseDatos(); String sentencia = ("Select * from clientes where id_cliente = " + codigo);

DataTable tabla = bd.ejecutarSeleccionSQL(sentencia); int t = tabla.Rows.Count; return t;

}

Método para relizar el ingreso de datos

public void ingresarCelular2(int codigo, String marca, String modelo, String pertenece)

{

//DataTable tabla = new DataTable(); baseDatos bd = new baseDatos();String sentencia = ("INSERT INTO celulares (id_celular , marca_celular , modelo_celular , id_cliente ) VALUES ( ' " + codigo + "','" + marca + "','" + modelo + "','" + pertenece + "')"); bd.ejecutarComandos2(sentencia); }

Todos estos métodos llaman a diferentes métodos de selección de datos, estos métodos se encuentran en la clase baseDatos.cs que la podemos apreciar en el explorador de proyectos, ubicado generalmente al lado derecho de C#.

Dichos métodos son:

251 | P á g i n a

Page 252: Portafolio Programacion I 2012

Método para ejecutar las sentencias Select.

public DataTable ejecutarSeleccionSQL(String sql) { DataTable tabla = new DataTable(); SqlDataAdapter adap = new SqlDataAdapter(sql, miConexion); //sirve para hacer selecciones SQL adap.Fill(tabla); //llena o carga la tabla con la base de datos return tabla; }

Metodo para realizar el insert a la base de datos

public void ejecutarComandos2(String sql) {

//Console.WriteLine("LLEGA A EJECUTAR COMANDOS "); conectar(); //onsole.WriteLine("SI CONECTA"); comandos.CommandText = sql; comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito");

} catch (SqlException exc) { Console.WriteLine("ERROR: " + exc.Message); } cerrarConexion(); } En primera instancia nuestro programa en ejecución tendrá la siguiente ventana

252 | P á g i n a

Page 253: Portafolio Programacion I 2012

En el formulario también tenemos un botón con un icono de binoculares, cual nos va ayudar a seleccionar la llave ajena para su ingreso.

Vamos al código de este winowsForm

El cual es la clase busquedaCliente.cs

public String id; private void tblClientes_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.RowIndex == -1) return;

id = "" + tblClientes.Rows[e.RowIndex].Cells[0].Value;

txtCodigo.Text = id; }

private void button1_Click(object sender, EventArgs e) { this.Hide(); }

Lo que hace es que al seleccionar un registro con el mouse en la tabla, se pase el

dato del id al textbox y cuando pulsemos aceptar, este form se cierra y se llena en

el formulario principal.

253 | P á g i n a

Page 254: Portafolio Programacion I 2012

ACTIVIDAD N°: 33 FECHA: 18/06/2012 - 19/06/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo realizar la relación de información (registros) cuando se utilizan formularios de 1 a 1.

UNIDAD N° 3.10: FORMULARIOS CON RELACIÓN 1 A 1

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

254 | P á g i n a

Page 255: Portafolio Programacion I 2012

ACTIVIDAD N°: 34 FECHA: 20/06/2012 - 21/06/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear o utilizar valores automáticos para las llaves principales (códigos, ids, entre otros)

UNIDAD N° 3.11: CREACIÓN DE VALORES AUTOMÁTICOS

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

255 | P á g i n a

Page 256: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INTRODUCCION

La presente investigación se refiere al tema de validación de campos. La validación de datos nos permite definir el tipo de datos que se desea introducir en una celda, haciendo más seguro los datos que se ingresan y se puede configurar la validación de datos para evitar que los usuarios introduzcan datos no válidos o permitir su entrada y comprobarlos tras finalizar el usuario. En muchos casos de sistemas se requiere información de confiabilidad para que los registros sean correctos.

Los controles de validación comprueban los datos proporcionados por el usuario en los controles SelectionList y TextBox. La validación se produce cuando el formulario se envía al servidor. Los controles de validación comprueban los datos proporcionados por el usuario y, si estos no superan alguna de las pruebas de validación, ASP.NET devuelve la página al dispositivo de cliente. Cuando esto ocurre, los controles de validación que detectaron los errores muestran mensajes de error.

La creación de valores auto numérico nos ayuda asignar un número creciente o aleatorio a ese campo en cada nuevo registro que se agregue a la tabla. Es ideal para el caso en que debemos numerar los registros por orden de llegada.

La validación de datos se hace verdaderamente importante para cualquier proyecto, ya que así impedimos que los usuarios que hagan uso del software que nosotros desarrollemos tengan menos posibilidad de cometer errores en el traspaso de datos. La validación de datos se hace de distintas formas, pero también hay distintos tipos.

A continuación en el siguiente manual veremos de forma más específica la creación de valores automáticos (Código). También como validar números, letras, si existen o no datos dentro de un cuadro de texto, cedula.

Para crear valores automáticos al momento de insertar nuevos registros lo podemos hacer de dos formas.

- En la Base de Datos

- Por Codificación

256 | P á g i n a

Page 257: Portafolio Programacion I 2012

CREACION DE VALORES AUTOMATICOS A TRAVÉS DEL DBMS(CODIGO PRINCIPAL NUMERICO)

Creación de valores automáticos en Access.-Una de las necesidades más frecuentes que se plantean en las bases de datos consiste en la creación de valores automáticos al momento de realizar cálculos matemáticos con datos combinados que pertenecen a distintos campos. En Access, la mejor manera de hacerlo es mediante la creación de un campo nuevo que realice estas operaciones. Hay que realizarlo sobre una consulta.

1)Creamos una nueva base de datos con su nombre en Access. Ejemplo: Escuela

2) Creamos una nueva tabla en la que podemos dar propiedades al campo que queramos sean automáticos.

Por ejemplo:

Al crear la tabla alumnos podemos escoger que el primer campo sea de autonumeración o autogenerado, en este caso el Id del alumno.

257 | P á g i n a

Page 258: Portafolio Programacion I 2012

Entonces al momento de realizar un nuevo registro este campo será generado sólo, incrementando de uno en uno, sin la necesidad de insertar algún valor en este campo.

3) Seguimos creando los demás campos y guardamos la tabla con su respectivo nombre. Ejemplo: Alumnos

4) Una vez ya creada la tabla podremos guardar información en esta. Entonces al momento de trabajar con una conexión de Visual Studio con Access lo podemos comprobar.

5) Ejecutamos nuestro programa que nos permitirá almacenar un nuevo registro en la tabla “Alumnos” de nuestra base de datos.

6) Insertamos el nombre, apellido, la edad y esta información se guardará en la base de datos. El Id es generado automáticamente gracias a la propiedad del tipo de dato (Autonumeración) asignado al momento de crear este campo.

258 | P á g i n a

Page 259: Portafolio Programacion I 2012

Codificación del Ejemplo Planteado.

1) Primeramente creamos un nuevo proyecto en Visual Studio C#.Clic en “Nuevo Proyecto” y nos aparecerá la ventana de abajo y le damos un nombre. Ejemplo: MiProyecto.

2) Se creará un formulario que será la ventana que interactúa con el usuario.3) Creamos una clase para poder conectarnos a nuestra base de datos de Access.

Con la siguiente codificación:

4) Creamos la tabla y los campos necesarios para ingresar los datos en nuestro formulario.

259 | P á g i n a

Ruta de la base de Datos

Método para cerrar la Conexión

Abrimos la Conexión

Page 260: Portafolio Programacion I 2012

5) En el formulario estará un evento para visualizar la información de mi base de datos y llenar la tabla con estos, también tendremos un método que al pulsar el botón se nos guardarán los nuevos datos ingresados en los campos nombre, apellido y edad.

6) En la clase conexión tendremos un método “Consultar” que es que el realizará el llenado de la grilla cada vez que llamemos a este método.

260 | P á g i n a

Tabla (DataGridView)

Campos de Registro

Botón Guardar

Abrimos la conexión con la base

Buscamos todos los registros de la tabla alumnos en la base de datos y son enviados al método “Consultar”

Llenamos la tabla de nuestro formulario

Obtenemos los datos ingresados en los campos de registro y los enviamos al método “guardar”

Actualizamos la tabla con el nuevo registro

Page 261: Portafolio Programacion I 2012

7) En la misma clase tendremos el método “Guardar” que es él que trabaja con el botón realizando la consulta para ingresar los datos a la base. Dentro de este tenemos 2 líneas que nos ayudan a generar el ID automáticamente, obteniendo el número total de registros y sumándole 1 para luego asignar el nuevo id al registro que está siendo guardado.

261 | P á g i n a

Sentencia de consulta

Creación y llenado de la grilla

Creamos una variable para acceder al formulario

Obtenemos el número total de registros de la tabla para crear un nuevo id aumentado en uno

Consulta para insertar los datos a la base

Ejecutamos la consulta

Asignamos los datos a los campos de la tabla para el nuevo registro

Page 262: Portafolio Programacion I 2012

CREACIÓN DE VALORES AUTOMÁTICOS (A TRAVÉS DE CODIGO EN C#)

La creación de valores auto numérico nos ayuda asignar un número creciente o aleatorio a ese campo en cada nuevo registro que se agregue a la tabla. Es ideal para el caso en que debemos numerar los registros por orden de llegada.

En este caso la base de datos Access lo realiza de forma automáticamente, pero en este manual lo haremos de forma que codificamos la parte que esta salga automáticamente la numeración de los campos.

EN ESTA SEGUNDA PARTE VEREMOS LO QUE ES LA EXPLICACIÓN DEL CODIGO

262 | P á g i n a

Page 263: Portafolio Programacion I 2012

263 | P á g i n a

Aquí lo k hacemos es llamar a la sentencias SQL en este caso ocupamos el SELECT.

OleDbDataAdapter canal = new OleDbDataAdapter ("SELECT * FROM Persona ", conexion);

Aquí lo k hacemos crear una variable de tipo dataset para que almacena el arreglo.

OleDbDataAdapter mibd = new DataSet (); try {

Aquí lo k hacemos es abrir la conexión

conexion.Open();

Aquí lo k hacemos es crear un canal donde vamos a poner un nombre o etiqueta donde se va guardar los arreglos.

canal.Fill(mibd, "Persona");

Aquí lo que hacemos es crear una variable de tipo entero para así guardar el número total de registros ingresados.

int numero_registros = mibd.Tables["Persona"].Rows.Count;

Aquí lo que hacemos es crear una variable de tipo llamada ultimo _numero aquí se va guardar el arreglo es decir al número total de posiciones.

int numero_ultimo =

Convert.ToInt16(mibd.Tables["Persona"].Rows[numero_registros - 1][0].ToString()); Esta condición lo que hace es decir si el número de registros es 0 tomara el txtid es valor de 1 caso contrario si el número de registros es igual numero_ultimo el txtid tomara el valor del ultimo número +1. Caso contrario de esto se hará lo mismo. Esto se da dentro del try cach.

if (numero_registros == 0) { txtid.Text = "1"; } else

{ if(numero_registros==numero_ultimo) { txtid.Text = (numero_ultimo + 1).ToString(); } else {

Page 264: Portafolio Programacion I 2012

DEFINICIONES

OleDbDataAdapter

Representa un conjunto de comandos de datos y una conexión de base de datos que se utilizan para rellenar Dataset y actualizar el origen de datos.

DataSet:

Representa una caché de memoria interna de datos.

Fill

Agrega filas en un intervalo especificado de Dataset o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando el nombre de la Tabla.

Convert

Convierte un tipo de datos base en otro tipo de datos base.

ToString

Devuelve una clase String que representa la clase Object actual.

264 | P á g i n a

} } catch{ }

Dentro del finally función casi igual al try cach pero este caso si se cumple o no igual entra al finally y realiza la acción.

Finally { if (conexion.State == ConnectionState.Open) { conexion.Close (); } } }

Page 265: Portafolio Programacion I 2012

State

Obtiene el estado actual de la conexión

CONCLUSION

La característica principal de este documento ha sido aprender mas sobre como utilizar la codificación y a su vez entender bien los códigos para evitar los problemas que se tornan muy seguidos si un software no cuenta con una validación de datos óptima.

Al igual que la creación de valores automáticos estos dos parámetros son partes fundamentales de un sistema para ello hemos puesto ejemplos que logren un mayor entendimiento para si poner en practica en cualquier sistema a desarrollarse.

265 | P á g i n a

Page 266: Portafolio Programacion I 2012

ACTIVIDAD N°: 35 FECHA: 20/06/2012 - 21/06/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo validar que los datos ingresados son correctos (validación de datos), tienen integridad.

UNIDAD N° 3.12: VALIDACIÓN DE INGRESO DE DATOS

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

266 | P á g i n a

Page 267: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Introducción

La presente investigación se refiere al tema de validación de campos, La

validación de datos nos permite definir el tipo de datos que se desea introducir en

una celda, haciendo más seguro los datos y Se puede configurar la validación de

datos para evitar que los usuarios introduzcan datos no válidos o permitir su

entrada y comprobarlos tras finalizar el usuario. En muchos casos se requiere

información de la confiabilidad de que los registros sean correctos.

La característica principal de este documento es saber cómo utilizar la

codificación y como utilizar bien los códigos para evitar los problemas que se

tornan muy seguidos si un software no cuenta con una validación de datos

óptima.

Validaciones en C#

La validación de datos resulta especialmente útil al diseñar formularios u hojas de

cálculo que otras personas utilizarán para introducir datos como formularios

presupuestarios o informes de gastos.

Tipos de datos que se pueden validar

C# permite designar los siguientes tipos de datos válidos para una celda:

Números     Especifique que la entrada en una celda debe ser un número entero

o un número decimal. Puede establecer un mínimo o máximo, excluir un número o

intervalo determinado, o utilizar una fórmula para calcular la validez de un

número.

Fechas y horas     Establezca un mínimo o máximo, excluya determinadas

fechas u horas, o utilice una fórmula para calcular la validez de una fecha u hora.

Longitud     Limite el número de caracteres que se puede escribir en una celda o

exija un número mínimo de caracteres.

267 | P á g i n a

Page 268: Portafolio Programacion I 2012

Lista de valores     Elabore una lista de las opciones para una celda como, por

ejemplo, pequeña, mediana, grande, y admita sólo esos valores en la celda. Se

puede mostrar una flecha de lista desplegable cuando un usuario hace clic en la

celda para facilitar la selección de una opción de la lista.

Tipos de mensajes que se puede mostrar

Para cada celda que se valida, se pueden mostrar dos mensajes diferentes: uno

que aparece antes de que el usuario introduzca los datos y otro que aparece

después de que el usuario intente introducir los datos que no cumplen los

requisitos. Si los usuarios tienen activado el Ayudante de Office, éste mostrará los

mensajes.

Mensaje de entrada     Mensaje entrante Este tipo de mensaje aparece cuando

un usuario hace clic en la celda validada. Se puede utilizar este tipo de mensaje

para facilitar instrucciones sobre el tipo de datos que se han de introducir en la

celda.

Mensaje de error     Este tipo de mensaje aparece sólo cuando el usuario escribe

datos no válidos y presiona la tecla ENTRAR. Se puede elegir entre tres tipos de

mensajes de error:

Mensaje de información     Este mensaje no impide la entrada de datos no

válidos. Además del texto que proporciona el usuario, incluye un icono de

información, un botón Aceptar, que introduce los datos no válidos en la celda, y

un botón Cancelar, que restaura el valor anterior de la celda.

Mensaje de advertencia     Este mensaje no impide la entrada de datos no

válidos. Incluye el texto que proporciona el usuario, un icono de advertencia y tres

botones: Sí introduce los datos no válidos en la celda, No regresa a la celda para

más modificaciones y Cancelar restaura el valor anterior de la celda.

Mensaje de detención     Este mensaje no permite la entrada de datos no

válidos. Incluye el texto que proporciona el usuario, un icono de detención y dos

botones: Reintentar regresa a la celda para más modificaciones y

Cancelar restaura el valor anterior de la celda. Observe que este mensaje no está

268 | P á g i n a

Page 269: Portafolio Programacion I 2012

concebido como medida de seguridad: si bien los usuarios no pueden introducir

datos no válidos escribiendo y presionando ENTRAR, pueden eludir la validación

copiando y pegando o rellenando datos en la celda.

Si no se especifica ningún mensaje, Excel marca si los datos que introduce un

usuario son válidos de modo que se pueden comprobar más adelante, pero no

notifica al usuario cuando una entrada no es válida.

Código ASCII

Ejemplos:

La cedula ecuatoriana está formada por los dos primeros dígitos que

corresponden a la provincia donde fue expedida, por lo cual los dos primeros

números no será mayor a 24 ni menor a 1.

El tercer digito es un número menor a 6 (0, 1, 2, 3, 4, 5).

269 | P á g i n a

Page 270: Portafolio Programacion I 2012

Los siguientes hasta el noveno digito son un número consecutivo.

Y el décimo digito es el digito verificador.

Los coeficientes usados para verificar el décimo dígito de la cédula, mediante el

algoritmo “Módulo 10”

Coeficientes = 2.1.2.1.2.1.2.1.2

270 | P á g i n a

Page 271: Portafolio Programacion I 2012

Validaciones de los campos en C#

Captura de pantalla de validación de Cedula

Se introduce la cedula de identidad en el campo DNI para saber si la cedula es

correcta o no. En caso ser correcta aparece una ventana que dice “cedula

correcta”.

En caso de ser incorrecta la cedula aparecerá una ventana “cedula incorrecta”.

Código de validación de cedula:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Validar

{

271 | P á g i n a

Page 272: Portafolio Programacion I 2012

class ValidarDni

{

public bool res;

public string num_cedula;

public int tamanio;

public ValidarDni(string num, int tam)

{

num_cedula = num;

tamanio = tam;

}

public Boolean comprobar_cedula()

{

int suma = 0;

int j = 0;

bool a = true;

int x = 0;

for (int i = 0; i < tamanio - 1; i++)

{

j = Convert.ToInt16(this.num_cedula[i].ToString());

if (a == true)

{

x = j * 2;

if (x > 9)

{

x = 1 + (x % 10);

}

a = false;

}

else

{

x = j * 1;

a = true;

}

suma += x;

}

x = suma % 10;

j = Convert.ToInt32(this.num_cedula[tamanio - 1].ToString());

272 | P á g i n a

Page 273: Portafolio Programacion I 2012

if (x == 0)

{

if (x == j)

{

res = true;

}

}

else

{

x = (suma - x) + 10;

if (j == (x - suma))

{

res = true;

}

else

{

res = false;

}

}

return res;

}

}

}

Captura de pantalla de validación Nombre y Apellido:

273 | P á g i n a

Page 274: Portafolio Programacion I 2012

Al introducir el nombre y el apellido en los campos de texto deben fijarse que solo

sean letras y en el caso de introducir números o caracteres aparecerá una

ventana que indicara “Solo letras en estos campos”.

Código de validación Nombre y Apellido (Sólo Letras)

private void txtNombre_KeyPress(object sender, KeyPressEventArgs e)

{

if (((((e.KeyChar) < 65 ) || e.KeyChar > 90) && (((e.KeyChar) < 97 ) || e.KeyChar > 122)) &&

(e.KeyChar != 8 && e.KeyChar != 32))

{

MessageBox.Show("Solo letras");

e.Handled = true;

}

}

private void txtApellido_KeyPress(object sender, KeyPressEventArgs e)

{

if (((((e.KeyChar) < 65) || e.KeyChar > 90) && (((e.KeyChar) < 97) || e.KeyChar > 122)) &&

(e.KeyChar != 8 && e.KeyChar != 32))

{

MessageBox.Show("Solo letras");

e.Handled = true;

}

}

Captura de pantalla de validación de Teléfono

274 | P á g i n a

Page 275: Portafolio Programacion I 2012

Al introducir el número de teléfono el campo de texto deben fijarse que solo sean

números en caso de introducir letras o caracteres aparecerá una ventana que

indicara “Solo números Telefónicos”.

Código de validación Teléfono (Sólo números)

private void txtTelefono_KeyPress(object sender, KeyPressEventArgs e)

{

if ((((e.KeyChar) < 48 && e.KeyChar != 8 ) || e.KeyChar > 57) && e.KeyChar !=45)

{

MessageBox.Show("Solo numeros telefonico");

e.Handled = true;

}

}

Captura de pantalla de validación de Correo

Al introducir el correo en el campo de texto deben fijarse que solo sean letras y

caracteres como “@,-_.” en el caso de introducir mal el correo aparecerá una

ventana que indicara “Correo incorrecto”.

Código de validación de Correo (Validación caracteres especiales)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Text.RegularExpressions;

namespace Validacion

{

275 | P á g i n a

Page 276: Portafolio Programacion I 2012

class Email

{

public Boolean email_bien_escrito(String email)

{

String expresion;

expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";

if (Regex.IsMatch(email, expresion))

{

if (Regex.Replace(email, expresion, String.Empty).Length == 0)

{

return true;

}

else

{

return false;

}

}

else

{

return false;

}

}

}

}

Captura de pantalla de validación de Datos Obligatorios

276 | P á g i n a

Page 277: Portafolio Programacion I 2012

Al introducir el DNI, nombre, apellido, dirección, teléfono y correo en los campos

de texto deben fijarse que todos los campos estén llenos en caso de dejar un

campo sin llenar aparecerá una ventana que indicara “Ingresar datos obligatorios”.

Código de validación de Datos obligatorios (Sin datos en blanco)

private void btnIngresar_Click(object sender, EventArgs e)

{

if (txtDni.Text.Equals("") || txtApellido.Text.Equals("") || txtNombre.Text.Equals("") ||

txtDireccion.Text.Equals("") || txtTelefono.Text.Equals("") || txtCorreo.Text.Equals(""))

{

MessageBox.Show("Ingrese datos obligatorios");

}

else

{

ValidarDni dni = new ValidarDni(txtDni.Text, 10);

if (dni.comprobar_cedula())

{

//MessageBox.Show("Cedula correcta");

}

else

{

MessageBox.Show("Cedula incorrecta");

}

Validacion.Email ema = new Validacion.Email();

if (ema.email_bien_escrito(txtCorreo.Text))

{

//MessageBox.Show("Correo correcto");

}

else

{

MessageBox.Show("Correo incorrecta");

}

MessageBox.Show("Datos Ingresados");

}

277 | P á g i n a

Page 278: Portafolio Programacion I 2012

txtDni.Text = null;

txtNombre.Text = null;

txtApellido.Text = null;

txtDireccion.Text = null;

txtTelefono.Text = null;

txtCorreo.Text = null;

}

278 | P á g i n a

Page 279: Portafolio Programacion I 2012

ACTIVIDAD N°: 36 FECHA: 25/06/2012 - 26/06/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo llamar a formularios (desde menú o desde un formulario)

UNIDAD N° 3.13: LLAMADA A FORMULARIOS

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

279 | P á g i n a

Page 280: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

NAVEGACION ENTRE FORMULARIOS

1. En el frame principal vamos a propiedades y la opción IsMdiContainer ponemos

True

2. Creamos una instancia del tipo del frame del que queremos que nos aparezca en nuestra ventana principal

Inventario inven = new Inventario();

inven.MdiParent = this;

inven.Show();

280 | P á g i n a

Page 281: Portafolio Programacion I 2012

3. Una vez hecho esto nos quedará algo asi

281 | P á g i n a

Page 282: Portafolio Programacion I 2012

ACTIVIDAD N°: 37 FECHA: 27/06/2012 - 28/06/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo realizar la relación de información (registros) cuando se utilizan formularios de 1 a N (maestro – detalle).

UNIDAD N° 3.14: FORMULARIOS CON RELACION 1 A N

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

282 | P á g i n a

Page 283: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INTRODUCCION

El presente trabajo escrito, correspondiente al módulo de Programación 1, se

utilizará como complemento de la exposición, dentro del mismo trataremos sobre

la fácil creación de facturas y manejo de cálculos dentro del entorno de Visual

Studio 2008, además está enfocado en ayudar de manera oportuna a tener un

concepto más claro de esta práctica, considerando que este informe cuenta con

datos que en nuestra posterior vida profesional nos ayudará en posibles casos en

los que tendremos que interactuar con estos conceptos.

Desarrollaremos actitudes para poder realizar con éxito prácticas y trabajos de

manera eficiente.

Este informe servirá como material de apoyo para posteriores aplicaciones,

permitirá ejecutar los conocimientos adquiridos a futuro y asegurara la compresión

total de posibles implementaciones.

283 | P á g i n a

Page 284: Portafolio Programacion I 2012

DISEÑO

Algo fundamental en la realización de un sistema o proyecto implementado en un lenguaje de programación es el diseño, es decir que nuestra interfaz debe poseer los componentes necesarios para cada una de las funciones que se pretendan realizar.

Lo primero a realizar es un proyecto nuevo declarado como Windows aplicación, el cual nombraremos con Factura1

Al realizar esto c# nos presentara por defecto un formulario de nombre Form1 en el cual añadiremos los componentes necesarios.

En nuestra práctica primero utilizaremos, un Datagridview al cual llamaremos dgArticulos además, agregaremos un label y un textBox(txtCantidadVenta) para la cantidad a vender y un Button(btnAgregar) y un textBox(txtAgregar) para Agregar.

284 | P á g i n a

Page 285: Portafolio Programacion I 2012

Como segunda parte añadiremos un GroupBox, dentro del cual agregaremos un Datagridview llamado dgVentas, el cual tendrá como columnas la cantidad tomada del txtAgregar; la descripción, Precio Unitario tomados de la tabla artículos de la base de datos Facturacion que será creada en Acces

De igual manera en el mismo GroupBox introducimos 6 label y 6 textBox correspondientes a Pago de cliente (txtMontoFact), subtotal(txtsubtotal), Descuento (txtDescuento), Iva(lblIva), Total(lblTotal=), Cambio(lblCambio):

Por último agregaremos botones de cálculo de salida

285 | P á g i n a

Page 286: Portafolio Programacion I 2012

FUNCIONAMIENTO

Hacemos clic en la fila del producto a vender y especificamos la cantidad en el txtCantidadVenta , presionamos enter.

NOTA: Si la cantidad ingresada es mayor al stock del producto aparecerá un mensaje avisando que la cantidad debe ser menor al stock del producto y que no hay suficientes productos para la venta

Si los datos son correctos aparecerán en la tabla de descripción de la venta (dgVenta), además de reducirse el stock con respecto a la cantidad ingresada

286 | P á g i n a

Page 287: Portafolio Programacion I 2012

En caso de querer ingresar más productos a la base: Hacemos clic sobre el producto en la tabla e ingresamos la cantidad en el txtAgregar y pulsamos el btnAgregar

Por último calculamos los valores simplemente presionamos el botón calcular

Luego ingresamos el pago del cliente y presionamos enter esto nos dará el cambio a devolver.

Para terminar la aplicación simplemente presionamos el botón Salir

287 | P á g i n a

Page 288: Portafolio Programacion I 2012

CODIFICACION

Declaración de objetos y variables

Método para la conexión y desconexión

Este método es invocado en los métodos de actualizar (), modifyStock():

Método para actualizar

Método para modificar (disminuir y aumentar) el stock y tomar las filas titulo y precio unitario para enviar al método traspasar

288 | P á g i n a

Page 289: Portafolio Programacion I 2012

Método que recibe los argumentos enviados de la modificación para actualizar la base de datos en stock

Método que recibe los argumentos de nombre del artículo y precio unitario para añadir las filas de cantidad, la descripción y el precio unitario en la tabla de dgVentas

289 | P á g i n a

Page 290: Portafolio Programacion I 2012

Acción clic del botón calculo

Método de los cálculos

Método que al dar enter permite obtener el pago o monto del cliente y devuelve el cambio

290 | P á g i n a

Page 291: Portafolio Programacion I 2012

Acción clic del botón Agregar

Acción que al presionar enter llena las filas cantidad descripción y precio unitario de la tabla dgVentas

CONCLUSION:

Después de la exposición y la práctica realizada en clase, estaremos en condiciones de implementar en nuestro sistema la gestión de la factura, la cual nos ayudara en posibles proyectos en los que se utilizara inventario o manejo de entrada y salida de productos.

291 | P á g i n a

Page 292: Portafolio Programacion I 2012

ACTIVIDAD N°: 38 FECHA: 02/07/2012 - 03/07/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear, utilizar y mostrar el menú del sistema informático

UNIDAD N° 3.15: CREACIÓN DE MENÚS

OBJETIVO:Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión.Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

292 | P á g i n a

Page 293: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INTRODUCCIÓN

Una de las características en una aplicación de escritorio es que sea fácil de usar

para el usuario. Es importante que contengan menús que puedan ofrecer atajos

para los distintos procesos del sistema, además de una gacil navegación de

formularios y control de los accesos de usuarios

A continuación vamos a explicar los pasos necesarios para implementar los

procesos antes mencionados para que nuestra aplicación satisfaga las

necesidades del usuario.

OBJETIVO

Realizar un manual que describa paso a paso la creación de menús, navegación

de formularios y control de usuarios mediante la investigación para poder aplicar

los conocimientos adquiridos en el desarrollo de un sistema informático.

293 | P á g i n a

Page 294: Portafolio Programacion I 2012

Menús

Hoy en día la mayoría de las aplicaciones para Windows tienen menús. Es realmente sencillo trabajar con ellos con C#.

Hay tres tipos de menús y los tres derivan de una clase común, denominada Menú, que proporciona la funcionalidad básica y común a las tres.

Las clases MainMenu y MenuItem

MainMenu es el menú principal. Un formulario puede tener definidos varios menús principales, dependiendo del estado de algunas variables de la aplicación. Estos menús pueden unirse entre sí.

Cada uno de los elementos o items o submenús –ya sean de primer o segundo nivel- de cada menú son objetos de la clase MenuItem. Estos elementos, a su vez, pueden contener otros objetos o submenús. Todos los elementos u objetos de un menú son almacenados en la colección MenuItemCollection que es una propiedad de las clases

MainMenu y ContextMenu.

Los menús contextuales o también llamados menús PopUp se despliegan generalmente cuando se pulsa sobre un control con el botón derecho. Al igual que los MainMenu pueden contener varios elementos MenuItem. A continuación se

294 | P á g i n a

Page 295: Portafolio Programacion I 2012

estudiarán las propiedades más importantes de la clase MenuItem. Posteriormente se estudiarán los menús PopUp.

Propiedades

1. Checked y RadioChecked

Propiedad booleana. Indica si un elemento aparece activado con un elemento tipo Check o RadioCheck. Para que éste último tenga funcionalidad debe estar a True la propiedad Checked.

2. DefaultItem

Propiedad booleana. Indica si es el elemento por defecto o predeterminado. Se escribe en letra negrita.

3. Enabled

Propiedad booleana. Indica si está habilitada o no esa opción de menú.

4. MdiList

Propiedad booleana. Indica si la lista de ventanas hijas MDI se añadirá a este item.

5. MergeOrder

Indica el orden donde será ubicado el menú.

6. MergeType

Indica el tipo de unión de los menús.

7. OwnerDraw

Propiedad booleana. Indica si será Windows o el programador el responsable de dibujar el item o elemento de menú.

8. ShortCut

Indica la combinación de teclas o acceso directo asociado con ese elemento.

9. ShowShortCut

Propiedad booleana. Indica si aparece escrito a la derecha del item la combinación de teclas asociada al item.

10.Text

Texto del elemento.

295 | P á g i n a

Page 296: Portafolio Programacion I 2012

11.Visible

Indica si un item es visible o no. Es una propiedad booleana.

Eventos

1. Click

Ocurre cuando se pulsa un item con el ratón.

2. DrawItem

Ocurre si un item de menú necesita ser redibujado.

3. MeasureItem

Ocurre justo antes de que sea redibujado un item.

4. PopUp

Ocurre cuando se presentan en pantalla un submenú.

5. Select

Ocurre cuando se selecciona un item del menú.

Hay además dos métodos interesantes de esta clase:

CloneMenu: Que permite crear un nuevo menú a partir de otros existentes y MergeMenu que permite unir dos menús.

Para trabajar con menús se utiliza la clase MenuItemCollection que almacena los elementos de cada menú. Para añadir y eliminar elementos de menú a MainMenu o

ContextMenu: Se utilizan los métodos de esta colección.

La clase ContextMenu

Es el menú que aparece cuando se pulsa con el botón derecho del ratón. Se trabaja de la misma manera que un MainMenu con la única diferencia de que no existe un nivel principal de items y por lo tanto no se puede nombrar el principal. Los menús PopUp contienen también objetos de la clase MenuItem.

Una vez diseñado el menú es necesario asociarlo a un control o a un formulario por medio de la propiedad ContextMenu del control.

La clase ImageList

Este control proporciona una colección para almacenar imágenes que puede ser utilizada en otros controles como una caja de herramientas o un ListView. Aunque

296 | P á g i n a

Page 297: Portafolio Programacion I 2012

puede almacenar imágenes de cualquier tamaño, las que se añaden a un mismo control deben tener –en general- el mismo. Sin embargo, en el caso del control ListView –y a veces las cajas de herramientas- es preciso almacenar dos tipos de tamaños de imágenes.

Este control no es visible en tiempo de diseño ni en tiempo de ejecución, aunque se le pueden añadir imágenes en tiempo de diseño y en tiempo de ejecución.

La clase ToolBar

Los controles ToolBar se usan para construir una barra de herramientas.

Una barra de herramientas contiene, por lo general, varios controles de la clase ToolBarButton que pueden aparecer como botones estándar –como por ejemplo los botones Abrir, Guardar,...-, controles ComboBox –como el tipo de letra- botones desplegables –como los iconos color de la letra, resaltar o ayuda- , botones ToogleButton o de dos posiciones o de ON/OFF –como el tipo de alineación del párrafo, y botones con texto, imagen o ambos. Además, normalmente suelen disponer de una pequeña etiqueta o ToolTip, con una breve descripción de la función del botón.

En general, las barras de herramientas sirven para acceder de manera más rápida y gráfica a algunos de los elementos más importantes o más utilizados de un menú.

Se puede asociar imágenes a cada uno de los botones a través de un objeto ImageList, asignando el índice de cada imagen a la propiedad ImageIndex del botón. También se puede asignar un texto a la derecha o en la parte inferior del botón a través de la propiedad Text del ToolBarButton.

La clase ToolbarButton

Los objetos de esta clase son los controles que se ubican en la barra de herramientas.

Esta clase no deriva de la clase Control, sino directamente de la clase Component.

Propiedades

Esta clase permite configurar para cada botón de la caja de herramientas la imagen, estilo, texto y ToolTip. A través de ellos se puede configurar un botón “desplegable” como, por ejemplo los dos botones situados en la parte superior derecha de la barra de herramientas del Visual Studio .NET.

Las propiedades más importantes son:

297 | P á g i n a

Page 298: Portafolio Programacion I 2012

1. DropDownMenu

Asigna un menú de tipo PopUp a un botón “desplegable”. Para ello, debe tener la propiedad Style a DropDownButton-.

2. ImageIndex

Contiene el índice de la imagen del botón.

3. Style

Es el estilo del botón.

4. Text

La etiqueta o texto –opcional- del botón en la barra de herramientas.

5. ToolTipText

Es el texto de la etiqueta explicativa del botón. Para ello, la barra de herramientas debe tener la propiedad ShowToolTips a True.

6. ParcialPush

Sólo tiene sentido con la propiedad Style a ToogleButton. Si es True Los botones están en gris, indicando que están inhabilitados.

7. Pushed

Propiedad booleana. Indica si el botón está pulsado o no (ON/OFF).

Para controlar los eventos sobre la barra de herramientas, se procede como en los demás controles.

Cuando se desea determinar qué botón ha sido pulsado, se utiliza la propiedad Button - que devuelve el botón que se ha pulsado- de la clase ToolBarButtonClickEventArgs que se ha pasado al auditor del evento.

CREACION DE MENUS

MenuStrip. 

MenuStrip es el contenedor de nivel superior que reemplaza a MainMenu. También proporciona las características de control de claves y de interfaz de múltiples documentos (MDI).

Funcionalmente, ToolStripDropDownItem y ToolStripMenuItem operan junto con MenuStrip, aunque se derivan de ToolStripItem.

298 | P á g i n a

Page 299: Portafolio Programacion I 2012

Para crear un MenuStrip se realize lo siguiente:

1.- Se crea una variable de tipo MenuStrip.

MenuStrip ms = new MenuStrip();

2.- Creamos los items con los que vamos a trabajar.

ToolStripMenuItem windowMenu = new ToolStripMenuItem("AR&CHIVO");

ToolStripMenuItem salirMenu = new ToolStripMenuItem("&Salir");

ToolStripMenuItem EditarMenu = new ToolStripMenuItem("&Editar");

3.- Se asigna el campo que queremos que aparezca como la lista principal y a los ítems que va a contener esta lista en el MenuStrip.

ms.MdiWindowListItem = windowMenu;

windowMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {EditarMenu,salirMenu});

// Add the window ToolStripMenuItem to the MenuStrip.

ms.Items.Add(windowMenu);

4.- Colocamos el menu en el espacio que queremos.

ms.Dock = DockStyle.Top;

this.MainMenuStrip = ms;

Y por ultimo agregamos la barra al frame.

299 | P á g i n a

Page 300: Portafolio Programacion I 2012

this.Controls.Add(ms);

De la siguiente manera tendríamos la barra menú.

ContextMenu.

Se utilizan menús contextuales para ofrecer a los usuarios opciones de menú específicas del contexto cuando hacen clic con el botón secundario del mouse en el control.

1.-Creamos el menu contextual de la siguiente manera.

ContextMenuStrip menuContextual = new ContextMenuStrip();

2.- Creamos los ítems que van a estar dentro del menú contextual.

ToolStripMenuItem estiloMenu = new ToolStripMenuItem("&Estilo");

ToolStripMenuItem letra = new ToolStripMenuItem("&Letra");

ToolStripMenuItem fondo = new ToolStripMenuItem("&Fondo");

3.-Agregamos el item principal y los item secundarios del menu contextual

menuContextual.Items.Add(estiloMenu);

300 | P á g i n a

Page 301: Portafolio Programacion I 2012

estiloMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {letra,fondo});

4.- Por ultimo colocamos el menu contextual dentro del frame.

this.ContextMenuStrip = menuContextual;

Y tendremos el menú contextual de la siguiente manera.

CONCLUSION

La creación de MenuStrip nos permite realizar barras de menús que contengas diferentes funciones que agilizan los procesos del usuario

301 | P á g i n a

Page 302: Portafolio Programacion I 2012

ACTIVIDAD N°: 39 FECHA: 02/07/2012 - 03/07/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear usuarios, asignar privilegios, quitar privilegios.

UNIDAD N° 3.16: CREACIÓN Y USO DE USUARIOS

OBJETIVO: Asegurar el acceso a los datos.

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

302 | P á g i n a

Page 303: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

PRIVILEGIOS DE USUARIOS

Los privilegios de usuarios definen el ingreso, acceso y restricciones de funciones para los usuarios para si llevar un control en los procesos del sistema

Recibe los datos ingresados del sistema Para luego hacer una consulta a la baseDe datos de la tabla Usuarios

303 | P á g i n a

Seleccionamos el tipo de acceso del usuario

Page 304: Portafolio Programacion I 2012

De esta forma buscamos en la base de datos que coincidan con el ingreso del sistema para luego permita el ingreso al menú principal del programa.

CONTROL DE USUARIO

Permite tener un historial de usuario es decir al ingresar el usuario al sistema se crea un registro de que a iniciado sesión especificando la fecha y la hora.

También se utiliza este historial al momento de guardar:

Cliente

Proveedor

Producto

Generación de facturas.

Entre otras.

Visualización del Control de usuario.

304 | P á g i n a

Usuario permitido como Administrador

Page 305: Portafolio Programacion I 2012

Accedemos al sistema escribiendo el nombre y contraseña de usuario y automáticamente se genera un registro de historial de inicio de sesión.

Para ver el historial damos clic en el botón reportes.(#1)

Al dar clic en reportes nos mostrara la siguiente ventana donde esta el botón historial (#1)

305 | P á g i n a

1

1

Page 306: Portafolio Programacion I 2012

Al dar clic (#1) mostrara el historial de lo que a iniciado sesión el usuario.

CONCLUSION

El control de usuarios es importante puesto que da seguridad al sistema y esto

evita la salida de información no autorizada

306 | P á g i n a

Page 307: Portafolio Programacion I 2012

CAPITULO 4: PRESENTACIÓN DE

RESULTADOS (INFORMES)

307 | P á g i n a

Page 308: Portafolio Programacion I 2012

ACTIVIDAD N°: 40 FECHA: 04/07/2012 - 05/07/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear y ejecutar reportes utilizando 1 tabla desde C#.

UNIDAD N° 4.1: CREACIÓN Y EJECUCIÓN DE INFORMES (1 TABLA)

OBJETIVO: Recuperar información para ser presentada en impresos

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

308 | P á g i n a

Page 309: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

CREACIÓN Y EJECUCIÓN DE REPORTES CON CRYSTAL REPORTS.UNA TABLA.

En este manual Aprenderemos a crear Reportes con CrystalReport de una sola Tabla, para ello comenzaremos creando un nuevo Proyecto.

Luego de Haber Creado Un nuevo Proyecto, procedemos a agregar un WindowsFormApplication llamado Report1Tabla.

Dentro de este formulario Agregaremos los siguientes componentes:

309 | P á g i n a

Page 310: Portafolio Programacion I 2012

1 dataGridView = grilla

2 Botones = atrás, Generar Reporte

Luego de haber agregado estos componentes, pasamos a crear otro Formulario llamado Visualizar1Tabla.cs

Dentro de este formulario Pasaremos a agregar el siguiente componente a nuestro formulario.

310 | P á g i n a

Page 311: Portafolio Programacion I 2012

Este CrystalreportViewer nos permitirá más adelante poder visualizar el reporte con los datos de la base de datos que se esté consultando. Y este formulario quedará diseñado de la siguiente manera.

Ahora sí, una vez concluida la parte del diseño, la misma que nos permitirá visualizar los datos, pasemos a codificar los componentes agregados. Comenzamos con el formulario Report1Tabla.

Dentro de este formulario ira agregado los siguientes métodos.

311 | P á g i n a

Page 312: Portafolio Programacion I 2012

Una vez realizada esta codificación llamamos al método cargarDatos(); al evento

Load del Formulario.

Con todas estas líneas de código, en nuestro dataGriedView que agregamos a este formulario, se mostrara la información que poseemos en nuestra base de datos de la tabla Empleado.

Esta es la tabla con sus respectivos campos que posee la base de datos creada en Access 2010

312 | P á g i n a

Page 313: Portafolio Programacion I 2012

Una vez que ya se ha cargado los datos de la base de datos a nuestra grilla, procedemos a agregar a nuestro proyecto 2 componentes más:

Conjunto de datos = Dataset1

Archivo CrystalReport = rpt1Tabla.rpt

Como primer Punto Agregamos el conjunto de datos, una vez ya agregado a

nuestro proyecto se cargara una vista, donde comenzaremos a agregar una tabla

que ira almacenando los datos que tenemos de la base de datos.

313 | P á g i n a

Page 314: Portafolio Programacion I 2012

Una vez dado clic derecho sobre el espacio de trabajo agregaremos una tabla de

datos llamada Empleados, que como se mencionó anteriormente almacenará los

datos de la base de datos.

314 | P á g i n a

Page 315: Portafolio Programacion I 2012

En esta gráfica ya nos muestra el dataTable que se utilizara para trabajar.

Una vez que ya está agregado el dataTable procederemos a agregar columnas que se agregaran de acuerdo a los campos que posee nuestra base de datos.

315 | P á g i n a

Page 316: Portafolio Programacion I 2012

Ya agregadas todas las columnas a nuestra tabla, procedemos a crear el segundo archivo, CrystalReport, que nos permitirá visualizar los datos de nuestra base de datos.

Ya creado nuestro componente, se abrirá un asistente de creación de reportes, la cual nos muestra 3 opciones:

Usar asistente de informes

Como Informe en Blanco

A partir de un informe existente

De estas tres opciones escogeremos Como Informe en Blanco, y damos a aceptar

Ahora se nos muestra el informe en blanco, de aquí en adelante seguiremos los

siguientes pasos para enlazar este visor de reportes con el conjunto de datos que se creó anteriormente.

En la parte derecha se Muestra un menú que dice “EXPLORADOR DE CAMPOS” damos clic derecho, seleccionamos la opción “asistente de base de datos”

316 | P á g i n a

Page 317: Portafolio Programacion I 2012

Ahora se visualizará la siguiente ventana, en esta ventana escogeremos la primera opción “Datos del Proyecto” y desplegamos la carpeta que dice “ADO .Net Dataset”.

Seleccionamos la opción con nombre “Empleado” y lo pasamos al otro lado con el botón de Mayor Que > y presionamos aceptar.

Una vez enlazado con el dataSet1. Se mostraran los campos de la tabla que se agrego en el dataset, a esos campos se los debe arrastrar a la sección de “Detalle”, los colocamos ordenadamente, ya que depende de como los ordenemos, cambiara la apariencia del reporte.

Una vez Terminada esta parte, llegamos a la parte final, donde realizaremos la codificación del Botón “Generar Reporte” que se encuentra en el Formulario Report1Tabla. Damos doble clic sobre ese componente y se generara el evento click del botón, dentro de este evento escribiremos las siguientes líneas de código.

317 | P á g i n a

Page 318: Portafolio Programacion I 2012

Y una vez Terminado todos los Pasos, al ejecutar nuestro proyecto se vera asi, con la tabla que muestra todos los datos de la base de datos y el reporte que se crea al dar clic sobre el botón de generación de reporte.

318 | P á g i n a

Page 319: Portafolio Programacion I 2012

ACTIVIDAD N°: 41 FECHA: 11/07/2012 - 12/07/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear y ejecutar reportes con varias tablas desde c#.

UNIDAD N° 4.2: INFORMES CON VARIAS TABLAS (1 A N)

OBJETIVO: Recuperar información para ser presentada en impresos

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

319 | P á g i n a

Page 320: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

CREACIÓN DE REPORTES DE UNO A MUCHOS MEDIANTE CRYSTAL REPORTS DE VISUAL STUDIO 2010

CREACION DE REPORTES MEDIANTE EL ASISTENTE

Creamos un nuevo proyecto de C# en el IDE de Visual Studio y le pondremos un nombre.

320 | P á g i n a

Page 321: Portafolio Programacion I 2012

Vamos hasta el menú Proyecto y luego a propiedades del Proyecto

En la parte donde dice “Versión de .NET” nos fijamos que predeterminado se encuentra .NET Framework 4 Client Profile

Lo debemos cambiar por el que dice .NET Framework 4, ya que éste nos permitirá a realizar trabajos con Crystal Reports.

En el Explorador de Servicios Agregamos una nueva conexión la cual permitirá trabajar con nuestra base de datos.

321 | P á g i n a

Page 322: Portafolio Programacion I 2012

Elegimos cual es el origen de los datos que vamos agregar a nuestro proyecto.

Procedemos a buscar la ubicación de la base de datos que necesita nuestro proyecto

Agregamos un nuevo elemento a nuestro proyecto el cual va a ser un Data Set que no es mas que un conjunto de datos para visualizar las tablas de una base de datos

322 | P á g i n a

Page 323: Portafolio Programacion I 2012

Desde el Explorador de Servicios arrastramos las tablas para que el Crystal Reports sepa como trabajar, cabe mencionar que las relaciones entre las tablas deben estar establecidas desde un principio

Terminado el paso anterior se debe agregar un nuevo elemento al proyecto el cual será el Crystal Reports

323 | P á g i n a

Page 324: Portafolio Programacion I 2012

Le damos aceptar para poder continuar

324 | P á g i n a

Page 325: Portafolio Programacion I 2012

Elegimos todos los dato que deseamos tener en el reporte

Damos clic en siguiente para continuar

325 | P á g i n a

Page 326: Portafolio Programacion I 2012

Nos fijamos que así queda la relación entre las tablas que escogimos para el proyecto

Escogemos los campos que aparecerán en el reporte

326 | P á g i n a

Page 327: Portafolio Programacion I 2012

En esta opción se la debe seleccionar el campo para hacer las respectivas agrupaciones

En este caso se selecciona como se presentarán los resúmenes, puede ser una suma, un promedio, entre muchas operaciones

327 | P á g i n a

Page 328: Portafolio Programacion I 2012

Se selecciona el título del gráfico que se presentará en el reporte con los resultados obtenidos

Se debe seleccionar la plantilla con el modelo de reporte que se va a generar

328 | P á g i n a

Page 329: Portafolio Programacion I 2012

Y asi se tiene listo el reporte ahora se debe hacer las conexiones para que se lo pueda apreciar mejor.

Ahora en el formulario se debe arrastrar el CrystalReport Viewer es aquel que permitirá tener listo para la impresión e reporte

329 | P á g i n a

Page 330: Portafolio Programacion I 2012

Una vez finalizado se debe crear un nuevo método que permita llenar el reporta y que esté preparado para imprimir

Y por último se debe ejecutar para comprobar que lo que hemos realizado funciona

330 | P á g i n a

Page 331: Portafolio Programacion I 2012

CREACIÓN DE REPORTES MEDIANTE CÓDIGO:

Creamos un nuevo proyecto de C# en el IDE de Visual Studio y le pondremos un nombre.

331 | P á g i n a

Page 332: Portafolio Programacion I 2012

Hacemos un GUI rápido y sencillo para tener una idea de lo que se quiere hacer, así de la siguiente manera, el cual posee un label, un DataGridView y un botón:

Cambiamos la configuración del Proyecto a .NET Framework 4 asi:

332 | P á g i n a

Page 333: Portafolio Programacion I 2012

Creamos un dataSet, luego se crea una tabla de datos con el número de columnas que tengamos en nuestra tabla y que son necesarias para el reporte.

333 | P á g i n a

Page 334: Portafolio Programacion I 2012

Cargamos todos los datos de la tabla de la base de datos y los presentamos en el DataGridView, al mismo tiempo enviamos las columnas al DataSet

334 | P á g i n a

Page 335: Portafolio Programacion I 2012

Luego agregamos un nuevo elemento al proyecto, en este caso va a ser un CrystalReport:

Usamos el asistente para hacer el reporte

335 | P á g i n a

Page 336: Portafolio Programacion I 2012

Agregamos todos los elementos del dataSet de nuestro proyecto:

Escogemos todos los campos que nos serán útiles para la realización del reporte:

336 | P á g i n a

Page 337: Portafolio Programacion I 2012

Nos saltamos todas las que son opcionales y concluimos con elegir el tipo de reporte que vamos a utilizar, en este caso escogí el borde rojo azul.

Diseñamos a nuestro gusto la forma en la que el reporte se va a imprimir:

337 | P á g i n a

Page 338: Portafolio Programacion I 2012

Agregamos un nuevo elemento al proyecto, que va a ser un Form en el que vayamos a visualizar el reporte

Al formulario le agregamos un CrystalReportsView para poder captar el reporte:

338 | P á g i n a

Page 339: Portafolio Programacion I 2012

Por último creamos un evento para el botón de “Ver Reporte” con el siguiente código:

Y por último ejecutamos el programa para observar el reporte

339 | P á g i n a

Page 340: Portafolio Programacion I 2012

340 | P á g i n a

Page 341: Portafolio Programacion I 2012

NOTAS IMPORTANTES PARA LA CORRECTA IMPLEMENTACIÓN DE LOS REPORTES CON CRYSTAL REPORT.

Cuando creamos de esta manera el reporte en VS 2010 tendría que agregar automáticamente las librerías necesarias, además configurar el App.Config de manera que la ejecución resulte exitosa. Pero por alguna razón en algunos  VS 2010 no configura de manera correcta el App.config y nuestro reporte no se ejecuta, en otros no existe el problema. Estuve probando en diferentes VS 2010 sobre todo ultímate pero me sale un error, en otros no y todo es normal, tal vez sea porque algunos PC eran de X64 y otros de X32 pero, no hay problema si tenemos este error de ejecución el cual indica que no podemos compilar porque no se reconoce las librerías de CR.

Para que se ejecute de manera correcta solo tenemos que configurar el App.Config, agregando esta línea.

<startup useLegacyV2RuntimeActivationPolicy="true">

<supportedRuntime version="v4.0"/>

</startup>

 

 Y comentando  la línea

<!–<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>–>

 

341 | P á g i n a

Page 342: Portafolio Programacion I 2012

Quedando el App.config como sigue:

//////////////////////

<?xml version="1.0"?>

<configuration>

<!--<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>-->

<startup useLegacyV2RuntimeActivationPolicy="true">

<supportedRuntime version="v4.0"/>

</startup>

</configuration>

/////////////////////

Con esto ya se ejecuta nuestro reporte.

342 | P á g i n a

Page 343: Portafolio Programacion I 2012

ACTIVIDAD N°: 42 FECHA: 18/07/2012 - 19/07/2012

TEMA:Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear y ejecutar reportes utilizando filtros de información desde c#.

UNIDAD N° 4.3: INFORMES CON FILTROS

OBJETIVO: Recuperar información para ser presentados en impresos

PROBLEMA:Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.

INDICADOR DE EVALUACIÓN:

c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuo

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

343 | P á g i n a

Page 344: Portafolio Programacion I 2012

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

BUSQUEDA DE REGISTROS POR FILTRADO DE DATOS Y PASO DE INFORMACION A OTRO FORMULARIO

Presionamos el botón buscar y así seleccionar el dato que deseamos pasar a este formulario.

Esta es la tabla que se muestra a continuación y en donde se puede ver la lista de clientes con sus respectivas edades.

En los campos nombre, apellido y edad podemos ingresar los datos a buscar según la búsqueda, en este caso buscamos los clientes que tengan por nombre JIMMY, damos click en la celda y procedemos a cerrar el formulario.

344 | P á g i n a

Presionar

Ingresar el dato a buscar

Page 345: Portafolio Programacion I 2012

Podemos ver que el dato ya se pasó al otro formulario

CODIFICACION

Botón Buscar del primer formulario private void button1_Click(object sender, EventArgs e) { Form1 ver = new Form1(); ver.ShowDialog(); txt_nombres.Text=ver.valor; txt_apellidos.Text = ver.apellido; txt_edad.Text = ver.edad;}

Formulario de datosusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.OleDb;

namespace practica

345 | P á g i n a

Page 346: Portafolio Programacion I 2012

{ public partial class Form1 : Form { Form2 inicio=new Form2(); public string valor,apellido,edad; public Form1() { InitializeComponent(); }

private DataSet ds; OleDbConnection conn = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\CLIENTEDB.accdb;");

private void Form1_Load(object sender, EventArgs e) { ds=new DataSet(); coneccion(); } public void coneccion() { //codificacion con la cual cargamos el grip al iniciar el from OleDbDataAdapter ad = new OleDbDataAdapter("select * from clientes",conn); ad.Fill(ds, "clientes"); dataGridView1.DataSource=ds.Tables["clientes"]; }

//campo de texto del nombre al escribir se limpia en los otros 2 campos

private void textBox1_TextChanged(object sender, KeyPressEventArgs e) { textBox2.Text = ""; textBox3.Text = ""; //limpiamos el datagrid DataTable dt = dataGridView1.DataSource as DataTable; dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from clientes where nombre like '"+textBox1.Text +"%'", conn); ad.Fill(ds, "clientes"); dataGridView1.DataSource = ds.Tables[0];

} //Campo de texto apellido private void textBox2_TextChanged(object sender, KeyPressEventArgs e) { textBox1.Text = ""; textBox3.Text = ""; //limpiamos el datagrid DataTable dt = dataGridView1.DataSource as DataTable; dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from clientes where apellido like '" + textBox2.Text + "%' ", conn);

346 | P á g i n a

Page 347: Portafolio Programacion I 2012

ad.Fill(ds, "clientes"); dataGridView1.DataSource = ds.Tables[0]; } // Campo de texto edad private void textBox3_TextChanged(object sender, KeyPressEventArgs e) { textBox2.Text = ""; textBox1.Text = ""; //limpiamos el datagrid DataTable dt = dataGridView1.DataSource as DataTable; dt.Rows.Clear();

OleDbDataAdapter ad = new OleDbDataAdapter("select * from clientes where edad like '" + textBox3.Text + "%' order by edad asc", conn); ad.Fill(ds, "clientes"); dataGridView1.DataSource = ds.Tables[0]; } public String nombre;

// Codigo del datagrip el cual se activa al presionar clic captutamos el valor de las celdas //y la almacenamos en unas variables publicas valor apellido y edad private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if ((e.RowIndex != -1) && (e.ColumnIndex != -1)) { // valor = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); valor = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString(); apellido = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString(); edad = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();

} else { MessageBox.Show("Selección fuera de la tabla"); } } }}

Esta selección se la envía a imprimir, utilizando un informe creado con código.

347 | P á g i n a

Page 348: Portafolio Programacion I 2012

EXAMEN FINAL

348 | P á g i n a

Page 349: Portafolio Programacion I 2012

Grupo # 1. Nombre: ……….……………………………………………………………………………

Aparatos Salas Clases* Cod_ap * Id_s * Codigo_da

Descripción Metros2 DescripciónEst_conserv Ubicación Fecha/hora

Id_s Tipo Id_sAparatos?Cursos?

1) Crear la correspondiente base de datos (0,5)

2) Formulario para Aparatos. (3.5 puntos)

a) Verificar que el Cod_ap no se repita. 1

b) Verificar que el Id_s se encuentre en la otra tabla, si no existe permitirle si desea, crear

dicho registro. 2

c) En el campo Est_conserv solo puede contener valores de: Excelente, Bueno, Regular,

Malo, Dañado. 0,50

3) Formulario Salas (cabecera) y Clases (detalle) (5 puntos)

a) Id_s debe llenarse automáticamente (secuencial) 1.5

b) El campo metros2 solo puede contener valores entre 10 y 50

0,50

c) Al añadir detalle se debe crear automáticamente la relación entre las dos tablas 1

d) para la llave ajena Id_s de la tabla Clases (detalle) mostrar una ventana de ayuda (con

búsqueda por descripción) para seleccionar el registro y que devuelva el código al formulario

anterior 2

4) Colocar donde sea necesario, botones para moverse, añadir, aceptar y cancelar registros.

(1 punto)

349 | P á g i n a

Page 350: Portafolio Programacion I 2012

PROYECTO FINAL

350 | P á g i n a

Page 351: Portafolio Programacion I 2012

ACTIVIDAD N°: 44 FECHA: 30/07/2012 - 31/07/2012

TEMA: Presentar el proyecto Final para revisión previa antes de la presentación oficial.

OBJETIVO:Desarrollar un sistema informático que permita integrar los datos y procesos de la institución.

PROBLEMA:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas.Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión

INDICADOR DE EVALUACIÓN:

b) Diseñar, conducir experimentos, analizar e interpretar datosc) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistasd) Trabajar como un equipo multidisciplinarioe) Identificar, formular y resolver problemas de ingenieríaf) Comprender la responsabilidad ética y profesionalg) Comunicarse efectivamentei) Comprometerse con el aprendizaje continuoj) Conocer temas contemporáneosk) Usar técnicas, habilidades y herramientas para la práctica de ingeniería

VALORES:

TIPO DE ACTIVIDADLUGAR ALCANCE FORMA

□Intraclase

□Extraclase

□Individual

□Grupal

□Taller

□Síntesis, esquemas

□Caso de estudio

□Investigativa

□Vinculación con la colectividad

□Práctica de laboratorio

□Práctica de clase

□Resolución de problemas, ejercicios

□Ensayo, artículo

□Informe de exposición

CALIFICACIÓN

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

351 | P á g i n a