Creacion de Un Sitio Web

82
UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE Ing-Mae. Mario Alberto Valle PROGRAMACION III UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRER CIENCIAS EMPRESARIALES PROGRAMACION IV ASP.NET Tema: CREACION DE UN SITIO WEB CONTACTOS EN ASP.NET-VB VISUAL STUDIO 2008 & SQL 2008 Docente: Ing.Mae. Mario Alberto Valle A.

Transcript of Creacion de Un Sitio Web

Page 1: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

UNIVERSIDAD SALVADOREÑA

ALBERTO MASFERRER

CIENCIAS EMPRESARIALES

PROGRAMACION IV ASP.NET

Tema: CREACION DE UN SITIO

WEB CONTACTOS EN ASP.NET-VB

VISUAL STUDIO 2008 & SQL 2008

Docente: Ing.Mae. Mario Alberto Valle A.

Page 2: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

ASPECTOS TECNICOS

ASP.NET: Es una tecnología que permite desarrollar ambiente Web. Esta tecnología es

desarrollada por Microsoft y trae incluido una serie de lenguajes de programación

tales como VB.net VBScript, C# entre otros. Estos lenguajes interactúan entre sí

permitiendo desarrollar aplicaciones totalmente dinámicas orientadas a la Web.

SQL SERVER: Es un sistema de gestor de bases de datos, este nos permite guardar

información y poder realizar páginas más dinámicas, por ejemplo podemos guardar

contraseñas, direcciones de correo, realizar foros de discusión, contadores, aparte de

guardar cualquier tipo de información que nos sea de interés, para poder manejarnos

con el deberemos tener unos conocimientos mínimos del lenguaje SQL.

IIS: Servicios de software que admiten la creación, configuración y administración de

sitios Web, además de otras funciones de Internet. Entre los Servicios de Internet

Información Server se incluyen el Protocolo de transferencia de noticias a través de la

red (NNTP), el Protocolo de transferencia de archivos (FTP) y el Protocolo simple de

transferencia de correo (SMTP). Para poder correr páginas ASPX (lenguaje propuesto

en esta alternativa) es necesario tener instalado este servicio, el cual está incluido en

el sistema operativo Microsoft Windows Server 2003, el cual sería el sistema operativo

propuesto para esta alternativa, ya que proporcionaría mayor seguridad al montar el

servidor Web.

FRAMEWORK: Este es un conjunto de biblioteca que contiene toda la plataforma de

.NET, es decir, para poder correr páginas ASPX en nuestro sistema operativo es

indispensable la instalación y uso de esta herramienta.

Page 3: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

PROPÓSITO DE LA GUÍA Esa guía ha sido desarrollada como material de apoyo al Fase IV “Análisis y Diseño de Sistemas

con Tecnología .NET” con el objetivo de proveer a los alumnos de una herramienta que le

permite la práctica para el desarrollo de formularios de registros, formularios de consultas y

manipulación de datos con una base de datos a través del desarrollo de un sitio web.

OBJETIVOS ESPECÍFICOS 1. Creación y uso de conexiones a base de datos 2. Desarrollo páginas de Formularios Registros 3. Desarrollo páginas de Formularios Consulta 4. Utilización de clases para reutilizar código 5. Utilización de controles que permiten la vinculación de datos 6. Actualización, Ingreso y Eliminación de datos 7. Utilización de procedimientos almacenados

FUNCIONALIDADES PROPUESTAS 1. Consulta de Contactos 2. Consulta de Profesiones 3. Mantenimiento al catálogo de Contactos 4. Mantenimiento al catálogo de Profesiones 5. Envío de correo electrónico

CREACIÓN DE LA BASE DE DATOS EN SQL 2008

1. Crear una base de datos en SQL Server llamada CONTACTOS 2. Crear dos tablas con la siguiente estructura : 3. Existen dos formas de crear una base datos

a) La primera forma por el método tradicional Query Analysis b) La segunda forma por el método Wizard

Crear las siguiente bases de datos con el nombre de: CONTACTOS

CREATE TABLE [dbo].[CONTACTOS] (

[COD_CONTACTO] [char] (5) COLLATE Modern_Spanish_CI_AS NOT NULL ,

[NOM_CONTACTO] [char] (50) COLLATE Modern_Spanish_CI_AS NOT NULL ,

[APE_CONTACTO] [char] (50) COLLATE Modern_Spanish_CI_AS NOT NULL ,

[COD_PROF] [char] (5) COLLATE Modern_Spanish_CI_AS NULL ,

[TIPO] [char] (1) COLLATE Modern_Spanish_CI_AS NULL ,

[DIRECCION1] [char] (100) COLLATE Modern_Spanish_CI_AS NULL ,

[DIRECCION2] [char] (100) COLLATE Modern_Spanish_CI_AS NULL ,

Page 4: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

[E_MAIL] [char] (50) COLLATE Modern_Spanish_CI_AS NULL ,

[FECHA_NACIMIENTO] [datetime] NULL ,

[LUGAR_TRABAJO] [char] (50) COLLATE Modern_Spanish_CI_AS NULL ,

[DIRECCION_TRABAJO] [char] (100) COLLATE Modern_Spanish_CI_AS NULL ,

[TEL_TRABAJO] [char] (8) COLLATE Modern_Spanish_CI_AS NULL ,

[TEL_PERSONAL] [char] (8) COLLATE Modern_Spanish_CI_AS NULL ,

[TEL_CASA] [char] (8) COLLATE Modern_Spanish_CI_AS NULL

) ON [PRIMARY]

GO

CREATE TABLE [dbo].[PROFESIONES] (

[COD_PROF] [char] (5) COLLATE Modern_Spanish_CI_AS NOT NULL ,

[DESCRIPCION] [char] (25) COLLATE Modern_Spanish_CI_AS NULL

) ON [PRIMARY]

GO

Estos se digitara como procedimientos almacenados. En las bases de

datos

EJEMPLOS PROCEDIMIENTOS ALMACENADOS

ALTER TABLE [dbo].[CONTACTOS] ADD

CONSTRAINT [PK_CONTACTOS] PRIMARY KEY CLUSTERED

(

[COD_CONTACTO]

) ON [PRIMARY] ,

CONSTRAINT [CK_CONTACTOS] CHECK ([TIPO] = 'O' or ([TIPO] = 'L' or [TIPO] = 'P'))

GO

Page 5: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

ALTER TABLE [dbo].[PROFESIONES] ADD

CONSTRAINT [PK_PROFESIONES] PRIMARY KEY CLUSTERED

