Sei sulla pagina 1di 82

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE

Ing-Mae. Mario Alberto Valle PROGRAMACION III

UNIVERSIDAD SALVADOREA 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.

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

ASPECTOS TECNICOS

ASP.NET: Es una tecnologa que permite desarrollar ambiente Web. Esta tecnologa es desarrollada por Microsoft y trae incluido una serie de lenguajes de programacin tales como VB.net VBScript, C# entre otros. Estos lenguajes interactan entre s permitiendo desarrollar aplicaciones totalmente dinmicas orientadas a la Web.

SQL SERVER: Es un sistema de gestor de bases de datos, este nos permite guardar informacin y poder realizar pginas ms dinmicas, por ejemplo podemos guardar contraseas, direcciones de correo, realizar foros de discusin, contadores, aparte de guardar cualquier tipo de informacin que nos sea de inters, para poder manejarnos con el deberemos tener unos conocimientos mnimos del lenguaje SQL.

IIS: Servicios de software que admiten la creacin, configuracin y administracin de sitios Web, adems de otras funciones de Internet. Entre los Servicios de Internet Informacin Server se incluyen el Protocolo de transferencia de noticias a travs de la red (NNTP), el Protocolo de transferencia de archivos (FTP) y el Protocolo simple de transferencia de correo (SMTP). Para poder correr pginas 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 sera el sistema operativo propuesto para esta alternativa, ya que proporcionara 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 pginas ASPX en nuestro sistema operativo es indispensable la instalacin y uso de esta herramienta.

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

PROPSITO DE LA GUA
Esa gua ha sido desarrollada como material de apoyo al Fase IV Anlisis y Diseo de Sistemas con Tecnologa .NET con el objetivo de proveer a los alumnos de una herramienta que le permite la prctica para el desarrollo de formularios de registros, formularios de consultas y manipulacin de datos con una base de datos a travs del desarrollo de un sitio web.

OBJETIVOS ESPECFICOS
1. 2. 3. 4. 5. 6. 7. Creacin y uso de conexiones a base de datos Desarrollo pginas de Formularios Registros Desarrollo pginas de Formularios Consulta Utilizacin de clases para reutilizar cdigo Utilizacin de controles que permiten la vinculacin de datos Actualizacin, Ingreso y Eliminacin de datos Utilizacin de procedimientos almacenados

FUNCIONALIDADES PROPUESTAS
1. 2. 3. 4. 5. Consulta de Contactos Consulta de Profesiones Mantenimiento al catlogo de Contactos Mantenimiento al catlogo de Profesiones Envo de correo electrnico

CREACIN 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 mtodo tradicional Query Analysis b) La segunda forma por el mtodo 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 ,

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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle ALTER TABLE [dbo].[PROFESIONES] ADD CONSTRAINT [PK_PROFESIONES] PRIMARY KEY CLUSTERED ( [COD_PROF] ) ON [PRIMARY] GO PROGRAMACION III

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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle INICIAMOS CON SQL 2008 PROGRAMACION III

Nombre del Servidor

Presionamos un clic para conectar el servidor

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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

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

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

UNIVERSIDAD SALVADOREA 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 relacin 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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

13. Despus de haber agregado nuestras tablas relacionamos los ndices o llaves de cada uno de las tablas. Arrastramos el ndice hacia la otra tabla y automticamente nos dar los parmetros de uno a uno o de uno a muchos, como lo muestra la siguiente tabla.

uno a uno

uno a muchos

UNIVERSIDAD SALVADOREA 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 programacin y seleccionamos procedimientos almacenados damos un clic nuevo procedimiento almacenado

15. Crear el almacenamiento almacenado digitar el cdigo 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,

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle
@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

PROGRAMACION III

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

Crear el almacenamiento almacenado digitar el cdigo 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 cdigo 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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle
begin transaction Eliminar delete from DBO.PROFESIONES where ID_PROF=@COD_PROF if @@error=0 commit transaction Eliminar else rollback transaction Eliminar end

