creacion de un sitio web
TRANSCRIPT
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.
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.
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 ,
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
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
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
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
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
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
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
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,
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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.
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
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
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.
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
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
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.
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
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
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.
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
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
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
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:
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())
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
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
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
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
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
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
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
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:
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
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'
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
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) =
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)
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
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"))
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()
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
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
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 :
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
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 :
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.
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?
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.
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
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
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")
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
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
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()
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
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
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"))
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
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
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
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
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
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
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
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