(

[COD_PROF]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[CONTACTOS] ADD

CONSTRAINT [FK_CONTACTOS_PROFESIONES] FOREIGN KEY

(

[COD_PROF]

) REFERENCES [dbo].[PROFESIONES] (

[COD_PROF]

)

GO

1. La base datos será guardada en una subcarpeta de su proyecto Contacto pero esta

subcarpeta es creada desde Visual Asp.Net

Page 6: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

INICIAMOS CON SQL 2008

2. En este momento está conectado el motor de SQL 2008 con el servidor

3. Tenemos el entorno de SQL 2008 para iniciar a crear nuestra base datos

Nombre del

Servidor

Presionamos un

clic para conectar

el servidor

Page 7: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

4. Dar un doble clic base datos luego un clic nueva base de datos

Page 8: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

5. En el nombre de la base de datos digitamos un Contactos y damos un clic en aceptar.

6. Nos posicionamos en nuestra base de datos de contactos y damos un clic en (+) para desplegar el contenido; luego damos un clic derecho en Tablas y nos posicionamos en nueva tabla para crear nuestra primera tabla.

7. Digitamos nuestra tabla de Contactos

8. Guardamos nuestra tabla de contactos

Page 9: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

9. Creamos nuestra tabla de Profesiones

10. Para crear nuestro índice o llave primaria damos un clic en el icono

11. Para crear nuestra relación entre nuestras tablas realizamos lo siguiente a. Damos un clic en base datos Contactos y nos posicionamos en

Diagrama de bases datos damos un clic derecho para crear nuestra relaciones entre nuestras tablas

12. Agregamos nuestras tablas para relacionarlas y luego damos un clic en cerrar

Page 10: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

13. Después de haber agregado nuestras tablas relacionamos los índices o llaves de cada uno de las tablas. Arrastramos el índice hacia la otra tabla y automáticamente nos dará los parámetros de uno a uno o de uno a muchos, como lo muestra la siguiente tabla.

uno a uno

uno a muchos

Page 11: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

CREACION DE PROCEDIMIENTOS ALMACENADOS

14. Para crear los procedimientos almacenados realizamos lo siguiente nos posicionamos en nuestra base datos luego en programación y seleccionamos procedimientos almacenados damos un clic nuevo procedimiento almacenado

15. Crear el almacenamiento almacenado digitar el código siguiente.

EL PROCEDIMIENTO ALMACENADO SE LLAMARA:

actualizarcontacto

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER procedure [dbo].[Actualizarcontacto]

@COD_CONTACTO AS char(5),

@NOM_CONTACTO AS char(50),

@APE_CONTACTO AS char(50),

@ID_PROF AS bigint,

Page 12: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

@DIRECCION1 AS CHAR(100),

@DIRECCION2 AS CHAR(100),

@E_MAIL AS CHAR(50),

@FECHA_NACIMIENTO AS datetime,

@LUGAR_TRABAJO AS CHAR(50),

@TEL_TRABAJO AS CHAR(8),

@TEL_PERSONAL AS CHAR(8),

@TEL_CASA AS CHAR(8)

AS

BEGIN

begin transaction Actualizar

update DBO.CONTACTOS

set COD_CONTACTO=@COD_CONTACTO,

NOM_CONTACTO=@NOM_CONTACTO,

APE_CONTACTO=@APE_CONTACTO,

ID_PROF=@ID_PROF,

DIRECCION1=@DIRECCION1,

DIRECCION2=@DIRECCION2,

E_MAIL=@E_MAIL,

FECHA_NACIMIENTO=@FECHA_NACIMIENTO,

LUGAR_TRABAJO=@LUGAR_TRABAJO,

TEL_TRABAJO=@TEL_TRABAJO,

TEL_PERSONAL=@TEL_PERSONAL,

TEL_CASA=@TEL_CASA

if @@error=0

commit transaction Actualizar

else

rollback transaction Actualiza

end

Page 13: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Crear el almacenamiento almacenado digitar el código siguiente.

EL PROCEDIMIENTO ALMACENADO SE LLAMARA:

ELIMINAR CONTACTO

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER procedure [dbo].[Eliminarcontacto]

@COD_CONTACTO AS CHAR(5)

as

begin

begin transaction Eliminar

delete from DBO.CONTACTOS

where COD_CONTACTO=@COD_CONTACTO

if @@error=0

commit transaction Eliminar

else

rollback transaction Eliminar

end

Crear el almacenamiento almacenado digitar el código siguiente.

EL PROCEDIMIENTO ALMACENADO SE LLAMARA:

ELIMINAR PROFESION

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER Procedure [dbo].[Eliminarprofesion]

@COD_PROF AS CHAR(5)

as

begin

Page 14: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

begin transaction Eliminar

delete from DBO.PROFESIONES

where ID_PROF=@COD_PROF

if @@error=0

commit transaction Eliminar

else

rollback transaction Eliminar

end

Crear el almacenamiento almacenado digitar el código siguiente.

EL PROCEDIMIENTO ALMACENADO SE LLAMARA:

INSERTAR CONTACTO

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER procedure [dbo].[Insertarcontacto]

@COD_CONTACTO AS char(5),

@NOM_CONTACTO AS char(50),

@APE_CONTACTO AS char(50),

@ID_PROF AS bigint,

@DIRECCION1 AS CHAR(10),

@DIRECCION2 AS CHAR(100),

@E_MAIL AS CHAR(50),

@FECHA_NACIMIENTO AS datetime,

@LUGAR_TRABAJO AS CHAR(50),

@TEL_TRABAJO AS CHAR(8),

@TEL_PERSONAL AS CHAR(8),

@TEL_CASA AS CHAR(8)

AS

BEGIN

Page 15: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

begin transaction Insertar

insert into DBO.CONTACTOS(COD_CONTACTO, NOM_CONTACTO,

APE_CONTACTO,ID_PROF,

DIRECCION1,DIRECCION2, E_MAIL, FECHA_NACIMIENTO, LUGAR_TRABAJO,

TEL_TRABAJO, TEL_PERSONAL, TEL_CASA)

VALUES(@COD_CONTACTO, @NOM_CONTACTO, @APE_CONTACTO, @ID_PROF,

@DIRECCION1, @DIRECCION2, @E_MAIL, @FECHA_NACIMIENTO,

@LUGAR_TRABAJO, @TEL_TRABAJO, @TEL_PERSONAL, @TEL_CASA)

if @@error=0

commit transaction insertar

else

rollback transaction insertar

end

Crear el almacenamiento almacenado digitar el código siguiente.

EL PROCEDIMIENTO ALMACENADO SE LLAMARA:

INSERTAR PROFESION

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER procedure [dbo].[Insertarprofesion]

@COD_PROF AS char(5),

@DESCRIPCION as char(25)

as

begin

begin transaction insertar

insert into DBO.PROFESIONES(COD_PROF, DESCRIPCION)

VALUES (@COD_PROF, @DESCRIPCION)

if @@error=0

Page 16: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

commit transaction insertar

else

rollback transaction insertar

end

Crear el almacenamiento almacenado digitar el código siguiente.

EL PROCEDIMIENTO ALMACENADO SE LLAMARA:

LISTAR CONTACTOS

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER PROCEDURE [dbo].[ListadoContactos]

as

begin

SELECT C.COD_CONTACTO as Codigo, C.NOM_CONTACTO as Nombre,

C.APE_CONTACTO as Apellido,

P.DESCRIPCION as Profesión, LTRIM(RTRIM(C.DIRECCION1)) + ' ' +

LTRIM(RTRIM(C.DIRECCION2)) AS Dirección, C.E_MAIL as Email,

C.TEL_TRABAJO as Telefono

FROM CONTACTOS C LEFT OUTER JOIN PROFESIONES P

ON C.ID_PROF = P.ID_PROF

end

Crear el almacenamiento almacenado digitar el código siguiente.

EL PROCEDIMIENTO ALMACENADO SE LLAMARA:

LISTADO DE PROFESIONES

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

Page 17: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

ALTER procedure [dbo].[ListadoProfesiones]

as

begin

select cod_prof, descripcion from profesiones p

end

HACER UN COPIA DE SEGURIDAD DE SU BASE DATOS

Quitar la dirección copia de seguridad y guardar en la carpeta de c:\CONTACTOS\BASEDATOS.

VER LA PRACTICA DE REALIZAR BACKUP Y RESTAURAR BASES DE DATOS EN SQL 2008

Page 18: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Creación de un nuevo proyecto Contactos

1. Creamos nuestro proyecto de esta forma seleccionamos Crear Proyecto/ Sitio Web

a. Seleccionamos Visual Basic

b. Seleccionamos Web

c. Seleccionamos Aplicaciones Web. ASP.NET

d. Nombre: digitamos el nombre del proyecto CONTACTOS

e. Ubicación: digitamos el nombre de la carpeta donde la vamos a guardar

nuestro proyecto. C:\CONTACTOS

f. Nombre de la solución es automáticamente luego damos un clic en Aceptar

2. Ver figura siguiente

Page 19: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

1. Donde

a. Área de herramientas de controles que son los que se utilizan para crear nuestro

formularios

b. Área para diseñar nuestro formularios

Page 20: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

c. Explorador de soluciones hay dos funciones una donde muestra todo el listado de

nuestros formularios y el Explorador de servidores donde muestra la base datos

con sus respectivas tablas

d. Área de propiedades donde se configuran algunas opciones del formulario según

convenga el caso

e. Área donde se ven los errores cuando se ejecuta el proyecto

2. Después de haber creado el proyecto vamos a crear nuestra subcarpeta de base datos

dentro de nuestro proyecto para que podamos guardar nuestra base datos y seguimos

los siguientes pasos.

PARA RECUPERAR LA BASE DATOS ORIGINAL

Realizamos lo siguiente buscar en esta ruta y copiamos los siguientes archivos a nuestro proyecto base datos… c:\contactos\appdata

C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data

1 2 3

4

5

Page 21: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

a. Nos posicionamos en Explorador de Soluciones y damos un clic derecho

3. Y nos en Agregar carpeta ASP.NET y luego nos posicionamos en App_Data en eta

subcarpeta colocaremos nuestra base datos creada en SQL2005

Para crear nuestra base datos lo hacemos desde sql2005 y para conectar nuestra base datos lo

hacemos de la siguiente manera

4. Creamos nuestro proyecto luego nos vamos a la opción de Explorador de Servidores

Page 22: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

CONECTAR UNA BASE DATOS ASP.NET

5. Dar un clic en el explorador de servidores

6. Luego nos posicionamos en Conexión de Datos damos un clic derecho

7. Luego nos mostrara una pantalla donde seleccionaremos Agregar Conexión daremos

un clic.

8. Dar un clic en Cambiar para cambiar el servidor de sql

9. Para poder conectar la base datos.

Page 23: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Conectar el

servidor de Sql

Express

Seleccionar examinar

para buscar la ruta de

la base datos donde

la tenemos creada

Cambiamos el

seviso ded

SQL

Page 24: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

10. Seleccionamos Archivo de base datos de Micrsoft SQL Server y luego un clic en Aceptar

11. Nos mostrara la siguiente pantalla donde digitaremos el nombre de la base datos o

damos un clic en botón Examinar para buscar nuestra base datos

Page 25: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

12. Buscamos donde creamos nuestra base datos con la ruta donde la guardáramos

cuando la creamos en SQL pero lo más recomendables es guardar la base datos en la

misma carpeta donde se encuentra nuestro proyecto

Page 26: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

13. Seleccionamos la carpeta App_Data donde tenemos guardada la base datos y luego

damos un clic

14. Luego de obtener nuestra base datos damos un clic en Probar Conexión

Page 27: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

15. Nos mostrara una pantalla de conexión de prueba se realizo correctamente luego

damos un clic en Aceptar

16. Nos mostrara en Explorador de Servidores la conexión de nuestra base datos con el

proyecto además mostrara también todas las tablas creadas en nuestra base datos.

Page 28: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

17. También podemos adicionar una nueva tabla a nuestra base datos desde asp.net

Page 29: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

18. Y se trabaja de la misma manera como si estuviera en SQL

19. Luego de haber creado la tabla la guardamos

Page 30: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

20. Ya creada nuestra base datos realizamos lo siguiente verificamos en cuadro de

herramientas en la opción Datos si esta Sql Data Adapter para conectar nuestra base

datos con el formulario si no se encuentra realizamos los siguientes pasos.

21. Damos un clic derecho en el icono de puntero y seleccionamos la opción elegir

elementos esperamos unos segundos.

22. Luego nos mostrara una pantalla donde seleccionaremos cuatro elementos básicos

para poder conectar nuestra base datos con el formulario.

Page 31: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

23. Seleccionamos los comandos y luego damos un clic en Aceptar

24. Donde en el cuadro de herramientas nos mostrara los comandos agregados a la opción

de Datos

Page 32: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

25. Estamos listo para conectar nuestra base datos con el formulario y realizamos lo

siguiente. Seleccionamos SqlDatasource y lo arrastramos hacia nuestro formulario

Page 33: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

26. Damos un clic en siguiente seleccionando la primera opción siempre y cuando en

nuestro proyecto no estemos manejando procedimientos almacenados de lo contrario

tenemos que seleccionar la segunda opción o tercera según convenga el caso.

27. Esta función nos ayudar mucho para crear nuestros formularios de consulta donde

automáticamente el SQL nos ayuda a crear nuestra consulta y el query que nos

muestra en pantalla lo copiamos hacia el botón de consulta de nuestro formulario para

que esta consulta se genere solo programaremos los botones de consulta para que

muestre la información creada en el query de SQL. Como los muestran las siguientes

pantallas.

Page 34: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

28. Seleccionamos la tablas o tablas para realizar la consulta a través del query que genera

automáticamente SQL

Page 35: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

29. Luego seleccionadas la tabla o tablas SQL nos crea automáticamente el query lo único

que tenemos que realizar es seleccionar los campos de la tabla o tablas para que

genere la consulta

30. Si nos diera un error de conexión remota

31. Conectamos los servicios de SQL 2005 de la siguiente forma nos posicionamos en cada

uno de las opciones deshabilitado.

32. Damos un clic derecho y nos posicionamos en Habilitar para poder habilitar el servicio

Page 36: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

33. Luego de Haber habilitado los servicios damos un clic en aceptar y cerramos la

pantalla de servicios de SQL2005

34. Después de haber conectado nuestra base datos estamos listo para diseñar nuestro

proyecto web se puede utilizar diferentes programas (Software) para diseñar una base

datos. Hoy en día existen una infinidad de software para desarrollar páginas web entre

ellos tenemos ASP.NET como integración de formularios y base datos. También

tenemos Drenweaber que se integra muy fácil con la plataforma .NET. y para diseño de

HTML puede utilizar el que más les guste. A continuación se publican unas direcciones

de sitios web donde pueden bajar software para su diseño.

a. www.taringa.net

b. www.luchoedu.org este es un blog a lado derecho hay una opción de Diseño

dar un clic y muestra solo software para diseñar paginas web.

Page 37: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

MAPA PROPUESTO

Página Principal

Manejo de Contactos

Adición/Modificación de

contactos

Manejo de Profesiones

Adición/Modificación de

Profesiones

Envío de Correo Electronico

Envío de Correo

Electronico

Page 38: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

DESARROLLO DEL SITIO

Creación de una clase de conexión

Objetivos

Crear una clase que maneje las conexiones

Utilizar el archivo web.config para parametrizar configuraciones especiales

Configuración del archivo web.config Se pretende que el nombre del servidor y el nombre de la bd, puedan ser modificados sin

necesidad de generar cada vez la aplicación.

En el archivo web.config dar doble clic y escribir la siguiente sección

Digitar el nombre de su Pc

y la clave que le digito

cuando instalo su SQL

2008

Page 39: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Creación de una clase para interactuar con la base de datos Crear una clase que maneje todas las funciones relacionadas con la consulta o manipulación de

datos, la primera función se encargará de manejar la conexión.

PARA CREAR UNA CLASE REALIZAMOS LO SIGUIENTE NOS POSICIONAMOS EN EXPLORADOR DEDE SOLUCIONES LUEGO EN LA

CARPETA APP_CODE CLIC DERECHO NUEVO ELEMENTO SELECCIONAMOS LA OPCION CLASE DIGITAMOS EL NOMBRE DE LA CLASE

LUEGO DIGITAMOS EL CODIGO ANTERIOR EN LA NUEVA CLASE CON EL NOMBRE DE CLASEBD

Page 40: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Por el momento la clase tendrá el código siguiente

Imports System.Data

Imports System.Data.SqlClient

Namespace ClasesAdicionales

Public Class ClaseBD

Public Function ConexionBD (ByVal usuario As String, ByVal clave As String) As SqlConnection

Dim Conexion As SqlConnection

Dim strConn As String

strConn = ConfigurationSettings.AppSettings("Conexion")

strConn = strConn & ";uid=" & usuario

strConn = strConn & ";pwd=" & clave

Conexion = New SqlConnection(strConn)

Return Conexion

End Function

End Class

End Namespace

Creación de la página de Ingreso del Sitio

Objetivo

Crear una página que verifique la conexión del usuario a la base de datos

Utilización de las variables de Sesión para guardar el usuario y la clave 1. Crear un formulario llamado frmBienvenida, este formulario debe mostrar el menú del

sitio, además de los controles necesarios para validar la conexión a la base de datos. 2. Si la conexión es exitosa debe ser mostrada la página de consulta de los contactos

(crear un formulario llamado frmContactos en blanco)

El diseño del formulario puede ser:

Page 41: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Donde menuSitio1 es un control de usuario que permite la navegación entre las páginas del

sitio. Cada página del sitio debe validar que las variable de session del usuario no este vacía, en

caso de estarlo debe re-dirigir a la página de bienvenida.

Programación del botón conectar

Este botón debe tomar los valores ingresados para usuario y clave y validar la conexión, el

código propuesto es el siguiente:

Private Sub btnConectar_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles btnConectar.Click

Dim Conexion As SqlConnection

Try

Conexion = Miclase.ConexionBD(txtUsuario.Text, txtClave.Text)

Conexion.Open()

Session("Usuario") = txtUsuario.Text

Session("Clave") = txtClave.Text

Conexion.Close()

Response.Redirect("frmContactos.aspx")

Catch ex As Exception

lblError.Text = ex.Message

End Try

End Sub

Previamente se hace referencia a la clase CLASEBD (Protected MICLASE As New

CONTACTOS.ClasesAdicionales.ClaseBD())

Page 42: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Diseño de la página de Contactos

Esta página debe permitir al usuario los siguientes:

Mostrar los registros existentes – permitir paginación

Permitir Añadir un nuevo contacto

Permitir Modificar un contracto

Permitir Eliminar un contacto

Para mostrar los registros… 1. En el formulario de contactos incluir un grid 2. Escribir el código necesario en el evento load para cargar la tabla de Contactos,

recuperar una tabla a través de una clase:

Imports System.Data

Imports System.Data.SqlClient

Protected Miclase As New CONTACTOS.ClasesAdicionales.ClaseBD()

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub

InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

'Do not modify it using the code editor.

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

End Sub

Page 43: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Private Sub btnConectar_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles btnConectar.Click

Dim Conexion As SqlConnection

Try

Conexion = Miclase.ConexionBD(txtUsuario.Text, txtClave.Text)

Conexion.Open()

Session("Usuario") = txtUsuario.Text

Session("Clave") = txtClave.Text

Conexion.Close()

Response.Redirect("frmContactos.aspx")

Catch ex As Exception

lblError.Text = ex.Message

End Try

End Sub

End Class

3. Esta clase permitirá recuperar los datos de una tabla para luego vincularlos a algún control

4. Adicionalmente mostrar en una etiqueta la cantidad de registros encontrados 5. El diseño del formulario es como sigue :

a. Diseñar una datagrid

Page 44: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Public Class frmContactos

Inherits System.Web.UI.Page

Protected WithEvents dgDatos As

System.Web.UI.WebControls.DataGrid

Protected WithEvents Label1 As

System.Web.UI.WebControls.Label

Protected WithEvents lblRegistros As

System.Web.UI.WebControls.Label

Protected WithEvents LinkPrincipal As

System.Web.UI.WebControls.HyperLink

Protected WithEvents lblError As

System.Web.UI.WebControls.Label

Protected MICLASE As New

CONTACTOS.ClasesAdicionales.ClaseBD()

#Region " Web Form Designer Generated Code "

'Esta llamada es requerida por el Diseñador de Web Forms.

<System.Diagnostics.DebuggerStepThrough()>

Private Sub InitializeComponent()

End Sub

Page 45: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Init

'CODEGEN: llamada al método es requerida por el Diseñador de Web Forms

'No lo modifique con el editor de código.

InitializeComponent()

End Sub

#End Region

6. En el evento load de la pagina debe ser como sigue :

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

'Poner el código de usuario para inicializar la página aquí

Dim Dts As DataSet

Dim Tabla As DataTable

If Not Page.IsPostBack Then

If Session("Usuario") = Nothing Then

Response.Redirect("frmBienvenida.aspx")

Else

' recuperar las tablas de contactos y profesiones

Tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from CONTACTOS")

Session("MiTabla") = Tabla

dgDatos.DataSource = Tabla

dgDatos.DataBind()

lblRegistros.Text =

Tabla.Compute("count(COD_CONTACTO)", Nothing)

End If

End If

End Sub

Page 46: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Sub Paginar(ByVal sender As Object, ByVal e As

DataGridPageChangedEventArgs)

dgDatos.CurrentPageIndex = e.NewPageIndex

' recuperar los datos

'Dim tabla As DataTable

'tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from CONTACTOS")

dgDatos.DataSource = Session("MiTabla")

dgDatos.DataBind()

End Sub

Sub OnDelete(ByVal sender As Object, ByVal e As

DataGridCommandEventArgs)

Dim Tabla As DataTable

Dim xIdentificador As String ' para recuperar el

identificador del usuarios

Dim Parametros(0) As Object ' parametros del

procedimiento a ejecutar en la base de datos

Dim NParametros(0) As Object

Dim Resultado As String

' para recuperar el indntificador

xIdentificador = dgDatos.DataKeys.Item(e.Item.ItemIndex)

' para los parametros del procedimiento almacenado

Parametros(0) = xIdentificador

NParametros(0) = "@COD_CONTACTO"

' ejecucion del procedimiento

lblError.Text = MICLASE.EliminaContactos(xIdentificador,

Session("USUARIO"), Session("clave"))

' refrescar el grid

dgDatos.EditItemIndex = -1

Page 47: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

dgDatos.CurrentPageIndex = 0

Tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from CONTACTOS")

Session("MiTabla") = Tabla

dgDatos.DataSource = Tabla

dgDatos.DataBind()

lblRegistros.Text = Tabla.Compute("count(COD_CONTACTO)",

Nothing)

End Sub

End Class

7. Examinar el código anterior y luego correr el proyecto 8. ¿Que ventaja hay sobre el uso de una clase para manejar la conexión y la recuperación

de datos? 9. Repasar el control DataGrid y la forma como cambiar aspecto y añadir columnas

Page 48: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

IMPLEMENTANDO LA PAGINACIÓN DE REGISTROS 1. Para el objeto DataGrid modificar las siguientes propiedades

2. Correr el proyecto y observar el resultado … 3. Adicionalmente escribir una rutina para manejar que cada vez que haya un cambio de

pagina sean refrescado el grid :

Sub Paginar(ByVal sender As Object, ByVal e As

DataGridPageChangedEventArgs)

dgDatos.CurrentPageIndex = e.NewPageIndex

' recuperar los datos

Dim tabla As DataTable

tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from CONTACTOS")

dgDatos.DataSource = tabla

dgDatos.DataBind()

End Sub

4. Adicionalmente añadir en el html del grid que para el OnPageIndexChanged efectúe el código definido como "paginar"

5. Correr y probar el proyecto

Page 49: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

6. ¿Qué sucede cada vez que el usuario cambia de página? 7. ¿Qué recomendación puede darse para evitar que cada vez que haya cambio de

página haya una conexión a la base de datos?

Uso de variables de Session Las variables de session contienen información especifica que existe mientras la session exista,

en este caso se propone como una salida para guardar los resultados de la tabla en el ejemplo

anterior.

El cambio debe ser como sigue :

1. Añadir una linea para cargar la variable de session luego de recuperar la tabla en el evento Load - Session("MiTabla") = Tabla

2. En el código de paginar leer la variable de session como DataSource para el grid (poner comentario en el resto) - dgDatos.DataSource = Session("MiTabla")

3. Correr el proyecto y verificar el resultado

Creación de una página de Ingreso de Contactos

Diseño de la página Crear una pagina llamada frmAgregarContactos, con el siguiente diseño:

Adicionalmente añadir un link desde la página de contactos a esta nueva página.

Correr el proyecto y verificar que el link funciona. Luego examinar los controles colocados en

esta nueva pagina.

El aspecto en diseño debe ser el siguiente:

Page 50: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Campos Utilizados

OBJETO PROPIEDAD Uso Validación

ETIQUETA Lbl Codigo Asignado

ETIQUETA Lbl Profesion

ETIQUETA Lbl Nombres

ETIQUETA Lbl Apellidos

ETIQUETA Lbl Fecha de Nacimiento

ETIQUETA Lbl Correo Electronico

ETIQUETA Lbl Telefono de contacto

ETIQUETA LblAccion (label) Relacion

Mostrar la operación

Laboral, personal u

otro

n/a

CAJA DE TEXTO txtCodigo Ingresar el código x

asignar

Requerido

CAJA DE TEXTO txtNombre Ingresar el nombre

del contacto

Requerido

Page 51: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

CAJA DE TEXTO txtApellido Ingresar el apellido

del contacto

Requerido

CAJA DE TEXTO txtFechaNacimiento Ingresar la fecha de

nacimiento

Requerido y formato

de fecha

CAJA DE TEXTO txtCorreo Ingresar el correo

electrónico

Requerido y

formado de correo

BOTONES btnGrabar Botón que permite

grabar el registro

n/a

BOTONES btnCancelar Botón que permite

cancelar la opción

Modificar la

propiedad

CausesValidation a

False

ddlProfesion Mostrar las

profesiones

disponibles

lblError Presentar los errores

en las operaciones

Correr el proyecto y verificar el resultado.

1. Crear un procedimiento almacenado que inserte o modifique registros a la tabla de contactos. GUARDARLO CON EL NOMBRE DE sp_InsertaModifica_CONTACTOS

CREATE PROCEDURE [dbo].[sp_InsertaModifica_CONTACTOS]

@COD_CONTACTO CHAR(5), @NOM_CONTACTO CHAR(50), @APE_CONTACTO CHAR(50),

@COD_PROF CHAR(5) , @TIPO CHAR(1),

@E_MAIL CHAR(50), @TEL_PERSONAL CHAR(8), @FECHA_NACIMIENTO

DATETIME,@ACCION CHAR(1)

AS

BEGIN

IF @ACCION = 'A'

Page 52: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

INSERT INTO CONTACTOS

(COD_CONTACTO,NOM_CONTACTO,APE_CONTACTO,COD_PROF,TIPO,E_MAIL,TEL_PERSO

NAL, FECHA_NACIMIENTO)

VALUES(@COD_CONTACTO,@NOM_CONTACTO,@APE_CONTACTO,@COD_PROF,@TIPO,

@E_MAIL,@TEL_PERSONAL, @FECHA_NACIMIENTO)

ELSE

UPDATE CONTACTOS

SET NOM_CONTACTO = @NOM_CONTACTO,

APE_CONTACTO = @APE_CONTACTO,

COD_PROF = @COD_PROF,

TIPO = @TIPO,

E_MAIL = @E_MAIL,

TEL_PERSONAL = @TEL_PERSONAL,

FECHA_NACIMIENTO = @FECHA_NACIMIENTO

WHERE COD_CONTACTO = @COD_CONTACTO

END

GO

2. Crear una función que permita crear el registro Public Function InsertaModificaContactos(ByVal Accion As String,

ByVal cod_contacto As String, ByVal nom_contacto As String,

ByVal ape_contacto As String, ByVal cod_prof As String, ByVal

tipo As String, ByVal e_mail As String, ByVal tel_personal As

String, ByVal fecha_nacimiento As String, ByVal usuario As

String, ByVal clave As String) As String

Dim Conexion As SqlConnection

Dim Comando As SqlCommand

Dim Parametros As SqlParameter

Dim resultado As String

Try

Page 53: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Conexion = ConexionBD(usuario, clave)

Comando = New

SqlCommand("sp_InsertaModifica_CONTACTOS", Conexion)

Comando.CommandType = CommandType.StoredProcedure

Comando.Parameters.Add("@cod_contacto", cod_contacto)

Comando.Parameters.Add("@nom_contacto", nom_contacto)

Comando.Parameters.Add("@ape_contacto", ape_contacto)

Comando.Parameters.Add("@cod_prof", cod_prof)

Comando.Parameters.Add("@tipo", tipo)

Comando.Parameters.Add("@e_mail", e_mail)

Comando.Parameters.Add("@tel_personal", tel_personal)

Comando.Parameters.Add("@fecha_nacimiento",

CDate(fecha_nacimiento))

Comando.Parameters.Add("@accion", Accion)

Conexion.Open()

Comando.ExecuteNonQuery()

Conexion.Close()

resultado = "Registro Grabado"

Return resultado

Catch ex As Exception

resultado = ex.Message

Return resultado

End Try

End Function

3. Programar el botón de grabar para ejecutar el procedimiento de inserción y mostrar el resultado

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

e As System.EventArgs) Handles btnCrear.Click