PROGRAMACION III

Crear el almacenamiento almacenado digitar el cdigo 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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle
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

PROGRAMACION III

Crear el almacenamiento almacenado digitar el cdigo 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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle
commit transaction insertar else rollback transaction insertar end

PROGRAMACION III

Crear el almacenamiento almacenado digitar el cdigo 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 Profesin, LTRIM(RTRIM(C.DIRECCION1)) + ' ' + LTRIM(RTRIM(C.DIRECCION2)) AS Direccin, 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 cdigo siguiente.


EL PROCEDIMIENTO ALMACENADO SE LLAMARA:

LISTADO DE PROFESIONES

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle
ALTER procedure [dbo].[ListadoProfesiones] as begin select cod_prof, descripcion from profesiones p end

PROGRAMACION III

HACER UN COPIA DE SEGURIDAD DE SU BASE DATOS

Quitar la direccin 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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

Creacin 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. Ubicacin: digitamos el nombre de la carpeta donde la vamos a guardar nuestro proyecto. C:\CONTACTOS f. Nombre de la solucin es automticamente luego damos un clic en Aceptar

2. Ver figura siguiente

UNIVERSIDAD SALVADOREA 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 disear nuestro formularios

UNIVERSIDAD SALVADOREA 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 segn convenga el caso e. rea donde se ven los errores cuando se ejecuta el proyecto

4 5

2. Despus 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

UNIVERSIDAD SALVADOREA 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 opcin de Explorador de Servidores

UNIVERSIDAD SALVADOREA 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 Conexin de Datos damos un clic derecho

7.

Luego nos mostrara una pantalla donde seleccionaremos Agregar Conexin daremos un clic.

8. Dar un clic en Cambiar para cambiar el servidor de sql 9. Para poder conectar la base datos.

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

Cambiamos el seviso ded SQL

Conectar el servidor de Sql Express

Seleccionar examinar para buscar la ruta de la base datos donde la tenemos creada

UNIVERSIDAD SALVADOREA 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 botn Examinar para buscar nuestra base datos

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

12. Buscamos donde creamos nuestra base datos con la ruta donde la guardramos cuando la creamos en SQL pero lo ms recomendables es guardar la base datos en la misma carpeta donde se encuentra nuestro proyecto

UNIVERSIDAD SALVADOREA 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 Conexin

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

15. Nos mostrara una pantalla de conexin de prueba se realizo correctamente luego damos un clic en Aceptar

16. Nos mostrara en Explorador de Servidores la conexin de nuestra base datos con el proyecto adems mostrara tambin todas las tablas creadas en nuestra base datos.

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

17. Tambin podemos adicionar una nueva tabla a nuestra base datos desde asp.net

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

UNIVERSIDAD SALVADOREA 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 opcin 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 opcin elegir elementos esperamos unos segundos.

22. Luego nos mostrara una pantalla donde seleccionaremos cuatro elementos bsicos para poder conectar nuestra base datos con el formulario.

UNIVERSIDAD SALVADOREA 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 opcin de Datos

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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

26. Damos un clic en siguiente seleccionando la primera opcin siempre y cuando en nuestro proyecto no estemos manejando procedimientos almacenados de lo contrario tenemos que seleccionar la segunda opcin o tercera segn convenga el caso. 27. Esta funcin nos ayudar mucho para crear nuestros formularios de consulta donde automticamente el SQL nos ayuda a crear nuestra consulta y el query que nos muestra en pantalla lo copiamos hacia el botn de consulta de nuestro formulario para que esta consulta se genere solo programaremos los botones de consulta para que muestre la informacin creada en el query de SQL. Como los muestran las siguientes pantallas.

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

28. Seleccionamos la tablas o tablas para realizar la consulta a travs del query que genera automticamente SQL

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

29. Luego seleccionadas la tabla o tablas SQL nos crea automticamente 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 conexin 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

UNIVERSIDAD SALVADOREA 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. Despus de haber conectado nuestra base datos estamos listo para disear nuestro proyecto web se puede utilizar diferentes programas (Software) para disear una base datos. Hoy en da existen una infinidad de software para desarrollar pginas web entre ellos tenemos ASP.NET como integracin de formularios y base datos. Tambin tenemos Drenweaber que se integra muy fcil con la plataforma .NET. y para diseo de HTML puede utilizar el que ms les guste. A continuacin se publican unas direcciones de sitios web donde pueden bajar software para su diseo. a. www.taringa.net b. www.luchoedu.org este es un blog a lado derecho hay una opcin de Diseo dar un clic y muestra solo software para disear paginas web.

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

MAPA PROPUESTO

Pgina Principal

Manejo de Contactos

Manejo de Profesiones

Envo de Correo Electronico

Adicin/Modificacin de contactos

Adicin/Modificacin de Profesiones

Envo de Correo Electronico

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

DESARROLLO DEL SITIO


Creacin de una clase de conexin

Objetivos
Crear una clase que maneje las conexiones Utilizar el archivo web.config para parametrizar configuraciones especiales

Configuracin 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 aplicacin.
Digitar el nombre de su Pc y la clave que le digito cuando instalo su SQL 2008

En el archivo web.config dar doble clic y escribir la siguiente seccin

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

Creacin de una clase para interactuar con la base de datos


Crear una clase que maneje todas las funciones relacionadas con la consulta o manipulacin de datos, la primera funcin se encargar de manejar la conexin.

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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle Por el momento la clase tendr el cdigo 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

PROGRAMACION III

Creacin de la pgina de Ingreso del Sitio

Objetivo
Crear una pgina que verifique la conexin del usuario a la base de datos Utilizacin de las variables de Sesin para guardar el usuario y la clave 1. Crear un formulario llamado frmBienvenida, este formulario debe mostrar el men del sitio, adems de los controles necesarios para validar la conexin a la base de datos. 2. Si la conexin es exitosa debe ser mostrada la pgina de consulta de los contactos (crear un formulario llamado frmContactos en blanco)

El diseo del formulario puede ser:

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

Donde menuSitio1 es un control de usuario que permite la navegacin entre las pginas del sitio. Cada pgina del sitio debe validar que las variable de session del usuario no este vaca, en caso de estarlo debe re-dirigir a la pgina de bienvenida. Programacin del botn conectar Este botn debe tomar los valores ingresados para usuario y clave y validar la conexin, el cdigo 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


CONTACTOS.ClasesAdicionales.ClaseBD())

MICLASE

As

New

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

Diseo de la pgina de Contactos


Esta pgina debe permitir al usuario los siguientes: Mostrar los registros existentes permitir paginacin Permitir Aadir 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 cdigo necesario en el evento load para cargar la tabla de Contactos, recuperar una tabla a travs 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

UNIVERSIDAD SALVADOREA 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 algn control 4. Adicionalmente mostrar en una etiqueta la cantidad de registros encontrados 5. El diseo del formulario es como sigue : a. Disear una datagrid

UNIVERSIDAD SALVADOREA 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 Diseador de Web Forms. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub

UNIVERSIDAD SALVADOREA 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 mtodo es requerida por el Diseador de Web Forms 'No lo modifique con el editor de cdigo. 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 cdigo de usuario para inicializar la pgina 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

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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle 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 PROGRAMACION III

7. Examinar el cdigo anterior y luego correr el proyecto 8. Que ventaja hay sobre el uso de una clase para manejar la conexin y la recuperacin de datos? 9. Repasar el control DataGrid y la forma como cambiar aspecto y aadir columnas

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

IMPLEMENTANDO LA PAGINACIN 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 aadir en el html del grid que para el OnPageIndexChanged efecte el cdigo definido como "paginar" 5. Correr y probar el proyecto

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

6. Qu sucede cada vez que el usuario cambia de pgina? 7. Qu recomendacin puede darse para evitar que cada vez que haya cambio de pgina haya una conexin a la base de datos?

Uso de variables de Session