lblError.Text =

MICLASE.InsertaModificaContactos(IIf(Trim(lblAccion.Text) =

Page 54: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

"Añadir un nuevo Contacto", "A", "M"), txtCodigo.Text,

txtNombre.Text, txtApellido.Text,

ddlProfesion.SelectedItem.Value, rblRelacion.SelectedItem.Value,

txtCorreo.Text, txtTelefono.Text, txtFechaNacimiento.Text,

Session("USUARIO"), Session("clave"))

End Sub

4. Correr y verificar el resultado 5. ¿Que tenemos hasta ahora?

a. Utilización de funciones para manejar conexión y otros b. Utilización de funciones para recuperar Datables c. Manejo de Errores d. Utilización de funciones para ejecutar procedimientos e insertar registros

Presentación de los resultados

¿Cómo se ha logrado la inserción de un registro?

A través de la ejecución de un procedimiento en la base de datos con los parámetros del caso,

adicionalmente se envié el tipo de accion (“A” indica si es adición y “M” servirá para la

modificación)

Page 55: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Modificación de Registros – selección de un registro en un DataGrid

Ahora podemos ya registrar un nuevo contacto, sin embargo es necesario permitir al usuario

las modificaciones a contactos existentes bajo los siguientes acuerdos:

La clave o código del contacto no puede ser modificada

La bandera utilizada en el procedimiento almacenado para indicar que es una modificación es M

Desde la pagina de contactos debe accederse la pagina de modificación de contactos (que con pocas modificaciones a la de agregar debe permitir esta funcionalidad sin generar errores)

Cambios en la página de contactos

1. Añadir una columna en el grid de contactos que permita navegar hasta la pagina de modificacion (frmAgregarContactos.aspx):

La nueva columna permitirá navegar hasta la pagina de AgregarContactos,

además de indicar el codigo del contacto que ha sido seleccionado

(FrmAgregarContactos.aspx?COD_CONTACTO={0})

2. Correr y verificar el resultado

Page 56: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Como mostrar los datos en la página de modificación

1. Al cargar la página de modificación debemos indicar que la operación es una “modificación de datos”, adicionalmente debemos mostrar los datos del registro

2. Para modificar la etiquera de acción, podemos evaluar el querystring que hemos enviado (solo en los casos de modificación aparece el codigo del contacto)

En el load añadimos (antes de poblar la tabla de profesiones)

' evaluar si se trata de una modificacion

If Request.QueryString("COD_CONTACTO") <> "" Then

lblAccion.Text = "Modificar contacto existente"

End If

3. Correr y verificar el resultado 4. Adicionalmente debemos recuperar los datos del contacto seleccionado y mostrar en