Las variables de session contienen informacin 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. Aadir una linea para cargar la variable de session luego de recuperar la tabla en el evento Load - Session("MiTabla") = Tabla 2. En el cdigo 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

Creacin de una pgina de Ingreso de Contactos

Diseo de la pgina
Crear una pagina llamada frmAgregarContactos, con el siguiente diseo: Adicionalmente aadir un link desde la pgina de contactos a esta nueva pgina. Correr el proyecto y verificar que el link funciona. Luego examinar los controles colocados en esta nueva pagina.

El aspecto en diseo debe ser el siguiente:

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

Campos Utilizados OBJETO ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA PROPIEDAD Lbl Lbl Lbl Lbl Lbl Lbl Lbl LblAccion (label) Uso Codigo Asignado Profesion Nombres Apellidos Fecha de Nacimiento Correo Electronico Telefono de contacto Relacion Mostrar la operacin Laboral, personal u otro Ingresar el cdigo x asignar Ingresar el nombre del contacto n/a Validacin

CAJA DE TEXTO

txtCodigo

Requerido

CAJA DE TEXTO

txtNombre

Requerido

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle CAJA DE TEXTO txtApellido PROGRAMACION III Ingresar el apellido del contacto Requerido

CAJA DE TEXTO

txtFechaNacimiento Ingresar la fecha de nacimiento txtCorreo Ingresar el correo electrnico Botn que permite grabar el registro Botn que permite cancelar la opcin

Requerido y formato de fecha Requerido y formado de correo n/a

CAJA DE TEXTO

BOTONES

btnGrabar

BOTONES

btnCancelar

Modificar la propiedad CausesValidation a False

ddlProfesion

Mostrar las profesiones disponibles Presentar los errores en las operaciones

lblError

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'

UNIVERSIDAD SALVADOREA 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 funcin 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

UNIVERSIDAD SALVADOREA 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 botn de grabar para ejecutar el procedimiento de insercin 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) =

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

"Aadir 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. Utilizacin de funciones para manejar conexin y otros b. Utilizacin de funciones para recuperar Datables c. Manejo de Errores d. Utilizacin de funciones para ejecutar procedimientos e insertar registros

Presentacin de los resultados

Cmo se ha logrado la insercin de un registro? A travs de la ejecucin de un procedimiento en la base de datos con los parmetros del caso, adicionalmente se envi el tipo de accion (A indica si es adicin y M servir para la modificacin)

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

Modificacin de Registros seleccin 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 cdigo del contacto no puede ser modificada La bandera utilizada en el procedimiento almacenado para indicar que es una modificacin es M Desde la pagina de contactos debe accederse la pagina de modificacin de contactos (que con pocas modificaciones a la de agregar debe permitir esta funcionalidad sin generar errores)

Cambios en la pgina de contactos


1. Aadir 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, adems de indicar el codigo del contacto que ha sido seleccionado (FrmAgregarContactos.aspx?COD_CONTACTO={0}) 2. Correr y verificar el resultado

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

Como mostrar los datos en la pgina de modificacin


1. Al cargar la pgina de modificacin debemos indicar que la operacin es una modificacin de datos, adicionalmente debemos mostrar los datos del registro 2. Para modificar la etiquera de accin, podemos evaluar el querystring que hemos enviado (solo en los casos de modificacin aparece el codigo del contacto)