cada control del formulario los datos según aplique. 5. El control de profesiones debe mostrar la profesión del contacto, adicionalmente debe

permitir elegir otra profesión 6. La propuesta del evento Load es como sigue :

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

If Not Page.IsPostBack Then

Dim tabla As DataTable

' evaluar si se trata de una modificacion

If Request.QueryString("COD_CONTACTO") <> "" Then

lblAccion.Text = "Modificar contacto existente"

' recuperar los datos del contacto

Dim xCodigoProfesion

tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from CONTACTOS WHERE COD_CONTACTO=

" & "'" & Request.QueryString("COD_CONTACTO") & "'")

txtCodigo.Text =

trim(tabla.Rows(0).Item("cod_contacto"))

Page 57: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

txtCodigo.Enabled = False

txtApellido.Text =

trim(tabla.Rows(0).Item("ape_contacto"))

txtNombre.Text =

trim(tabla.Rows(0).Item("nom_contacto"))

txtFechaNacimiento.Text =

trim(tabla.Rows(0).Item("fecha_nacimiento"))

txtCorreo.Text =

trim(tabla.Rows(0).Item("e_mail"))

txtTelefono.Text =

trim(tabla.Rows(0).Item("tel_personal"))

xCodigoProfesion =

trim(tabla.Rows(0).Item("cod_prof"))

tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from PROFESIONES where cod_prof=" &

"'" & xCodigoProfesion & "'")

ddlProfesion.DataTextField = "DESCRIPCION"

ddlProfesion.DataValueField = "COD_PROF"

ddlProfesion.DataSource = tabla

ddlProfesion.DataBind()

' incluir una opcion para elegir

ddlProfesion.Items.Add("*SELECCIONAR OTROS")

Else

' poblar la tabla de profesiones

tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from PROFESIONES")

ddlProfesion.DataTextField = "DESCRIPCION"

ddlProfesion.DataValueField = "COD_PROF"

ddlProfesion.DataSource = tabla

ddlProfesion.DataBind()

Page 58: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

End If

End If

End Sub

7. Adicionalmente debe programarse que al momento de elegir otra profesion, se desplieguen en el cuadro de lista las otras profesiones :

a. Asegurar que el AutoPostback del cuadro de lista este en true b. Programar el evento

Private Sub ddlProfesion_SelectedIndexChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ddlProfesion.SelectedIndexChanged

If ddlProfesion.SelectedItem.Text = "*SELECCIONAR OTROS" Then

Dim Tabla As DataTable

Tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from PROFESIONES")

ddlProfesion.DataTextField = "DESCRIPCION"

ddlProfesion.DataValueField = "COD_PROF"

ddlProfesion.DataSource = Tabla

ddlProfesion.DataBind()

End If

End Sub

8. Revisar y discutir el nuevo código que permite la modificación del registro 9. Probar y verificar el proyecto

Presentación de Resultados

Page 59: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Como eliminar un registro desde el Grid

Por el momento están implantadas las siguientes funcionalidades:

Agregar un registro

Modificar un registro

Ahora propondremos la siguiente solución para permitir al usuario eliminar un contacto:

Añadir un celda para Eliminar

Al presionar esta celda en un registro determinado, se ejecuta un procedimiento de eliminación del registro

El grid de consulta de contactos se actualiza para mostrar los existentes

Efectuar los pasos siguientes para lograr lo anterior:

Creación del Procedimiento en la base de datos

1. Crear un procedimiento almacenado en la base de datos que permita la eliminación de un registro

CREATE PROCEDURE [dbo].[sp_Elimina_CONTACTOS]

@COD_CONTACTO CHAR(5)

AS

BEGIN

DELETE CONTACTOS

WHERE COD_CONTACTO = @COD_CONTACTO

END

Modificaciones en el formulario

2. Añadir el código necesario en la clase ClaseBD para manejar la ejecución del anterior procedimiento :

Public Function EliminaContactos(ByVal cod_contacto As

String, ByVal usuario As String, ByVal clave As String) As

String

Dim Conexion As SqlConnection

Dim Comando As SqlCommand

Dim Parametros As SqlParameter

Dim resultado As String

Page 60: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Try

Conexion = ConexionBD(usuario, clave)

Comando = New SqlCommand("sp_Elimina_CONTACTOS", Conexion)

Comando.CommandType = CommandType.StoredProcedure

Comando.Parameters.Add("@cod_contacto", cod_contacto)

Conexion.Open()

Comando.ExecuteNonQuery()

Conexion.Close()

resultado = "Registro Eliminado :" & cod_contacto

Return resultado

Catch ex As Exception

resultado = ex.Message

Return resultado

End Try

End Function

Esta función retornara un valor string en el caso de que se produzca un error, por lo tanto

también es necesario agregar a la forma de contactos una etiqueta de error (lblerror).

3. Sobre el formulario frmContactos.aspx para el grid dgDatos añadir una columna” tipo ButtonColumn y el Texto del botón debe indicar “Eliminar”.

4. Indicar en la propiedad DataKeyField (del grid) el campo llave de la tabla vinculada (COD_CONTACTO)

5. Correr el proyecto y verificar que la columna aparezca. 6. Añadir un procedimiento en el codigo que se encargue de la ejecución del registro

seleccionado :

Page 61: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Sub OnDelete(ByVal sender As Object, ByVal e As

DataGridCommandEventArgs)

Dim Tabla As DataTable

Dim xIdentificador As String ' para recuperar el

identificador del usuarios

Dim Parametros(0) As Object ' parametros del

procedimiento a ejecutar en la base de datos

Dim NParametros(0) As Object

Dim Resultado As String

' para recuperar el indntificador

xIdentificador = dgDatos.DataKeys.Item(e.Item.ItemIndex)

' para los parametros del procedimiento almacenado

Parametros(0) = xIdentificador

NParametros(0) = "@COD_CONTACTO"

' ejecucion del procedimiento

lblError.Text = MICLASE.EliminaContactos(xIdentificador,

Session("USUARIO"), Session("clave"))

' refrescar el grid

dgDatos.EditItemIndex = -1

dgDatos.CurrentPageIndex = 0

Tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from CONTACTOS")

Session("MiTabla") = Tabla

dgDatos.DataSource = Tabla

dgDatos.DataBind()

lblRegistros.Text = Tabla.Compute("count(COD_CONTACTO)",

Nothing)

End Sub

Page 62: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

7. Correr y verificar el resultado, ¿ pudo eliminarse un registro? 8. Asociar el proc OnDelete con el grid dgDatos – en vista HTML ubicar la definición del

grid y agregar OnDeleteCommand ="OnDelete" 9. Correr y verificar el resultado 10. Al correr la pagina debe lucir de la siguiente forma :

Page 63: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Enviar correo electrónico

Ahora implantaremos el envío de correo electrónico para un contacto, disponiendo de dos

puntos para el envío:

Página de modificación del contacto

Menú Principal del sistema

Enviar correo electrónico desde la página de modificación

Los pasos a seguir son:

Formulario correo electronico

1. Crear una pagina llamada frmEnviarCorreo.aspx 2. La página debe contener los controles necesarios para ingresar el destino, remitente,

asunto y texto del correo, adicionalmente un botón que se encarga del envío del correo

3. Añadir en el web.config un valor para indicar la ip del servidor de correo a utilizar ( <add key = "ServidorCorreoOtro" value = "200.12.229.147"/>)

4. Añadir la programación necesaria para efectuar el envío, para esto se utiliza la clase web.mail, la referencia a esta clase debe ir al principio del código escondido del formulario.

Page 64: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Private Sub btnEnviar_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles btnEnviar.Click

Dim resultado As Integer

Dim objMM As New MailMessage()

objMM.To = txtPara.Text

objMM.From = txtDe.Text

objMM.BodyFormat = MailFormat.Text

objMM.Priority = MailPriority.Normal

objMM.Subject = txtAsunto.Text

objMM.Body = txtContenido.Text

SmtpMail.SmtpServer =

ConfigurationSettings.AppSettings("ServidorCorreo")

SmtpMail.Send(objMM)

End Sub