En el load aadimos (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 segn aplique. 5. El control de profesiones debe mostrar la profesin del contacto, adicionalmente debe permitir elegir otra profesin 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"))

UNIVERSIDAD SALVADOREA 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()

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle End If End If End Sub PROGRAMACION III

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 cdigo que permite la modificacin del registro 9. Probar y verificar el proyecto
Presentacin de Resultados

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle
Como eliminar un registro desde el Grid

PROGRAMACION III

Por el momento estn implantadas las siguientes funcionalidades: Agregar un registro Modificar un registro

Ahora propondremos la siguiente solucin para permitir al usuario eliminar un contacto: Aadir un celda para Eliminar Al presionar esta celda en un registro determinado, se ejecuta un procedimiento de eliminacin del registro El grid de consulta de contactos se actualiza para mostrar los existentes

Efectuar los pasos siguientes para lograr lo anterior:


Creacin del Procedimiento en la base de datos

1. Crear un procedimiento almacenado en la base de datos que permita la eliminacin 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. Aadir el cdigo necesario en la clase ClaseBD para manejar la ejecucin 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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle 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 PROGRAMACION III

End Function

Esta funcin retornara un valor string en el caso de que se produzca un error, por lo tanto tambin es necesario agregar a la forma de contactos una etiqueta de error (lblerror). 3. Sobre el formulario frmContactos.aspx para el grid dgDatos aadir una columna tipo ButtonColumn y el Texto del botn 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. Aadir un procedimiento en el codigo que se encargue de la ejecucin del registro seleccionado :

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

UNIVERSIDAD SALVADOREA 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 definicin del grid y agregar OnDeleteCommand ="OnDelete" 9. Correr y verificar el resultado 10. Al correr la pagina debe lucir de la siguiente forma :

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle
Enviar correo electrnico

PROGRAMACION III

Ahora implantaremos el envo de correo electrnico para un contacto, disponiendo de dos puntos para el envo: Pgina de modificacin del contacto Men Principal del sistema

Enviar correo electrnico desde la pgina de modificacin

Los pasos a seguir son:

Formulario correo electronico


1. Crear una pagina llamada frmEnviarCorreo.aspx 2. La pgina debe contener los controles necesarios para ingresar el destino, remitente, asunto y texto del correo, adicionalmente un botn que se encarga del envo del correo

3. Aadir 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. Aadir la programacin necesaria para efectuar el envo, para esto se utiliza la clase web.mail, la referencia a esta clase debe ir al principio del cdigo escondido del formulario.

UNIVERSIDAD SALVADOREA 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. Aadir en la pgina de modificar formulario un link que permita llegar a la pagina de envo de formulario, este link debe estar visible nicamente si se trata de una modificacin, adicionalmente al cargar el formulario de envo de correo debe aparecer el correo del destinatario. Cambiar la propiedad visible del link a false, de esta forma cuando se evala si es una modificacin 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 envo 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 validacin suficientes y necesarios. 7. Correr el proyecto y verificar el resultado 8. Examinar el objeto y cdigo que es utilizado para el envo de correo 9. Que es imprescindible para lograr el envo de un correo con xito?

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle
Enviar correo desde el men principal del sitio

PROGRAMACION III

Esta funcionalidad requiere que desde el men el usuario pueda cargar la pagina de envo de correos, nicamente es necesario aadir un link al control de usuario responsable del men para acceder a la pgina de envo de correos.
Para finalizar

Identificar puntos de mejora en la propuesta, Que cdigo puede ser convertido en clase? Qu manejos de errores no estn considerados? Qu validaciones por formulario estn pendientes?

Investigar la rutina necesaria para cargar una imagen por contacto, adicionalmente el cdigo necesario para que al cargar la pgina de modificacin del contacto se despliegue la imagen asociada.

Investigar los cambios necesarios para permitir desde el grid hacer una modificacin uso de una columna select para modificar.

Trabajar en el desarrollo de un mantenimiento para el mdulo de profesiones.

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

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

UNIVERSIDAD SALVADOREA 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")

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle End Sub PROGRAMACION III

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) = "Aadir 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

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

UNIVERSIDAD SALVADOREA 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()

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

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

UNIVERSIDAD SALVADOREA 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) = "Aadir 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"))

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle End Sub PROGRAMACION III

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

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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle #End Region PROGRAMACION III

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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle ' 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() PROGRAMACION III

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

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

UNIVERSIDAD SALVADOREA ALBERTO MASFERRE


Ing-Mae. Mario Alberto Valle PROGRAMACION III

Anexo 4 Formulario para el envo de correo electrnico

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

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

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

Potrebbero piacerti anche