5. Añadir en la página de modificar formulario un link que permita llegar a la pagina de envío de formulario, este link debe estar visible únicamente si se trata de una modificación, adicionalmente al cargar el formulario de envío de correo debe aparecer el correo del destinatario. Cambiar la propiedad visible del link a false, de esta forma cuando se evalúa si es una modificación ahí nuevamente cambiar a true : ' para enviar un correo

linkEnviarCorreo.Visible = True

linkEnviarCorreo.NavigateUrl=

"frmEnviarCorreo.aspx?CorreoDestino=" & txtCorreo.Text

6. Al cargar la pagina del envío de correo debe leerse la variable CorreoDestino, si esta definida mostrarse en el cuadro de texto utilizado para el destino del correo, adicionalmente cada cuadro de texto debe tener los controles de validación suficientes y necesarios.

7. Correr el proyecto y verificar el resultado 8. Examinar el objeto y código que es utilizado para el envío de correo 9. ¿Que es imprescindible para lograr el envío de un correo con éxito?

Page 65: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Enviar correo desde el menú principal del sitio

Esta funcionalidad requiere que desde el menú el usuario pueda cargar la pagina de envío de

correos, únicamente es necesario añadir un link al control de usuario responsable del menú

para acceder a la página de envío de correos.

Para finalizar…

Identificar puntos de mejora en la propuesta,

¿Que código puede ser convertido en clase?

¿Qué manejos de errores no están considerados?

¿Qué validaciones por formulario están pendientes?

Investigar la rutina necesaria para cargar una imagen por contacto, adicionalmente el código

necesario para que al cargar la página de modificación del contacto se despliegue la imagen

asociada.

Investigar los cambios necesarios para permitir desde el grid hacer una modificación – uso de

una columna select para modificar.

Trabajar en el desarrollo de un mantenimiento para el módulo de profesiones.

Page 66: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Anexo 1 - Formulario de agregar antes de hacer los cambios para poder modificar un

registro

Public Class frmAgregarContactos

Inherits System.Web.UI.Page

Protected WithEvents Label1 As

System.Web.UI.WebControls.Label

Protected WithEvents Label2 As

System.Web.UI.WebControls.Label

Protected WithEvents Label3 As

System.Web.UI.WebControls.Label

Protected WithEvents Label4 As

System.Web.UI.WebControls.Label

Protected WithEvents Label5 As

System.Web.UI.WebControls.Label

Protected WithEvents Label6 As

System.Web.UI.WebControls.Label

Protected WithEvents txtCodigo As

System.Web.UI.WebControls.TextBox

Protected WithEvents txtNombre As

System.Web.UI.WebControls.TextBox

Protected WithEvents txtFechaNacimiento As

System.Web.UI.WebControls.TextBox

Protected WithEvents txtCorreo As

System.Web.UI.WebControls.TextBox

Protected WithEvents txtTelefono As

System.Web.UI.WebControls.TextBox

Protected WithEvents rblRelacion As

System.Web.UI.WebControls.RadioButtonList

Protected WithEvents btnCrear As

System.Web.UI.WebControls.Button

Protected WithEvents btnCancelar As

System.Web.UI.WebControls.Button

Protected WithEvents txtApellido As

System.Web.UI.WebControls.TextBox

Page 67: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Protected WithEvents RequiredFieldValidator1 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator2 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator3 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator4 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator5 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator6 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents CompareValidator1 As

System.Web.UI.WebControls.CompareValidator

Protected WithEvents RegularExpressionValidator1 As

System.Web.UI.WebControls.RegularExpressionValidator

Protected WithEvents ddlProfesion As

System.Web.UI.WebControls.DropDownList

Protected WithEvents Label7 As

System.Web.UI.WebControls.Label

Protected WithEvents lblError As

System.Web.UI.WebControls.Label

Protected WithEvents lblAccion As

System.Web.UI.WebControls.Label

Protected MICLASE As New

CONTACTOS.ClasesAdicionales.ClaseBD()

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub

InitializeComponent()

End Sub

Page 68: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Private Sub Page_Init(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form

Designer

'Do not modify it using the code editor.

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

If Not Page.IsPostBack Then

Dim tabla As DataTable

' poblar la tabla de profesiones

tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from PROFESIONES")

ddlProfesion.DataTextField = "DESCRIPCION"

ddlProfesion.DataValueField = "COD_PROF"

ddlProfesion.DataSource = tabla

ddlProfesion.DataBind()

End If

End Sub

Private Sub btnCancelar_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles btnCancelar.Click

Response.Redirect("frmContactos.aspx")

Page 69: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

End Sub

Private Sub btnCrear_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles btnCrear.Click

lblError.Text =

MICLASE.InsertaModificaContactos(IIf(Trim(lblAccion.Text) =

"Añadir un nuevo Contacto", "A", "M"), txtCodigo.Text,

txtNombre.Text, txtApellido.Text,

ddlProfesion.SelectedItem.Value, rblRelacion.SelectedItem.Value,

txtCorreo.Text, txtTelefono.Text, txtFechaNacimiento.Text,

Session("USUARIO"), Session("clave"))

End Sub

End Class

Page 70: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Anexo 2 – Formulario finalizado para agregar y modificar contactos

Public Class frmAgregarContactos

Inherits System.Web.UI.Page

Protected WithEvents Label1 As

System.Web.UI.WebControls.Label

Protected WithEvents Label2 As

System.Web.UI.WebControls.Label

Protected WithEvents Label3 As

System.Web.UI.WebControls.Label

Protected WithEvents Label4 As

System.Web.UI.WebControls.Label

Protected WithEvents Label5 As

System.Web.UI.WebControls.Label

Protected WithEvents Label6 As

System.Web.UI.WebControls.Label

Protected WithEvents txtCodigo As

System.Web.UI.WebControls.TextBox

Protected WithEvents txtNombre As

System.Web.UI.WebControls.TextBox

Protected WithEvents txtFechaNacimiento As

System.Web.UI.WebControls.TextBox

Protected WithEvents txtCorreo As

System.Web.UI.WebControls.TextBox

Protected WithEvents txtTelefono As

System.Web.UI.WebControls.TextBox

Protected WithEvents rblRelacion As

System.Web.UI.WebControls.RadioButtonList

Protected WithEvents btnCrear As

System.Web.UI.WebControls.Button

Protected WithEvents btnCancelar As

System.Web.UI.WebControls.Button

Protected WithEvents txtApellido As

System.Web.UI.WebControls.TextBox

Page 71: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Protected WithEvents RequiredFieldValidator1 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator2 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator3 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator4 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator5 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator6 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents CompareValidator1 As

System.Web.UI.WebControls.CompareValidator

Protected WithEvents RegularExpressionValidator1 As

System.Web.UI.WebControls.RegularExpressionValidator

Protected WithEvents ddlProfesion As

System.Web.UI.WebControls.DropDownList

Protected WithEvents Label7 As

System.Web.UI.WebControls.Label

Protected WithEvents lblError As

System.Web.UI.WebControls.Label

Protected WithEvents lblAccion As

System.Web.UI.WebControls.Label

Protected WithEvents linkEnviarCorreo As

System.Web.UI.WebControls.HyperLink

Protected MICLASE As New

CONTACTOS.ClasesAdicionales.ClaseBD()

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub

InitializeComponent()

Page 72: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form

Designer

'Do not modify it using the code editor.

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

If Not Page.IsPostBack Then

Dim tabla As DataTable

' evaluar si se trata de una modificacion

If Request.QueryString("COD_CONTACTO") <> "" Then

lblAccion.Text = "Modificar contacto existente"

' recuperar los datos del contacto

Dim xCodigoProfesion As String

Dim xRelacion As String

tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from CONTACTOS WHERE COD_CONTACTO=

" & "'" & Request.QueryString("COD_CONTACTO") & "'")

txtCodigo.Text =

tabla.Rows(0).Item("cod_contacto")

txtCodigo.Enabled = False

Page 73: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

txtApellido.Text =

Trim(tabla.Rows(0).Item("ape_contacto"))

txtNombre.Text =

Trim(tabla.Rows(0).Item("nom_contacto"))

txtFechaNacimiento.Text =

Trim(tabla.Rows(0).Item("fecha_nacimiento"))

txtCorreo.Text =

Trim(tabla.Rows(0).Item("e_mail"))

txtTelefono.Text =

Trim(tabla.Rows(0).Item("tel_personal"))

xCodigoProfesion =

Trim(tabla.Rows(0).Item("cod_prof"))

xRelacion = Trim(tabla.Rows(0).Item("tipo"))

If xRelacion = "P" Then

rblRelacion.Items(0).Selected = False

rblRelacion.Items(1).Selected = True

ElseIf xRelacion = "O" Then

rblRelacion.Items(0).Selected = False

rblRelacion.Items(2).Selected = True

End If

tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from PROFESIONES where cod_prof=" &

"'" & xCodigoProfesion & "'")

ddlProfesion.DataTextField = "DESCRIPCION"

ddlProfesion.DataValueField = "COD_PROF"

ddlProfesion.DataSource = tabla

ddlProfesion.DataBind()

' incluir una opcion para elegir

ddlProfesion.Items.Add("*SELECCIONAR OTROS")

' para enviar un correo

Page 74: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

linkEnviarCorreo.Visible = True

linkEnviarCorreo.NavigateUrl =

"frmEnviarCorreo.aspx?CorreoDestino=" & txtCorreo.Text

Else

' poblar la tabla de profesiones

tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from PROFESIONES")

ddlProfesion.DataTextField = "DESCRIPCION"

ddlProfesion.DataValueField = "COD_PROF"

ddlProfesion.DataSource = tabla

ddlProfesion.DataBind()

End If

End If

End Sub

Private Sub btnCancelar_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles btnCancelar.Click

Response.Redirect("frmContactos.aspx")

End Sub

Private Sub btnCrear_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles btnCrear.Click

lblError.Text =

MICLASE.InsertaModificaContactos(IIf(Trim(lblAccion.Text) =

"Añadir un nuevo Contacto", "A", "M"), txtCodigo.Text,

txtNombre.Text, txtApellido.Text,

ddlProfesion.SelectedItem.Value, rblRelacion.SelectedItem.Value,

txtCorreo.Text, txtTelefono.Text, txtFechaNacimiento.Text,

Session("USUARIO"), Session("clave"))

Page 75: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

End Sub

Private Sub ddlProfesion_SelectedIndexChanged(ByVal sender

As System.Object, ByVal e As System.EventArgs) Handles

ddlProfesion.SelectedIndexChanged

If ddlProfesion.SelectedItem.Text = "*SELECCIONAR OTROS"

Then

Dim Tabla As DataTable

Tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from PROFESIONES")

ddlProfesion.DataTextField = "DESCRIPCION"

ddlProfesion.DataValueField = "COD_PROF"

ddlProfesion.DataSource = Tabla

ddlProfesion.DataBind()

End If

End Sub

End Class

Page 76: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Anexo 3 – Formulario finalizado para manejar los contactos

Public Class frmContactos

Inherits System.Web.UI.Page

Protected WithEvents dgDatos As

System.Web.UI.WebControls.DataGrid

Protected WithEvents Label1 As

System.Web.UI.WebControls.Label

Protected WithEvents lblRegistros As

System.Web.UI.WebControls.Label

Protected WithEvents LinkPrincipal As

System.Web.UI.WebControls.HyperLink

Protected WithEvents lblError As

System.Web.UI.WebControls.Label

Protected MICLASE As New

CONTACTOS.ClasesAdicionales.ClaseBD()

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub

InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form

Designer

'Do not modify it using the code editor.

InitializeComponent()

End Sub

Page 77: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

Dim Dts As DataSet

Dim Tabla As DataTable

If Not Page.IsPostBack Then

If Session("Usuario") = Nothing Then

Response.Redirect("frmBienvenida.aspx")

Else

' recuperar las tablas de contactos y

profesiones

Tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from CONTACTOS")

Session("MiTabla") = Tabla

dgDatos.DataSource = Tabla

dgDatos.DataBind()

lblRegistros.Text =

Tabla.Compute("count(COD_CONTACTO)", Nothing)

End If

End If

End Sub

Sub Paginar(ByVal sender As Object, ByVal e As

DataGridPageChangedEventArgs)

dgDatos.CurrentPageIndex = e.NewPageIndex

Page 78: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

' recuperar los datos

'Dim tabla As DataTable

'tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from CONTACTOS")

dgDatos.DataSource = Session("MiTabla")

dgDatos.DataBind()

End Sub

Sub OnDelete(ByVal sender As Object, ByVal e As

DataGridCommandEventArgs)

Dim Tabla As DataTable

Dim xIdentificador As String ' para recuperar el

identificador del usuarios

Dim Parametros(0) As Object ' parametros del

procedimiento a ejecutar en la base de datos

Dim NParametros(0) As Object

Dim Resultado As String

' para recuperar el indntificador

xIdentificador = dgDatos.DataKeys.Item(e.Item.ItemIndex)

' para los parametros del procedimiento almacenado

Parametros(0) = xIdentificador

NParametros(0) = "@COD_CONTACTO"

' ejecucion del procedimiento

lblError.Text = MICLASE.EliminaContactos(xIdentificador,

Session("USUARIO"), Session("clave"))

' refrescar el grid

dgDatos.EditItemIndex = -1

dgDatos.CurrentPageIndex = 0

Page 79: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Tabla =

MICLASE.RecuperarTabla(MICLASE.ConexionBD(Session("USUARIO"),

Session("CLAVE")), "select * from CONTACTOS")

Session("MiTabla") = Tabla

dgDatos.DataSource = Tabla

dgDatos.DataBind()

lblRegistros.Text = Tabla.Compute("count(COD_CONTACTO)",

Nothing)

End Sub

End Class

Page 80: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Anexo 4 – Formulario para el envío de correo electrónico

Imports System.Web.Mail

Public Class frmEnviarCorreo

Inherits System.Web.UI.Page

Protected WithEvents Label1 As

System.Web.UI.WebControls.Label

Protected WithEvents txtDe As

System.Web.UI.WebControls.TextBox

Protected WithEvents Label2 As

System.Web.UI.WebControls.Label

Protected WithEvents Label3 As

System.Web.UI.WebControls.Label

Protected WithEvents txtPara As

System.Web.UI.WebControls.TextBox

Protected WithEvents txtAsunto As

System.Web.UI.WebControls.TextBox

Protected WithEvents Label4 As

System.Web.UI.WebControls.Label

Protected WithEvents Label5 As

System.Web.UI.WebControls.Label

Protected WithEvents btnEnviar As

System.Web.UI.WebControls.Button

Protected WithEvents RequiredFieldValidator1 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator2 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator3 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents RequiredFieldValidator4 As

System.Web.UI.WebControls.RequiredFieldValidator

Protected WithEvents txtContenido As

System.Web.UI.WebControls.TextBox

Page 81: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub

InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form

Designer

'Do not modify it using the code editor.

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

If Not Page.IsPostBack Then

txtPara.Text = Request.QueryString("CorreoDestino")

End If

End Sub

Page 82: Creacion de Un Sitio Web

UNIVERSIDAD SALVADOREÑA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

Private Sub btnEnviar_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles btnEnviar.Click

Dim resultado As Integer

Dim objMM As New MailMessage()

objMM.To = txtPara.Text

objMM.From = txtDe.Text

objMM.BodyFormat = MailFormat.Text

objMM.Priority = MailPriority.Normal

objMM.Subject = txtAsunto.Text

objMM.Body = txtContenido.Text

SmtpMail.SmtpServer =

ConfigurationSettings.AppSettings("ServidorCorreo")

SmtpMail.Send(objMM)

txtAsunto.Text = ""

txtContenido.Text = ""

End Sub

End Class