net 2005 programación web aspx para sistemas expertos

88
Visual .NET 2005 UNIDAD III, IV y V: El Formulario Web, Crear una aplicación, Los Controles y Diseño de Sitios Web Temas: Las páginas ASPX Formularios Web Crear la primera página El diseño Introducción a los controles PROGRAMACIÓN VISUAL .NET 2005 Información y Conocimiento son los dos elementos claves del nuevo milenio ninguna sociedad podrá alcanzar ni puede ignorar este nuevo esquema ya las naciones no se miden por su riqueza industrial, ni sus activos físicos, ni por su poder militar, sino por la cantidad de información que produce y consume, así como por la recombinación de información nueva en un conocimiento de grado superior. Nuevos sistemas de información, tienden a ser cada vez de mayor alcance y complejidad sobre todo cuando se toman en cuenta las nuevas necesidades de información y conocimiento que demandan las nuevas organizaciones. Nuevos sistemas de información son costosos en tiempos y recursos, la solución moderna de sistemas de información exigen herramientas y metodologías que resuelvan rápida, económica, eficiente y de manera global, problemas de información y conocimiento planteados por las organizaciones. Además el pleno potencial del hardware tampoco es aprovechado plenamente y existe un considerable retraso con el software y sus aplicaciones generando lo que se conoce como “crisis del software”. Actualmente el paradigma de programación se ha enfocado a nuevas necesidades de modernos y globales sistemas de información basados en redes y mas aun en la red global de Internet, actualmente es mas importante poder concebir y construir sistemas de información con estas nuevas tecnologías de programación.

description

Desarrollo en ASP.Net

Transcript of net 2005 programación web aspx para sistemas expertos

Page 1: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

UNIDAD III, IV y V: El Formulario Web, Crear una aplicación, Los Controles y Diseño de Sitios Web

Temas: Las páginas ASPXFormularios WebCrear la primera páginaEl diseñoIntroducción a los controles

PROGRAMACIÓN VISUAL .NET 2005

Información y Conocimiento son los dos elementos claves del nuevo milenio ninguna sociedad podrá alcanzar ni puede ignorar este nuevo esquema ya las naciones no se miden por su riqueza industrial, ni sus activos físicos, ni por su poder militar, sino por la cantidad de información que produce y consume, así como por la recombinación de información nueva en un conocimiento de grado superior.

Nuevos sistemas de información, tienden a ser cada vez de mayor alcance y complejidad sobre todo cuando se toman en cuenta las nuevas necesidades de información y conocimiento que demandan las nuevas organizaciones.

Nuevos sistemas de información son costosos en tiempos y recursos, la solución moderna de sistemas de información exigen herramientas y metodologías que resuelvan rápida, económica, eficiente y de manera global, problemas de información y conocimiento planteados por las organizaciones.

Además el pleno potencial del hardware tampoco es aprovechado plenamente y existe un considerable retraso con el software y sus aplicaciones generando lo que se conoce como “crisis del software”.

Actualmente el paradigma de programación se ha enfocado a nuevas necesidades de modernos y globales sistemas de información basados en redes y mas aun en la red global de Internet, actualmente es mas importante poder concebir y construir sistemas de información con estas nuevas tecnologías de programación.

Visual .NET 2005 es un lenguaje de programación desarrollado por Microsoft muy apropiado para construir sistemas de información basados en red o mejor aun en Internet.

NET es la nueva tecnología desarrollada y ofrecida por Microsoft que permite hacer más fácil la construcción y desarrollo de programas y aplicaciones para Internet.

MODELO DE SOLUCIÓN

En general en programación un problema de información es posible entenderlo analizarlo y descomponerlo en todos sus componentes o partes que de una u otra manera intervienen tanto en su planteamiento como en su solución.

Una herramienta rápida que nos permite descomponer en partes un problema para su solución es el llamado modelo de solución, esta consiste de una pequeña caja que contiene los tres elementos más básicos en que se puede descomponer cualquier problema sencillo de información, estas tres partes son:

Page 2: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

LA PRIMERA PARTE son todos los datos que el computador ocupa para resolver el problema, estos datos son almacenados internamente en la memoria del computador en las llamadas variables de entrada.

LA SEGUNDA PARTE son todas las operaciones generalmente algebraicas necesarias para solucionar el problema, generalmente esta parte del modelo es una ecuación algebraica o formula (o igualdad matemática, ej. X= y + 5).

LA TERCERA PARTE es el resultado o solución del problema que generalmente se obtiene de la parte de operaciones del modelo y dichos datos están almacenados en las llamadas variables de salida.

En resumen para todo problema sencillo de información es necesario plantearse las siguientes preguntas:

Que datos ocupa conocer el computador para resolver el problema y en cuales variables de entrada se van a almacenar?

Que procesos u operaciones debe realizar el computador para resolver el problema planteado?

Que información o variable de salida se van a desplegar en pantalla para responder al problema planteado originalmente?

Como nota importante no confundir los términos datos, variables e información:

Datos se refiere a información en bruto no procesada ni catalogada, por ejemplo “Tijuana”, “calle primera # 213”, “15 anos”, “$2,520.00”, etc.

Variables es el nombre de una localidad o dirección interna en la memoria del computador donde se almacenan los datos, ejemplo de variables para los casos del inciso anterior, CIUDAD, DIRECCION, EDAD, SUELDO, ETC.

CONCEPTOS BASICOS DE PROGRAMACIÓN ORIENTADA OBJETOS

Para nuestro propósito en general un objeto puede definirse como cualquier cosa, ente o entidad física o lógica de información.

En este sentido todos los elementos materiales o inmateriales pueden clasificarse como objetos.

En particular cualquier objeto considerado presenta los siguientes tres elementos:

a) Propiedades: Son las características propias de un objeto estas propiedades o atributos son los que permiten diferenciar o individualizar un objeto de otro objeto ya sea de la misma o diferente clase o categoría.

Las propiedades más generales son forma, color, tamaño, peso, etc., pero ya en particular:

Chamarra → Marca, material, precio, color, tamaño, etc

Alumno → Matricula, nombre, edad, domicilio, etc.

Gato → Raza, nombre, color, edad, etc.

Page 3: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

VentanaWindows–>Tamaño, Color, font, etc.

b) Métodos: Son las conductas propias de la naturaleza del objeto.

Así como las propiedades son el ser (que es) del objeto, los métodos son el hacer (que hacer) del objeto.

Ejemplo de métodos:

Gato —> Maullar(), comer(), correr(), saltar(), etc.

Alumno—> Estudiar(), comer(), asistir clase(), pintear()

Cuaderno–>Esescrito(), esrayado(), esborrado(), etc.

VentanaWindows–> Abrir(), cerrar(), maximizar(), etc....

c) Eventos: Es la relación (de varias maneras) que se puede dar entre dos objetos ya sean de la misma o diferente clase.

Un evento se manifiesta como una interacción entre dos objetos, en general al momento de la relación al mismo tiempo se dará una reacción o respuesta por parte de los dos objetos que se manifiestan como una serie, cadena o conjuntos de métodos propios que se activan o disparan, ejemplo:

Evento Relación Métodos que se activan gato detecta gata detectar maullar(), correr(), oler() gato detecta perro detectar bufar(), saltar(), correr() maestro enseña alumno Enseñar pasar lista(), preguntar(), etc Ratón click Windows click maximizar(), cerrar() Ratón dblclk Windows dblclk minimizar(), etc

Un Programa Visual .NET 2005 Visual Basic se puede considerar como un conjunto de una o más paginas o formas donde cada una de ellas contiene un conjunto de objetos, componentes o controles.

Un componente o propiamente dicho un control es un objeto que se especializa en una tarea especifica por ejemplo hay controles especializados en desplegar textos o mensajes, otros controles se especializan en desplegar imágenes o videos, otros en manipular directorios o archivos en disco, etc.

MODELO PROGRAMACIÓN INTERNET

VISUAL .NET 2005 (de momento lo entenderemos como programas en Visual Basic) y ASP NET (Active Server Pages) son programas hechos para ejecutarse en la red de redes es decir en Internet y mas apropiado en servidores de paginas (Web Server).

En este modelo, mínimo se ocupan dos computadoras a la primera le llamamos servidor y es su misión proporcionar paginas y algunos servicios a las segundas maquinas este servidor tiene en ejecución constante un programa llamado servidor de paginas (Web Server).

Page 4: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

La segunda maquina, le llamamos cliente y el único programa que tiene en ejecución es un programa o compilador llamado browser de los cuales el mas común es el Internet Explorer, mediante el browser el cliente sube a una maquina servidora y pide una pagina html almacena en el servidor y el propio cliente a esta pagina.html la compila y la despliega dentro de la ventana del browser.

Para entender ASP NET, tenemos que entender algunas cosas elementales de esta tecnología de Microsoft.

En principio ASP es un programa que es ejecutado por un servidor de paginas y sus resultados son enviados a el browser de la maquina cliente.

Este programa que por cierto tiene por extensión aspx (ejemplo prog15.aspx) es un conjunto de objetos que pueden provenir de varias fuentes distintas, las mas comunes son:

A) Objetos HTML.- Son los objetos mas elementales que puede contener o construirse en cualquier pagina o forma html en Internet, por ejemplo los input text, input submits, etc, (recordar que como objetos tienen sus propiedades y metodos que hay que cargar o programar ver apéndice a final del capitulo).

B) Objetos ASP.- Son objetos propios de esta tecnología y generalmente están especializados en comunicación entre formas o paginas html, pero también tiene objetos especializados en archivos, directorios, etc ver apéndice al final.

C) Objetos ACTIVEX.- Componentes o controles especializados en muchas tareas hechos por Microsoft para sus lenguajes visuales de programación, ejemplos textbox, combobox, grids, etc ver apéndice al final de la unidad.

D) Objetos ADO.- Active Data Object, componentes, controles u objetos especializados en la manipulación de bases de datos, entre ellas sqlserver, access, etc.

E) Objeto DOM.- Document object model, un objeto estándar y especializado en manipular una pagina html.

F) Objetos NET.- Nuevos objetos que facilitan aun mas la construcción de programas en Internet, de momento entender que son una combinación de asp-activex.

Sin embargo recordar que todos estos objetos de distinta fuente deberán ser manipulados por algún lenguaje de programación, es mediante instrucciones en este lenguaje que se puede cargar propiedades o activar métodos o programar eventos.

Los lenguajes básicos que Microsoft incluyo en su primera versión de ASP son los llamados LENGUAJES SCRIPTS y los mas comunes fueron al principio VisualBasicScript, JavaScript y por esfuerzos de personas y compañías muy responsables PERLSCRIPT y actualmente JSCRIPT.

AMBIENTE INTEGRADO DE DESARROLLO

Entradas o capturas de datos y salidas o despliegues de información o resultados son de los procesos mas comunes en cualquier tipo de problema de información, estos procesos o instrucciones varían de acuerdo a los lenguajes y ambientes de programación a usar.

Page 5: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

El lenguaje y ambiente de programación a utilizar es de tipo visual, y muchos de los problemas asociados a entradas y salidas se encuentran ya resueltos por el propio compilador.

El ambiente de construcción de programas a usar o ide compiler es el siguiente:

SOLO CARGARLO EN PANTALLA EJECUTANDO Visual Basic 2005

Page 6: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Usar Ahora la opción Crear Sitio Web

Selecciona “Sitio Web ASP.NET” y selección la ruta donde se creará tu aplicación WEB. Y elige el nombre con el que se conocerá tu aplicación.

Te quedará algo así:

Page 7: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Si das Clic en la pestaña código se mostrará algo así:

Ésta es la ventana de codificación de la aplicación WebPROGRAMACIÓN Visual Basic PRIMER EJEMPLO

Este modelo de visual .NET 2005 introduce una nueva colección de objetos denominados WEBCONTROLS.

Aunque los objetos derivados de HTMLCONTROL facilitan la tarea de manipular los objetos originales de HTML Microsoft decidió que un nuevo conjuntos denominado WEBCONTROLS derivados de la libreria SYSTEM.WEB.UI.CONTROL permite una mejora mayor y mas funcionalidad para el trabajo con paginas, estos nuevos objetos son:

VER APENDICEWEBCONTROLS AL FINAL DEL CAPITULO:

Como se puede apreciar existen muchos nuevos objetos de mucha utilidad para la construcción de sistemas de información, todos estos objetos tienen sus propiedades específicas, sin embargo muchos de ellos comparten las siguientes propiedades:

PROPIEDAD DESCRIPCION BackColor Carga o lee el color de background BorderColor Carga o lee el color del marco(border) BorderStyle Carga o lee el estilo del marco BorderWidth Carga o lee el tamano del marco Font Carga o lee el font ForeColor Carga o lee el color del foreground Height Carga o lee la altura del control ID Carga o lee el identificador del control TabIndex Carga o lee el tab index

Page 8: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

ToolTip Carga o lee el tooltip del control Visible Carga o lee su estado visible Width Carga o lee la anchura del control

PROYECTO COMPLETO

1.- Preparar el proyecto tal como se dejo hasta el final del tema anterior, es decir la pantalla inicial es:

Observa que se ha escrito el siguiente código para que toda la aplicación esté escrita en ese apartado:

<Script runat =”Server”>

</Script>

En particular:

1.- Empieza definiendo el lenguaje de programación a usar es decir la pagina estará en un servidor de paginas y es el servidor quien tendrá que compilar esta pagina ( recordar que aspx es en realidad un programa que mezcla instrucciones de dos lenguajes de programación HTML y Visual Basic) por tanto el servidor tendrá que compilar.

2.- Recordar que este curso esta enfocado a aprender el lenguaje de programación VISUAL Visual Basic y a ustedes les toca aprender por su cuenta el lenguaje de programación HTML de los cuales existen muchos tutoriales en el WEB.

Page 9: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

3.- La segunda parte que contiene DEFAULT.ASPX son los tags o marcadores <script> ... </script> es dentro de estos tags donde se pondrá el código en visual Visual Basic.

4.- La tercera parte esta encerrada entre tags <html>..</html> esta parte encierra el código del lenguaje HTML y estos tags le indican al servidor que empiece a construir una pagina web para enviársela a algún usuario que la este pidiendo.

5.- La siguiente parte importantes esta encerrada entre tags <form>..</form>, esta parte crea una VENTANA VIRTUAL dentro de la PAGINA WEB, es decir el programa usara o contendrá ciertos objetos ( labels, textboxs, buttons) y estos objetos no pueden colocarse directamente en una PAGINA HTML, estos objetos deberan ir dentro de una FORMA o VENTANA o mejor dicho dentro de <FORM> objetos </FORM>.

6.- Los tags e instrucciones head, body, div son instrucciones de HTML y recordar que HTML lo estudian por su cuenta en algún tutorial de HTML.

7.- EN RESUMEN SE ESTA CONSTRUYENDO UNA PAGINA ASPX QUE CONTIENE UNA PAGINA <HTML>..</HTML> QUE A SU VEZ CONTIENE UNA VENTANA O FORMA VIRTUAL <FORM>...</FORM> QUE A SU VEZ CONTENDRA LOS OBJETOS WEBCONTROLS (LABELS, TEXTBOXS, BUTTONS) NECESARIOS PARA RESOLVER EL PROBLEMA PLANTEADO.

APARTE LA PAGINA ASPX LLEVA UN APARTADO <SCRIPT>...</SCRIPT> QUE CONTENDRA EL CODIGO EN VISUAL BASIC (GENERALMENTE UN EVENTO(RECORDAR TEMA DE OBJETOS) DE ALGUN COMPONENTE WEBCONTROL.

Añadir al Proyecto controles

USAR la pestañita de DESIGN y arrastrar desde TOOLBOX un LABEL, dos TEXTBOX y un BUTTON.

En PROPIEDADES, usando tecla TAB moverse a LABEL y en propiedad ID cargarle MESES, con TAB irse a los TEXTBOX y en propiedades ID cargarles con BASE1(no se puede usar BASE porque es palabra reservada de visual basic) y ALTURA, al final con tab irse a BUTTON y en la ventanita de propiedades usar el icono de EVENTOS(ver tema anterior) y buscar el evento buttonclick y cargarlo con la palabra EVENTO1.

Si en alguna parte de este proceso terminan en la pantalla de código, regresar a la pantalla de diseño usando la pestañita de abajo que dice DESIGN y recordar que estas dos pestañitas de SOURCE y DESIGN les permite estar circulando entre diseño y código.

PROGRAMA

 <%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <script runat="server"> Protected Sub EVENTO1(ByVal sender As Object, ByVal e As System.EventArgs) 

Page 10: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

AREA.Text = (BASE1.Text * ALTURA.Text / 2).ToString("##.##") End Sub </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>PROGRAMACIÓN VISUAL BASIC ASPX</title> </head> <body> <H2>BIENVENIDO A VISUAL .NET 2005</H2> <B>MI PRIMER ASPX<BR> <form id="form1" runat="server"> BASE.....:<ASP:TEXTBOX ID=BASE1 RUNAT=SERVER/><BR> ALTURA.....:<ASP:TEXTBOX ID=ALTURA RUNAT=SERVER/><BR> <ASP:BUTTON ID="BUTTON1" TEXT=OK ONCLICK=EVENTO1 RUNAT=SERVER/> AREA..:<ASP:LABEL ID=AREA RUNAT=SERVER/><BR> </form> </body> </html>

1.- Lo primero y mas importante a recordar que los scripts deben estar embebidos o empotrados en una pagina aspx y deben ir entre los tags <script>codigo c sharp </script>.

2.- Este codigo mezcla instrucciones y objetos de dos lenguajes de programación diferentes ellos son HTML y Visual Basic.

3.- Considerar la pagina como una sola forma o ventana empotrada en el browser esta forma contiene tres objetos, controles o componentes provenientes de WEBCONTROLS (TEXTBOXS, LABEL, BUTTON ) este ultimo control ( button) se usa para activar el codigo o script del programa.

4.- Observar que se deberá usar el tag <ASP: WEBCONTROL PROPIEDADES /> para poner cada webcontrol en la pagina, esto es si se quieren poner directamente los objetos en la forma y no se quiere usar la pantalla de diseño.

5.-Como se observa todos estos controles son objetos y por tanto tienen propiedades y metodos que son los que usamos dentro del programa observar el formato para procesarlos, es decir: objeto.propiedad o metodo.

Page 11: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

6.- Se muestran dos tipos de controles para desplegar datos, textos o mensajes estáticos, ellos son LABEL y LITERAL (la diferencia entre ellos revisar en el apéndice pero en general tiene mas y mejores propiedades LABEL), todos estos controles incluyendo TEXTBOX están usando su propiedad TEXT para procesar los datos, del control BUTTON estamos usando su evento onclick, para pegarle el proceso u operación.

7.- Observar que lo primero que hace VISUAL Visual Basic, es detectar el EVENTO1 onclick del botón y realizar directamente las operaciones con los objetos webcontrol.

8.- Como se observa podemos manipular o accesar directamente los objetos TEXTBOX y LABEL usando su propiedad TEXT, recordar que en nuestros programas se usaran MAYUSCULAS para nombrar objetos WEBCONTROLS y se usaran MINUSCULAS para nombrar variables que en este problema no se ocuparon.

9.- Ya realizado el calculo, se manda el resultado al objeto MESES.Text y observar que a toda la operación la estamos convirtiendo a string con el método ToString() de la clase STRING y de paso se están formateando (ver tema que sigue) para recortar la parte decimal del resultado.

Para ejecutarlo:

A.- PRIMERO USAR FILE –> SAVE ALL O LOS TRES DISQUITOS DE ARRIBA

B.- AHORA USAR EL ICONO DE RUN ARRIBA,

El programa en ejecución:

TAREAS PROGRAMACIÓN Visual Basic 2005

Page 12: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

ANTES DE EJECUTARLO USAR FILE–>SAVE DEFAULT.ASPX AS –> Y VISUAL .NET 2005 LES PREGUNTARA EL NUEVO NOMBRE DEL ASPX, USAR LOS NOMBRES DE PROG1.ASPX, PROG2.ASPX, PROG3.ASPX ETC. SI NO USAN ESTA NOTA SOLO LES QUEDARA EN SU SITIO LA ULTIMA TAREA PORQUE SE IRAN SOBREESCRIBIENDO UNA TAREA SOBRE OTRA TAREA ESTAN ADVERTIDOS

Generando un Hiper Enlace

Lo primero que debes hacer es “Agregar un nuevo elemento” o Hacer clip en el siguiente objeto Agrega un segundo formulario Web y asígnale un nombre, Yo lo dejaré con el nombre por defecto

Has un programa que sume dos números que fueron ingresados mediante cajas de texto

Busca de la barra de Herramientas, la opción Estándar, Elige Hiperlink y ponlo sobre el formulario, siempre teniendo seleccionado el link, Ve a la ventana de propiedades y en la opción Text cambia el nombre del link por “formulario 2” y en la opción NavigateUrl elige el formulario al cual deseas hacer el enlace.

Quedará algo así:

El código es el siguiente:

Page 13: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Controles ListBox DropDownList Visual Basic

Existen muchas ocasiones en donde el usuario del programa tiene que proporcionar datos que provienen de un conjunto finito y muy pequeño de posibles respuestas esto significa que cada vez que se ejecute el programa el usuario estará proporcionando las mismas respuestas.

Ejemplo de esta clase de datos son por ejemplos de Departamentos en las posibles respuestas solo son (León, Chinandega, Managua, Estelí, Matagalpa) otro ejemplo es Sexo (Hombre, Mujer), etc.

Para situaciones como esta, existen componentes webcontrols que permiten programar por adelantado las posibles respuestas y el usuario solo debe seleccionar la respuesta apropiada en lugar de tener que escribirla.

Estos controles nos permiten definir en primera instancia un conjunto de datos o valores o respuestas asociados a una caja de edición cualquiera, así ahora el usuario tendrá la oportunidad de seleccionar un dato del conjunto de datos o respuestas ya predefinido.

Estos componentes DEBERAN CONSTRUIRSE EN dos partes una parte de encabezado para poner el nombre del grupo de respuestas (por ejemplo municipios, sexo, etc.)

Page 14: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

La segunda parte es la lista de opciones o respuestas que se debe cargar al tiempo de ejecución de la forma aspx como lo muestra el siguiente formulario y su respectivo código:

El código es el siguiente:

Page 15: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat ="server">

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) sexo.Items.Add("Masculino") sexo.Items.Add("Femenino") Departamento.Items.Add("León") Departamento.Items.Add("Chinandega") Departamento.Items.Add("Managua") Departamento.Items.Add("Estelí") Departamento.Items.Add("matagalpa") End Sub

Protected Sub click_Click(ByVal sender As Object, ByVal e As System.EventArgs) Label1.Text = sexo.Text Label2.Text = Departamento.Text End Sub</script>

CHECKBOX CHECKBOXLIST VISUAL .NET 2005

Estos componentes CheckBox y CheckBoxList permiten seleccionar una opción al usuario del programa o tomar una decisión directamente en pantalla.

La diferencia entre ellos aparte de como se programa el componente, es que checkboxlist permite agrupar mejor sus elementos internos tal como se muestra en las corridas:

Ejemplos de uso:

Page 16: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Observar que dos o más checkboxs pueden estar seleccionados a la vez.

CHECKBOX:

Código

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat ="server" >

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) CheckBox1.Text = "Femenino" CheckBox2.Text = "Masculino" End Sub

Protected Sub Click_Click(ByVal sender As Object, ByVal e As System.EventArgs) If CheckBox1.Checked = True Then Label1.Text = CheckBox1.Text End If If CheckBoxList1.Text = "1000-2000" Then Label2.Text = CheckBoxList1.SelectedItem.Text ElseIf CheckBoxList1.Text = "2001-4000" Then Label2.Text = CheckBoxList1.SelectedItem.Text ElseIf CheckBoxList1.Text = "4001-6000" Then Label2.Text = CheckBoxList1.SelectedItem.Text ElseIf CheckBoxList1.Text = "6001-mas" Then Label2.Text = CheckBoxList1.SelectedItem.Text End If End Sub</script>

COMPONENTE RadioButton RadioButtonList

Se utiliza para presentar al usuario un conjunto de opciones mutuamente excluyentes entre si, es decir, si el usuario selecciona un componente radio todos los demás componentes radioButton en la forma se desmarcan o deseleccionan solos, es por esta razón que decimos que radiobutton son mutuamente excluyentes.

RADIOBUTTON:

Page 17: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

El código sería el siguiente:<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat ="server">

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) RadioButtonList1.Items.Add("Femenino") RadioButtonList1.Items.Add("Masculino") End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) If RadioButtonList1.Text = "Femenino" Then Label1.Text = RadioButtonList1.Text ElseIf RadioButtonList1.Text = "Masculino" Then Label1.Text = RadioButtonList1.Text End If If RadioButtonList2.Text = "1000-2000" Then Label2.Text = RadioButtonList2.SelectedItem.Text ElseIf RadioButtonList2.Text = "2001-4000" Then Label2.Text = RadioButtonList2.SelectedItem.Text ElseIf RadioButtonList2.Text = "4001-6000" Then Label2.Text = RadioButtonList2.SelectedItem.Text ElseIf RadioButtonList2.Text = "6001-mas" Then Label2.Text = RadioButtonList2.SelectedItem.Text End If End Sub

Ejercicios

Resuelva los siguientes ejercicios sabiendo que para cada ejercicio corresponde un formulario y cada formulario conlleva un hiperenlaces hacia el cual conecta un formulario con otro de tal forma que los formularios queden debidamente enlazados. No olvide poner en práctica los comandos CheckBox, CheckBoxList, RadioButton RadioButtonList

1. Se  desea reforestar un bosque que mide determinado número de hectáreas. Si la superficie del terreno excede a 1 millón de metros cuadrados, entonces decidirá sembrar de la sig. Manera:

            Porcentaje de la superficie del bosque             Tipo de árbol                        70%                                                     pino                        20%                                                     oyamel                        10%                                                     cedro

Si la superficie del terreno es menor o igual a un millón de metros cuadrados, entonces decidirá sembrar de la sig. Manera:

            Porcentaje de la superficie del bosque                 Tipo de árbol                        50%                                                                 pino                        30%                                                                 oyamel                        20%                                                                 cedroSe desea saber el numero de pinos, oyameles y cedros que tendrá que sembrar en el bosque, si se sabe que en 10 metros cuadrados caben 8 pinos, en 15 metros cuadrados caben 15 oyameles y en 18 metros cuadrados caben 10 cedros. También se sabe que una hectárea equivale a 10 mil metros cuadrados.

Page 18: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

2. Una fábrica ha sido sometida a un programa de control de contaminación para lo cual se efectúa una revisión de los puntos IMECA generados por la fabrica. El programa de control de contaminación consiste en medir los puntos IMECA que emite la fabrica en cinco días de una semana y si el promedio es superior a los 170 puntos entonces tendrá la sanción de parar su producción por una semana y una multa del 50% de las ganancias diarias cuando no se detiene la producción. Si el promedio obtenido de puntos IMECA es de 170 o menor entonces no tendrá ni sanción ni multa. El dueño de la fabrica desea saber cuanto dinero perderá después de ser sometido a la revisión.

3. Leer 2 números; si son iguales que los multiplique, si el primero es mayor que el segundo que los reste y si no que los sume.

4. Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que estas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y el resto al triple.

5. Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna como un porcentaje de su salario mensual que depende de su antigüedad en la empresa de acuerdo con la sig. tabla:

                        Tiempo                                                             Utilidad            Menos de 1 año                                                         5 % del salario            1 año o más y menos de 2 años                                 7% del salario            2 años o más y menos de 5 años                               10% del salario            5 años o más y menos de 10 años                             15% del salario            10 años o más                                                           20% del salario           

6. En una tienda de descuento se efectúa una promoción en la cual se hace un descuento sobre el valor de la compra total según el color de la bolita que el cliente saque al pagar en caja. Si la bolita es de color blanco no se le hará descuento alguno, si es verde se le hará un 10% de descuento, si es amarilla un 25%, si es azul un 50% y si es roja un 100%. Determinar la cantidad final que el cliente deberá pagar por su compra. se sabe que solo hay bolitas de los colores mencionados.

7. El INSS requiere clasificar a las personas que se jubilaran en el año de 1997. Existen tres tipos de jubilaciones: por edad, por antigüedad joven y por antigüedad adulta.

Las personas adscritas a la jubilación por edad deben tener 60 años o mas y una antigüedad en su empleo de menos de 25 años.   

Las personas adscritas a la jubilación por antigüedad joven deben tener menos de 60 años y una antigüedad en su empleo de 25 años o mas.

Las personas adscritas a la jubilación por antigüedad adulta deben tener 60 años o mas y una antigüedad en su empleo de 25 años o mas.

Determinar en que tipo de jubilación, quedara adscrita una persona.

Page 19: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Tema 2

Validación de Datos

La validación de datos garantiza la corrección y precisión de todos los valores de datos de la aplicación. La validación de datos de la aplicación puede diseñarse utilizando distintos enfoques: código de interfaz de usuario, código de aplicación o restricciones de bases de datos.

Hay varios tipos de validación de datos:

Validación del tipo de datos. Comprobación del intervalo. Comprobación del código. Validación compleja.

Una de las formas más sencillas de validación de datos consiste en comprobar el tipo de datos. La validación del tipo de datos responde a preguntas tan simples como "¿Es alfabética la cadena?" y "¿Es numérico el número?". Normalmente, validaciones tan simples se pueden controlar con la interfaz de usuario de la aplicación.

Como ampliación del tipo sencillo de validación, la comprobación del intervalo garantiza que el valor proporcionado esté entre los valores máximo y mínimo permitidos. Por ejemplo, un código de servicio con tipo de datos "character" sólo puede admitir caracteres alfabéticos de la A a la Z; el resto de caracteres no sería válido. Al igual que ocurre en el caso de la validación del tipo de datos, la interfaz de la aplicación puede proporcionar normalmente la validación de intervalo necesaria aunque, como alternativa de diseño, se puede crear una regla de empresa para controlar validaciones de intervalo.

La comprobación del código es un poco más complicada y requiere normalmente una tabla de búsqueda. Por ejemplo, supongamos que la aplicación calcula los impuestos sobre ventas correspondientes únicamente a determinados códigos de estados. Será necesario crear una tabla de validación que contenga códigos de estados sujetos a impuestos que estén autorizados. Esta tabla de validación puede formar parte de una regla de empresa, o se puede implementar directamente en la base de datos a efectos de búsqueda mediante consulta.

A veces, una validación sencilla de búsqueda y de campo no es suficiente. Por ejemplo, consideremos el caso de una petición de asistencia sanitaria que tiene un importe facturado de 123,57 dólares, pero cuyo importe permitido puede depender de una acumulación variable anual con un límite de 1.500 dólares (sin superar directiva de duración máxima de 100.000 dólares). En esta situación, la validación de datos va más allá de la pantalla de entrada de datos inmediata y consiste también en una evaluación minuciosa de cómo se ha de pagar la petición basándose en los límites de la directiva y en las acumulaciones anual y de vida. Este tipo de validación de datos compleja de varios archivos se suele controlar mejor con reglas de empresa basadas en procedimientos.

Las estructuras de archivos antiguas tienen el inconveniente de que los datos se corrompen con frecuencia (por ejemplo, campos numéricos en blanco o con caracteres alfabéticos). Cuando se crea una aplicación empresarial, se debe crear también una utilidad de comprobación para verificar la corrección de cada uno de los campos de todos los registros de los archivos que utiliza la aplicación. Si no se realiza esta acción, los resultados producidos por la aplicación pueden ser imprevisibles.

Page 20: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Controles de Validación en ASP .Net

Los controles de servidor de validación son un conjunto de controles que permiten validar un control de servidor de entrada asociado, como un control TextBox, y mostrar un mensaje personalizado cuando se produce un error en la validación. Cada control de validación realiza un tipo determinado de validación. Por ejemplo, se puede validar frente a un valor específico o un intervalo de valores mediante los controles CompareValidator y RangeValidator, respectivamente. Se puede incluso definir criterios de validación propios mediante el control CustomValidator. Dado que el mensaje de error se muestra en el control de validación, se puede controlar el lugar donde se muestra el mensaje en la página Web colocando el control de validación en el lugar deseado. También se puede mostrar un resumen de los resultados de todos los controles de validación en la página mediante el control ValidationSummary.

De manera predeterminada, la validación se realiza al hacer clic en un control de botón, como Button, ImageButton o LinkButton. Para impedir que se realice la validación al hacer clic en un control de botón, establezca la propiedad CausesValidation del control de botón en false. Esta propiedad suele estar establecida en false para un botón cancel o clear con el fin de impedir que se realice la validación cuando se hace clic en el botón.Las reglas de estilo CSS se aplican "en cascada", es decir, las reglas de estilo globales se seguirán aplicando a todos los elementos HTML a menos que sean sustituidas por las reglas de estilo locales. En general, las reglas de estilo locales tienen prioridad sobre las reglas de estilo globales. Esto significa que un estilo definido en un bloque STYLE de una página Web, por ejemplo, puede modificar desde una página concreta el estilo de todo el sitio Web definido en una hoja de estilos CSS externa. De forma similar, un estilo en línea definido dentro de una etiqueta HTML individual de la página puede modificar en una línea los estilos definidos para este tipo de elemento en todo el sitio.

Propiedades básicas de los controles de Validación

La siguiente tabla muestra las principales propiedades que se aplican a todos los controles de validación.

Propiedad Descripción

ControlToValidate Id. de programación del control de salida que evaluará el control de validación. Si no es un Id. legítimo, se iniciará una excepción.

Display Modo en que se muestra el control de validación especificado. Esta propiedad puede ser uno de los siguientes valores:

Ninguno — El control de validación jamás se muestra en línea. Utilice esta opción cuando desee mostrar el mensaje de error sólo en un control ValidationSummary

Estático — El control de validación muestra un mensaje de error si se produce un error en la validación. Se asigna un espacio en la página Web para el mensaje de error incluso si el control de entrada supera la validación. No cambia el diseño de la página cuando el control de validación muestra su mensaje de error. Como el diseño de página es estático, si hay varios controles de validación para el mismo control de entrada, éstos deberán ocupar distintas ubicaciones en la página.

Dinámico — El control de validación muestra un mensaje de error si se produce un error en la validación. El espacio para el mensaje de error se asigna dinámicamente en la página cuando se produce un error en la

Page 21: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

validación. De este modo, varios controles de validación pueden compartir la misma ubicación física en la página.

EnableClientScript Indica si está habilitada la validación en el cliente. Para deshabilitar la validación en el cliente en los exploradores que admitan esta función, establezca la propiedad EnableClientScript en false.

Enabled Indica si está habilitado el control de validación. Para impedir que el control de validación valide un control de entrada, establezca esta propiedad en false.

ErrorMessage Mensaje de error que se va a mostrar en el control ValidationSummary si se produce un error en la validación. Si no está establecida la propiedad Text del control de validación, también se muestra este texto en el control de validación cuando se produce un error en la validación. Se utiliza normalmente la propiedad ErrorMessage para proporcionar diferentes mensajes para el control de validación y el control ValidationSummary.

ForeColor Especifica el color en el que se va a mostrar el mensaje en línea cuando se produce un error en la validación.

IsValid Indica si el control de entrada especificado por la propiedad ControlToValidate se determina como válido.

Text Si esta establecida esta propiedad, se muestra este mensaje en el control de validación cuando se produce un error en la validación. Si no está establecida esta propiedad, el texto especificado en la propiedad ErrorMessage se muestra en el control.

Descripción de los controles de Validación

Los controles de Validación los encontramos en el cuadro de herramientas, la imagen siguiente muestra los controles encerrados marcados.

Page 22: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

RequiredFieldValidator

Utilice el control RequiredFieldValidator para convertir un control de entrada en un campo obligatorio. El control de entrada no supera la validación si el valor que contiene no cambia con respecto al valor inicial cuando se realizó la validación. Esto impide que el usuario deje el control de entrada asociado sin modificar. De manera predeterminada, el valor inicial es una cadena vacía (""), que indica que se ha de especificar un valor en el control de entrada para que éste supere la validación.

Nota   Antes de realizar la validación se quitan los espacios adicionales situados al principio y al final del valor de entrada. De este modo, se evita que un espacio introducido en el control de entrada supere la validación.

A veces, se desea tener un valor inicial que no sea una cadena vacía. Esto resulta útil cuando hay un valor predeterminado para un control de entrada y se desea que el usuario seleccione otro valor. Por ejemplo, puede haber un control ListBox con una entrada seleccionada, de manera predeterminada, que contiene instrucciones para que el usuario seleccione un elemento de la lista. El usuario debe seleccionar un elemento del control, pero se desea que el usuario no seleccione el elemento que contiene las instrucciones. Para impedir que el usuario seleccione este elemento, especifique su valor como valor inicial. Si el usuario selecciona este elemento, RequiredFieldValidator mostrará su mensaje de error. Para especificar el valor inicial del control de entrada asociado, establezca la propiedad InitialValue.

Nota   La propiedad InitialValue no establece el valor predeterminado del control de entrada. La propiedad InitialValue no tiene que coincidir ni siquiera con el valor predeterminado del control de entrada. Indica simplemente el valor que el usuario no podrá especificar en el control de entrada. El control de entrada no superará la validación si contiene este valor al realizarse la validación.

Se pueden asociar varios controles de validación al mismo control de entrada. Se puede utilizar, por ejemplo, un control de validación RequiredFieldValidator para asegurar que se han escrito datos en un control y usar al mismo tiempo un control de validación RangeValidator para comprobar que estos datos están comprendidos en un intervalo especificado.

CompareValidator

El control CompareValidator permite comparar el valor especificado por el usuario en un control de entrada, como un control TextBox, con el valor especificado en otro control de entrada o con un valor constante. También se puede usar el control CompareValidator para determinar si el valor especificado en un control de entrada se puede convertir al tipo de datos especificado por la propiedad Type.

Especifique el control de entrada que desee validar estableciendo la propiedad ControlToValidate. Si desea comparar un control de entrada específico con otro control de entrada, establezca la propiedad ControlToCompare en el nombre del control que desee comparar.

En lugar de comparar el valor de un control de entrada con otro control de entrada, se puede comparar el valor de un control de entrada con un valor constante. Especifique el valor constante con el que desee comparar estableciendo la propiedad ValueToCompare.

Page 23: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

La propiedad Operator permite especificar el tipo de comparación que se va a realizar, como mayor que, igual que, etc. Si se establece la propiedad Operator en ValidationCompareOperator.DataTypeCheck, el control CompareValidator omitirá las propiedades ControlToCompare y ValueToCompare e indicará simplemente si el valor especificado en el control de entrada puede convertirse al tipo de datos especificado por la propiedad Type.

Nota   Si el control de entrada está vacío, no se llamará a ninguna función de validación y la validación se realizará correctamente. Utilice un control RequiredFieldValidator para impedir que el usuario omita un control de entrada.

RangeValidator

El control RangeValidator permite comprobar si la entrada de un usuario se encuentra entre un límite inferior y un límite superior especificados. Se pueden comprobar los intervalos entre pares de números, caracteres alfabéticos y fechas. Los límites se expresan como constantes.

Utilice la propiedad ControlToValidate para especificar el control de entrada que se va a validar. Las propiedades MinimumValue y MaximumValue especifican los valores mínimo y máximo del intervalo válido, respectivamente.

La propiedad Type se utiliza para especificar el tipo de datos de los valores que se van a comparar. Los valores que se van a comparar se convierten a este tipo de datos antes de realizarse cualquier comparación.

Nota   Si el control de entrada está vacío, no se llamará a ninguna función de validación y la validación se realizará correctamente. Utilice un control RequiredFieldValidator para impedir que el usuario omita un control de entrada. De manera similar, si el valor del control de entrada no se puede convertir al tipo de datos especificado por la propiedad Type, la validación también se llevará a cabo correctamente. Se recomienda encarecidamente utilizar un control CompareValidator adicional, con su propiedad Operator establecida en ValidationCompareOperator.DataTypeCheck, con el fin de comprobar el tipo de datos del valor de entrada.

Nota   El control RangeValidator iniciará una excepción si el valor especificado por la propiedad MaximumValue o MinimumValue no se puede convertir al tipo de datos especificado por la propiedad Type.

RegularExpressionValidator

El control RegularExpressionValidator se utiliza para determinar si el valor de un control de entrada coincide con un modelo definido por una expresión regular. Este tipo de validación permite comprobar secuencias de caracteres previsibles, como las de los números de la seguridad social, las direcciones de correo electrónico, los números de teléfono y los códigos postales, entre otras.

Nota   Si el control de entrada está vacío, no se llamará a ninguna función de validación y la validación se realizará correctamente. Utilice un control RequiredFieldValidator para impedir que el usuario omita un control de entrada.

Page 24: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

La validación se realiza tanto en el cliente como en el servidor, salvo en el caso de que el explorador no admita la validación en el cliente o ésta haya sido explícitamente deshabilitada (estableciendo la propiedad EnableClientScript en false).

Utilice la propiedad ValidationExpression para especificar la expresión regular utilizada para validar el control de entrada. La sintaxis de la validación mediante expresiones regulares presenta algunas diferencias en el cliente y en el servidor. En el cliente, se utiliza la sintaxis de expresiones regulares de JScript. En el servidor, se utiliza la sintaxis Regex. Dado que la sintaxis de las expresiones regulares de JScript es un subconjunto de la sintaxis Regex , se recomienda utilizar la primera para obtener los mismos resultados en el cliente y en el servidor.alidator

CustomValidator

El control CustomValidator permite crear un control de validación con lógica de validación personalizada. Por ejemplo, se puede crear un control de validación que compruebe si el valor especificado en un cuadro de texto es un número par. Los controles de validación siempre realizan la comprobación de validación en el servidor. También tienen una implementación completa en el cliente que permite a los exploradores compatibles con DHTML (como Microsoft Internet Explorer 4.0 ó posterior) realizar la validación en el cliente.

La validación en el cliente mejora el proceso de validación ya que se comprueban los datos proporcionados por el usuario antes de enviarlos al servidor. De este modo se pueden detectar los errores en el cliente antes de enviar el formulario y se evita la acción de ida y vuelta de la información necesaria para la validación en el servidor. Para crear una función de validación en el servidor, proporcione un controlador del evento ServerValidate que realiza la validación.

Para obtener acceso a la cadena del control de entrada que se va a validar, utilice la propiedad Value del objeto ServerValidateEventArgs que se ha pasado al controlador de eventos como parámetro. A continuación, se almacena el resultado de la validación en la propiedad IsValid del objeto ServerValidateEventArgs.

Para crear una función de validación en el cliente, agregue primero la función de validación en el servidor que se ha descrito anteriormente. A continuación, agregue a la página .aspx la función de secuencia de comandos de validación en el cliente. Si utiliza VBScript, la función deberá tener la siguiente forma:

Sub ValidationFunctionName (source, arguments)

Si utiliza JScript, la función deberá tener la siguiente forma:

Function ValidationFunctionName (source, arguments)

Utilice la propiedad ClientValidationFunction para especificar el nombre de la función de secuencia de comandos de validación en el cliente que está asociada al control CustomValidator. Como la función de secuencia de comandos se ejecuta en el cliente, la función debe estar en un lenguaje que admita el explorador de destino, como VBScript o JScript.

Al igual que en el caso de la validación en el servidor, la propiedad Value del parámetro arguments permite obtener acceso al valor que se va a validar. Para devolver el resultado de la validación, establezca la propiedad IsValid del parámetro arguments.

Page 25: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

PRECAUCIÓN Al crear una función de validación en el cliente, asegúrese de incluir asimismo la función de validación en el servidor. Si crea una función de validación en el cliente sin una función correspondiente en el servidor, código malicioso podrá omitir la validación. Se pueden asociar varios controles de validación a un control de entrada individual para validar diferentes criterios.

Por ejemplo, se pueden aplicar varios controles de validación a un control TextBox que permite al usuario especificar la cantidad de elementos que se han de agregar a un carrito de la compra. Se puede utilizar un control CustomValidator para asegurar que el valor especificado es menor que la cantidad del inventario y un control RequiredFieldValidator para asegurar que el usuario especifica un valor en el control TextBox.

Nota Si el control de entrada está vacío, no se llamará a ninguna función de validación y la validación se realizará correctamente. Utilice un control RequiredFieldValidator para impedir que el usuario omita un control de entrada. Se puede usar un control CustomValidator sin establecer la propiedad ControlToValidate. Esto se suele hacer cuando se validan varios controles de entrada o controles de entrada que no se pueden usar con controles de validación, como el control CheckBox. En este caso, la propiedad Value del parámetro arguments pasado al controlador de eventos para el evento ServerValidate y a la función de validación en el cliente, siempre contiene una cadena vacía (""). Sin embargo, se sigue llamando a estas funciones de validación en los casos en los que resulte apropiado para determinar la validez en el cliente y en el servidor. Para obtener acceso al valor que se va a validar, es preciso hacer referencia mediante programación al control de entrada que se desea validar y, a continuación, recuperar el valor de la propiedad apropiada. Por ejemplo, para validar un control CheckBox en el servidor, no establezca la propiedad ControlToValidate del control de validación y utilice el siguiente código para el controlador del evento ServerValidate:

Sub ServerValidation (source As object, args As ServerValidateEventArgs)

args.IsValid = (CheckBox1.Checked = True)

End Sub

Mostrar el resumen de los errores cometidos

El control ValidationSummary permite resumir los mensajes de error de todos los controles de validación de una página Web en una sola ubicación. El resumen puede aparecer en forma de lista, lista con viñetas o un único párrafo, en función del valor de la propiedad DisplayMode. El mensaje de error que se muestra en el control ValidationSummary para cada control de validación en la página viene especificado por la propiedad ErrorMessage de cada control de validación. Si no está establecida la propiedad ErrorMessage del control de validación, no se mostrará ningún mensaje de error en el control ValidationSummary correspondiente a dicho control de validación. También se puede especificar un título personalizado en la sección de encabezado del control ValidationSummary estableciendo la propiedad HeaderText.

Para controlar si se muestra o se oculta el control ValidationSummary, establezca la propiedad ShowSummary. El resumen también se puede mostrar en un cuadro de mensaje estableciendo la propiedad ShowMessageBox en true.

Page.IsPostBack (Propiedad) 

Page 26: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Obtiene un valor que indica si la página se está cargando como respuesta a un valor devuelto por el cliente, o si es la primera vez que se carga y se obtiene acceso a la misma.

Nuestro Ejemplo

Definiciones:

Para nuestro ejemplo, las definiciones resultantes de los controles utilizados es como sigue:

Control a Validar Definición

Para idRequiredFieldValidator

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="id" ErrorMessage="Id, campo obligatorio">*</asp:RequiredFieldValidator><br />

Para NombreRequiredFieldValidator

<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="nombre" ErrorMessage="Nombre, Campo

Page 27: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

obligatorio">*</asp:RequiredFieldValidator><br />

Para edadRangeValidator

<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="edad" ErrorMessage="(0-100)" MaximumValue="100" MinimumValue="1" Type="Integer">*</asp:RangeValidator>

Para DireccionRequiredFieldValidator

<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="direccion" ErrorMessage="Direccion Obligatoria">*</asp:RequiredFieldValidator>

Para E-mailRequiredFieldValidator   yRegularExpressionValidator

<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="email" ErrorMessage="E-mail, capmpo obligatorio">*</asp:RequiredFieldValidator> <asp:RegularExpressionValidator

ID="RegularExpressionValidator1" runat="server" ControlToValidate="email" ErrorMessage='Debe llevar el @ y el "."' ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">*</asp:RegularExpressionValidator>

Para validar pagina

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) If Not Page.IsPostBack Then Validate() Else Label1.Visible = True Label1.Text = "Página Válida" End If

End Sub

Para fecha

Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) fecha.Text = Calendar1.SelectedDate End Sub

Al cometer algunos errores la página se muestra de la siguiente forma, al final de la página se ha incluído un control ValidationSummary que muestra un resumen de los errores cometidos.

Al clic sobre el botón de comando validar página se verá algo así el formulario, ya que no se han ingresado datos sobre los campo validados.

Page 28: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Ejercicios

Resuelva los siguientes ejercicios sabiendo que para cada ejercicio corresponde un formulario y cada formulario conlleva un hiperenlaces hacia el cual conecta un formulario con otro de tal forma que los formularios queden debidamente enlazados. No olvide poner en práctica los comandos CheckBox, CheckBoxList, RadioButton RadioButtonList, agregar validaciones para los campos de los formularios según se estime conveniente:

1. Una pizzería, vende sus pizzas en tres tamaños: pequeña (10 pulg.  De diámetro); mediana (12 pulg.  De diámetro); y grandes (16 pulg.  De diámetro); Una pizza puede ser sencilla (con sólo salsa y carne), o con ingredientes extras, tales como pepinillos, champiñones o cebollas.  Los propietarios desean desarrollar un programa que calcule el precio de venta de una pizza, dándole el tamaño y el número de ingredientes extras. El precio de venta será 1.5 veces el costo total, que viene determinado por el área de la pizza, mas el numero de ingredientes.

En particular el costo total se calcula sumando:

Page 29: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

-          un costo fijo de preparación-          un costo base variable que es proporcional al tamaño de la pizza-          un costo adicional por cada ingrediente extra. Por simplicidad se supone que cada

ingrediente extra tiene el mismo costo por unidad de área.

2. Suponga que tiene una tienda y desea registrar sus ventas por medio de una computadora. Diseñe un programa que lea:

El monto de la venta, Calcule e imprima el IVA , Calcule e imprima el total a pagar, Lea la cantidad con que paga el cliente, Calcule e imprime el cambio.

3. Tomando como base los resultados obtenidos en un laboratorio de análisis clínicos, un medico determina si una persona tiene anemia o no, lo cual depende de su nivel de hemoglobina en la sangre, de su edad y de su sexo. Si el nivel de hemoglobina que tiene una persona es menor que el rango que le corresponde, se determina su resultado como positivo y en caso contrario como negativo. La tabla en la que el medico se basa para obtener el resultado es la siguiente:

              EDAD                                                   NIVEL HEMOGLOBINA           0 - 1 mes                                                     13    - 26 g%      > 1 y < = 6 meses                                        10    - 18 g%

> 6 y < = 12 meses                                      11    - 15 g%    > 1 y < = 5 años                                          11.5 - 15 g%       > 5 y < = 10 años                                        12.6 - 15.5 g%

> 10 y < = 15 años                                      13    - 15.5 g%      mujeres > 15 años                                       12    - 16 g%        hombres > 15 años                                      14    - 18 g%

Page 30: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Tema 3

Autenticación basada en formularios

¿Qué necesitamos?

Para activar la autenticación de formularios básica en una aplicación, realizaremos los siguientes pasos:

Configurar el modo de autenticación modificando la sección authentication en el web.cofig de la aplicación.

Denegar el acceso a los usuarios anónimos en uno o más directorios de la aplicación, mediante la modificación de la sección authorization en los archivos web.config de los directorios privados

Creara una página de registro con un formulario que permita la identificación de usuarios.

Para la validación contra la base de datos, necesitaremos un servidor de base de datos en el que configuraremos una tabla de usuarios y un procedimiento almacenado.

Para empezar vamos a crear un directorio, PRIVADO, y dentro de este una página default que nos muestre un "HOLA MUNDO PRIVADO" para validar que vemos el directorio en nuestra web.

Modificando el web.config

Con el directorio privado que hemos creado, y desde el cual podremos colgar todas nuestras herramientas administrativas del site, como el acceso a descargas o imágenes personales, tenemos que realizar una serie de modificaciones en el web.config

En este tutorial no nos vamos a parar en explicar al detalle todas las opciones que se puede usar para la crear un acceso privado, solo nos ocuparemos de las opciones que vamos a usar.

El fichero web.config se encuentra localizado en el directorio raíz de la aplicación web con la que estamos trabajado. Al abrirlo veremos que dentro de la etiqueta system.web se encuentran diferentes opciones, las que ocuparan nuestra atención son las entradas authentication y authorization, ya que son en las que realizaremos las modificaciones.

En el caso de que no exista este archivo web.config podremos crearlo, pero siempre en el raíz de la aplicación.

authentication

El archivo web.config contendrá el siguiente código:

<configuration> <system.web> <authentication mode="Forms"> <forms name="FormsAuthDB.nevaAuth" loginUrl="login.aspx" protection="All" timeout="10" path="/"> <credentials passwordFormat="Clear">

Page 31: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

<user name="adm" password="myadm"/> </credentials> </forms> </authentication> </system.web><configuration>

Como se puede observar, y parece obvio, el modo de autenticación de nuestro directorio será mediante un formulario, quedando esto reflejado en la propiedad mode="Forms"

Dentro de la sección forms se definen el funcionamiento de nuestro formulario:

name: el nombre de la cookie de navegador que contiene la entrada de autenticación. Si no especificamos uno se llamará .ASPXAUTH

Recomendamos que si usamos varias aplicaciones en nuestro servidor web se especifique un nombre por aplicación.

loginUrl: indicaremos la página a la que se dirigirá al usuario, de modo automático, cuando se precise su identificación. Si no especificamos una página, por defecto se redirige a login.aspx situada en el raíz de la aplicación web.

timeout: es el tiempo, en minutos, que la cookie tiene validez, siendo de 30 minutos el valor por defecto.

protection: especifica la forma en que se protegen los datos de la cookie. Los valores son All, None, Encryption y Validation, siendo All el valor que se toma por defecto.

Por omisión las cookies sé encriptan con DES o TripleDES, dependiendo de la capacidad del servidor.

El elemento credentials nos servirá para configurar los usuarios que tendrán acceso a nuestro directorio privado. Esto es útil si no tenemos un listado largo de usuarios y que no queremos o nos es necesario realizar labores de mantenimiento sobre estos.

Este elemento es bastante simple de entender ya que se creará una entrada por cada uno de los usuarios que tendrán acceso a las aplicaciones o elementos descargables que tengamos en nuestra zona privada. En estos configuraremos el nombre de usuario y el password.

Si deseamos disponer de una mayor seguridad, por si algún curioso lograra acceder al servidor y ver las password podríamos encriptarlos utilizando los algoritmos hash SHA1 y MD5, para ello tendríamos que cambiar el valor de passwordFormat por SHA1 o MD5. Pero la forma de encriptar este password y acceder a ellas lo trataremos en otra ocasión.

Configurando el directorio

Bien, ya tenemos listo el sistema de autenticación, hemos creado el directorio que deseamos hacer privado y preparada una página que nos servirá de bienvenida a la zona privada.

Ahora solo nos falta hacer que este sea privado. Para ello será necesario crear un fichero web.config en el raíz de nuestro directorio privado. En este web.config configuraremos la sección authorization, donde denegaremos el acceso a los usuarios anónimos.

Page 32: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

El contenido del web.config será el siguiente.

<configuration> <system.web> <authorization> <deny users="?"/> </authorization> </system.web></configuration>

Dentro de la sección authorization, se permite las siguientes entradas:

deny para denegar usuarios allow para permitir el acceso a usuarios.

Ambas entradas tienen la propiedad users donde podemos especificar:

? todos los usuarios anónimos. * todos los usuarios, tanto anónimos como autenticados. Lista usuarios, se permite especificar un listado de usuarios separados por comas, que

tendrán permitido o denegado el acceso según donde se especifique

La página de Login

Bien ya está todo listo, hemos configurado el directorio, le hemos dado las indicaciones a la aplicación para que nos autentique a los usuarios, hemos definido la autorización del directorio, pero no falta hacer logo, ya que sin esto no veremos nunca ese EJERCICIO DE LA PIZZA que hemos preparado.

Pues manos a la obra. Tenemos que crear un formulario web, pero no voy a explicar como hacerlo,

Este formulario web tendrá los siguientes elementos:

Una caja de textos, con su correspondiente título donde pidamos el nombre de usuario se llamará tblogin.

Una caja de texto, y su titulo, donde pidamos la password, esta tendrá la propiedad textmode=Password. Se llamará tbpassword

Un boto de enviar, y otro opcional de nombre borrar. Una etiqueta para mostrar errores.

Opcionalmente podemos insertar el objeto que nos valide que el usuario a insertado los datos de forma correcta en el formulario.

El código del web.config sería el siguiente:

Page 33: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

A continuación se muestra el formulario de inicio se sesión como quedaría éste estructurado:

Page 34: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

El código del botón enviar sería el siguiente:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) If IsValid Then If System.Web.Security.FormsAuthentication.Authenticate(Tblogin.Text, tbPassword.Text) Then System.Web.Security.FormsAuthentication.SetAuthCookie(Tblogin.Text, False) Response.Redirect("datos_personales.aspx") System.Web.Security.FormsAuthentication.SignOut() Else Lblerror.Visible = True Lblerror.Text = "Nombre de usuario y/o contraseña no validos." End If End IfEnd Sub

Este código contiene el meollo del asunto.

El método Autenticate de System.Web.Security.FormsAuthentication localiza en el fichero web.config el usuario y password introducidos son configurados, devolviendo true si encuentra el par o false en caso contrario.

En caso de que la entrada sea errónea se muestra un mensaje al usuario.

Si el usuario y passoword son correctos, ejecutamos el método RedirectFromLoginPage, que nos genera un ticket de acceso y nos envía a la página privada a la que queríamos acceder y que nos ha obligado a hacer el login. El segundo parámetro de este método indica si queremos hacer una cookie permanente o temporal. En el primer caso, no será necesario que volvamos a introducir el usuario y password para acceder a la página Web.

Otra opción que tenemos es la de generar el ticket sin redirección automática. De este modo podemos controlar el destino tras un login, de modo que los usuarios, una vez logados, vayan a una página de inicio concreto. Para hacer esto hemos de usar en lugar del método RedirectFromLoginPage, el método Response.Redirect("nombre_de_la pagina.aspx") quedando a nuestro criterio la redirección de la siguiente página que se debe visualizar.

Notas finales.

En el ejemplo que hemos estado viendo tenemos los usuarios están definidos en el fichero web.config. Esto esta bien si tenemos un numero fijo de usuarios, que no pueden cambiar su password. También es útil para caso de pocos usuarios. En condiciones normales lo que vamos a tener es una base de datos que contiene una tabla con los usuarios de nuestro site. Para poder acceder a ellos hemos de sustituir la llamada la método Autenticate por una llamada a un método propio que verifique en nuestra base de datos si el usuario y password son validos o no. Esto os queda como deberes.

Otra cosa que hemos de añadir a nuestro site es la posibilidad de desconectarnos. Para ello usamos el método System.Web.Security.FormsAuthentication.SignOut () que permite que el usuario finalice su sesión.

Page 35: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Usuarios en base de datos

Ya hemos vista la forma simple de hacer login con nuestros usuarios en el web.config. Ahora lo podemos complicar un poco más utilizando la base de datos, si es que tenemos disposición de hacerlo.

Supongamos que tenemos un SQL Server instalado y que tenemos acceso a el. Tendremos que configurar una tabla, donde tengamos un campo login y otro password como mínimo, el resto de campos a elección. No explicaremos como crear la tabla, ya que esto lo deben de saber ..

Vamos a usar un formulario nuevo, parecido al formulario anterior de la contraseña. Más o menos así:

En esta ocasión necesitaremos importar las siguientes clases para el manejo de base de datos:

OjoNo ir a la pestaña código ni tampoco agregar estas instrucciones<script runat ="server"></script>Ahora bien has doble sobre el fondo del formulario lo cual te llevará al espacio del nombre del formulario.ASPX.VB , escribe el siguiente código que servirá para el enlace a la base de datos y a la tabla que hemos creado previamente.

Page 36: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Imports System.DataImports System.Data.SqlClient

Partial Class autenticar Inherits System.Web.UI.Page Dim base As New SqlConnection("Data Source=LAB318;Initial Catalog=almanza;Integrated Security=True") Dim tabla As New DataSet Dim adap As New SqlDataAdapter Dim dtr As DataRow

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.base.Open() Me.adap = New SqlDataAdapter("select * from usuario", Me.base) Me.base.Close() Me.tabla = New DataSet Me.adap.Fill(Me.tabla, "usuario") End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click If IsValid Then System.Web.Security.FormsAuthentication.RedirectFromLoginPage(nombre.Text, False) If Not (nombre.Text = "" And contrasena.Text = "") Then Dim i As Integer = 0 Do Until i = Me.tabla.Tables("usuario").Rows.Count Me.dtr = Me.tabla.Tables("usuario").Rows(i) If Me.nombre.Text = Trim(Me.dtr("nombre")) And Me.contrasena.Text = Trim(Me.dtr("contra")) Then Response.Redirect("datos_personales.aspx") Exit Sub End If i += 1 Loop MsgBox("contraseña incorrecta") Else Label1.Text = "Ningun campo debe estar vacío" End If Label1.Text = "Página no valida" End If End SubEnd ClassNota: fíjate que seguí usando el formulario datos_personales.aspx, luego de autenticarme, La función TRIM() sirve para quitar los espacios en blanco que puedan haber a la izquierda y la derecha de los campos de la tabla.

Nota2:Recuerda que debes tener siempre configurado el Web.config por que si no la redirección no funcionará ahora la diferencia es que no utilizaras el nombre de usuario ni la contraseña que pusimos en el web.config , sino la de la base de datos.

Page 37: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Ejercicios

Resuelva los siguientes ejercicios sabiendo que para cada ejercicio corresponde un formulario y cada formulario conlleva un hiperenlaces hacia el cual conecta un formulario con otro de tal forma que los formularios queden debidamente enlazados. No olvide poner en práctica los comandos CheckBox, CheckBoxList, RadioButton RadioButtonList, agregar validaciones para los campos de los formularios según se estime conveniente y la autenticación basada en formularios.

1. Crear un formulario de inicio de sesion con autenticación Forms, de tal manera que al habernos autenticado nos redireccione al siguiente formulario:

2. Un alumno desea saber cual será su promedio general en las tres materias mas difíciles que cursa y cual será el promedio que obtendrá en cada una de ellas. Estas materias se evalúan como se muestra a continuación:

La calificación de Matemáticas se obtiene de la sig. manera:Examen 90%Promedio de tareas 10%En esta materia se pidió un total de tres tareas.

La calificación de Física se obtiene de la sig. manera:Examen 80%Promedio de tareas 20%En esta materia se pidió un total de dos tareas.

La calificación de Química se obtiene de la sig. manera:Examen 85%Promedio de tareas 15%En esta materia se pidió un promedio de tres tareas.

Calcular el promedio de un alumno cualquiera por asignatura y total.

3. Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna como un porcentaje de su salario mensual que depende de su antigüedad en la empresa de acuerdo con la sig. tabla:

                        Tiempo                                                             Utilidad            Menos de 1 año                                                         5 % del salario            2 año o mas y menos de 5 años                                7% del salario            6 años o mas y menos de 10 años                             10% del salario            10 años o mas y menos de 13 años                           15% del salario            14 años o mas                                                           20% del salario           

Al final imprimir el nombre, la edad, la cédula del trabajador y la utilidad que éste recibe

4. crear un formulario que sirva como factura en el cual se incluya el nombre de la persona su telefono para calcular lo que un proveedor de estéreos ofrece como descuento al comprar un electro doméstico de la siguiente manera:

10% sobre el precio sin IVA, de algún aparato si este cuesta $2000 o mas. Además, independientemente de esto, ofrece un 5% de descuento si  la marca es “NOSY”. Determinar cuanto pagara, con IVA incluido, un cliente cualquiera por la compra de su aparato.

Page 38: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Tema 4

MasterPages

Qué tiene de común todos los Sitios Web?, (no vale la respuesta de HTML), nada?, bueno, si se fijan bien todos los Sitios Web poseen un diseño común a través de todo el sitio, visiten terra, o todos los que tengan un menú y cabecera y podrán apreciar que tienen el mismo diseño y formato.

Cuando empezamos a desarrollador un Sitio Web, lo que mas tiempo nos demora es la plantilla base ya que después de tener nuestra base solo es cosa de copiar y cambiar nuestro HTML especifico de cada página, a través de todas las páginas de nuestro Sitio Web. Y que tiene que ver Master Pages con esto?, Pues ahora con ASP.NET 2.0 podemos crear paginas que nos servirán como plantillas a nuestro Sitio Web. Lo mejor es que en Master Pages, tenemos la misma funcionalidad que en las paginas aspx, es decir, que podemos agregar controles asp, y agregar código del lado de servidor para esos controles. Y lo mejor es que tendremos disponible todo esto en el resto de páginas aspx, también podremos acceder a las propiedades de la Master Pages.

La ventaja que tenemos con Master Pages, es que vamos a crear una plantilla, o mas, con una cabecera, menú, etc, para todo nuestro Sitio Web, esto hará más fácil el mantenimiento, ya que solo iremos a nuestro Master Page editamos, y automáticamente los cambios se verán reflejados en todas las páginas que usen el Master Page que se edito. Otra ventaja muy importante es que tendremos soporte en diseño WYSIWYG (lo que ves, es lo que obtienes), en las páginas aspx, y podremos ver como será la presentación final.

Lo primero es lo primero, hay que crear un nuevo sitio Web en la cual hay que crear nuestra MasterpageAgregar nuevo elemento y elegir la segunda opción “pagina principal”, algo así:

Page 39: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Lo segundo que hay que hacer es borrar la primer página por defecto que nos muestra la aplicación (Defalul.aspx) esto es por que queremos que el resto de formulario que creemos tengan el mismo aspecto que la masterpage.Como diseñar la Masterpage?, lo primero que necesitamos es crear una maqueta en photoshop (de la cual ustedes son expertos), cuando tengan hecha su maqueta la guardan como jpg para que la insertemos en la masterpage.Por defecto la página principal del Masterpage queda así:

Page 40: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Algo que se escapaba es que hay que agregar la maqueta guardada como jpg al proyecto. Como? Haz clic derecho sobre el nombre de tu proyecto y elige la opción Agregar elemento existente, busca la ruta donde guardaste la maqueta y ahora listo. Hacemos clic sobre la ventana de propiedades de la masterpage (debe estar seleccionada la masterpage), elige la opción style selecciona la pestaña fondo y en imagen de fondo busca la maqueta que acabas de anexar a tu proyecto.El mío es asi:

Luego que has creado y modificado tu Masterpage lo que sigue es agregar el resto de formularios Web para el resto de elementos de tu proyecto. Agregar nuevo elemento y elegir la opción “Web Form”, lo que sigue es muy importante:

tienes que seleccionar la opción “Seleccionar la página principal” ya que esto nos permitirá que tome el fondo y los anexos que tiene tu Master page. Y listo ahora hay que hacer los siguientes ejercicios para demostrar lo aprendido hasta hoy.

Ejercicios1. Crear una maqueta en Photoshop y desde :NET2005 crear una aplicación en la cual

agregue una Masterpage a la que le inserte la maqueta como fondo para su aplicación. En cada uno de los formularios a crear debe aparecer su nombre y el nombre del módulo que está estudiando por defecto.

2. Un alumno desea saber cual será su calificación final en la materia de Algoritmos. Dicha calificación se compone de los siguientes porcentajes:

55% del promedio de sus tres calificaciones parciales. 30% de la calificación del examen final. 15% de la calificación de un trabajo final.

Page 41: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

3. Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes.

4. Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior

5. En un hospital existen tres áreas: Ginecología, Pediatría, Traumatologia. El presupuesto anual del hospital se reparte conforme a la sig. tabla:

·         Área                             Porcentaje del presupuesto·         Ginecología                              40%·         Traumatologia                           30%·         Pediatría                                  30%Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal.

6. En una escuela la colegiatura de los alumnos se determina según el numero de materias que cursan. El costo de todas las materias es el mismo.  Se ha establecido un programa para estimular a los alumnos, el cual consiste en lo siguiente:

Si el promedio obtenido por un alumno en el ultimo periodo es mayor o igual que 9, se le hará un descuento del 30% sobre la colegiatura y no se le cobrara IVA;

Si el promedio obtenido es menor que 9 deberá pagar la colegiatura completa, la cual incluye el 10% de IVA.Obtener cuanto debe pagar un alumno.

7. Una fábrica ha sido sometida a un programa de control de contaminación para lo cual se efectúa una revisión de los puntos IMECA generados por la fabrica. El programa de control de contaminación consiste en medir los puntos IMECA que emite la fabrica en cinco días de una semana y si el promedio es superior a los 170 puntos entonces tendrá la sanción de parar su producción por una semana y una multa del 50% de las ganancias diarias cuando no se detiene la producción. Si el promedio obtenido de puntos IMECA es de 170 o menor entonces no tendrá ni sanción ni multa. El dueño de la fabrica desea saber cuanto dinero perderá después de ser sometido a la revisión.

Page 42: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Tema 5

VISUAL BASIC NET MODELOS DE ALMACENAMIENTO DE DATOS

En general existen dos modelos de almacenamiento de datos en los sistemas de información.

a) El modelo tradicional de archivos que se construye con los siguientes elementos:

1.- Variables Registros que como ya se indico son variables que permiten almacenar conjuntos de datos de diverso tipo.

También se pueden definir como representaciones simbólicas y programáticas de entidades lógicas de información ejemplos de variables registros son alumnos, empleados, clientes, proveedores, productos, autos, etc.

Estas variables registros también ocupan programas o rutinas de programas para procesarlas por ejemplo un procedimiento, modulo o subrutina se encargara de capturar los datos que contendrá la variable registro otro procedimiento para corregir los datos que ya contiene, otro procedimiento para desplegarlos en pantalla ya cuando a sido capturada y así sucesivamente.

2.-Archivos, que en principio pueden entenderse como una especie de almacenes o bodegas para almacenamiento de datos en forma permanente en disco es decir, un archivo de empleados en disco contiene todos los datos de todos los empleados de una empresa.

Igualmente los archivos ocupan su propios programas o subrutinas o procedimientos especializados por ejemplo, procedimientos para crear los archivos, para almacenar o dar de altas los registros en el archivo, procedimientos para buscar un registro determinado, procedimiento para dar de baja un registro, etc.

3.- Una aplicación que es un programa que se encarga de coordinar todos los programas descritos y presentar a usuarios de manera clara, fácil, accesible y entendible.

Salta a la vista que construir un sistema de información por ejemplo para una tienda de video o para un refaccionaria etc, involucra un gran cantidad de trabajo de programación puesto que hay que programar muchas variables registros, muchos archivos en disco y construir una o muchas aplicaciones.

Este modelo se usa todavía en la actualidad pero es obvio que mejores maneras, mas rápidas, seguras y eficientes existen en la actualidad para resolver estos problemas, y esto nos lleva al segundo modelo de datos.

b) Modelo de Bases de Datos Relacionales: Este modelo intenta simplificar la construcción de sistemas de información como los antes descritos, este modelo solo incluye en forma simple los siguientes elementos:

Page 43: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

b.1) Tablas, es una combinación de las variables registro y de los archivos del modelo anterior.

Es decir cuando un programador moderno define o declara una tabla en un programa realmente esta haciendo dos cosas por el precio de una es decir, crea una variable registro en memoria que almacenara los datos y al mismo tiempo ya esta creando un archivo en disco que se llamara igual que la tabla y que automáticamente se convertirá en un espejo de la tabla en memoria.

b.2) Aplicación, que tiene la misma función que en el modelo anterior.

Introducción a .NET con Visual Basic 2005 - System.Data 

System.Data

Las clases del nombre de espacio System.Data son bastantes extensas y variadas. Quizás las clases más importantes son la clase DataView, la clase DataSet y la clase DataTable.

La clase DataSet

El DataSet es una representación de datos residente en memoria que proporciona una modelo de programación relacional coherente independientemente del origen de datos que contiene. El DataSet contiene en sí, un conjunto de datos que han sido volcados desde el proveedor de datos.

Debemos tener en cuenta que cuando trabajamos con DataSets, el origen de datos no es lo más importante, ya que éste, puede ser cualquier tipo de origen de datos. No tiene porqué ser una base de datos.

Un DataSet contiene colecciones de DataTables y DataRelations. El DataTable contiene una tabla o tablas, mientras que la DataRelation contiene las relaciones entre las DataTables. Sin embargo, no es necesario especificar todo esto hasta el último detalle como veremos más adelante.

Page 44: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

La clase DataView

Este objeto nos permite crear múltiples vistas de nuestros datos, además de permitirnos presentar los datos.

Es la clase que nos permite representar los datos de la clase DataTable, permitiéndonos editar, ordenar y filtrar, buscar y navegar por un conjunto de datos determinado.

La clase DataTable

Este objeto nos permite representar una determinada tabla en memoria, de modo que podamos interactuar con ella.

A la hora de trabajar con este objeto, debemos tener en cuenta el nombre con el cuál definamos una determinada tabla, ya que los objetos declarados en en el DataTable es sensitivo a mayúsculas y minúsculas.

Un pequeño ejemplo práctico

El siguiente ejemplo práctico, nos enseña a utilizar un DataSet y nos muestra como podemos acceder a los objetos que dependen de un DataSet para recuperar por ejemplo, los campos y propiedades de una determinada tabla o tablas.

Los proveedores de acceso a datos 

Los proveedores de acceso a datos

Los proveedores de acceso a datos es la capa inferior de la parte correspondiente al acceso de datos y es la responsable de establecer la comunicación con las fuentes de datos.

Page 45: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

En este conjunto de nombres de espacio, encontraremos casi siempre las clases Connection, Command, DataAdapter y DataReader como las clases más generales, las cuales nos permiten establecer la conexión con la fuente de datos.

Proveedores de acceso a datos de .NET Framework

Dentro del entorno .NET Framework, encontramos un nutrido conjunto de proveedores de acceso a datos.

Estos son los siguientes:

ODBC .NET Data Provider OLE DB .NET Data Provider

Oracle Client .NET Data Provider

SQL Server .NET Data Provider

Estos proveedores de acceso a datos incluidos en Microsoft .NET Framework, los podemos encontrar en los nombres de espacio:

System.Data.Odbc System.Data.OleDb

System.Data.OracleClient

System.Data.SqlClient

El proveedor ODBC .NET permite conectar nuestras aplicaciones a fuentes de datos a través de ODBC.

El proveedor OLE DB .NET permite conectar nuestras aplicaciones a fuentes de datos a través de OLE DB.

El proveedor Oracle Client .NET es un proveedor de acceso a datos especialmente diseñado para bases de datos Oracle.

Por último, el proveedor SQL Server .NET es un proveedor de acceso a datos nativo, que nos permite conectar nuestras aplicaciones a fuentes de datos Microsoft SQL Server 7 o posterior.Se trata de un proveedor específico para bases de datos Microsoft SQL Server 7.0, Microsoft SQL Server 2000 y Microsoft SQL Server 2005.

Nota

Consejo: Siempre que pueda, utilice para acceder a fuentes de datos, un proveedor de acceso a datos nativo. Esto le permitirá aumentar considerablemente el rendimiento a la hora de establecer la conexión con una determinada fuente de datos

Los proveedores de acceso a datos que distribuye Microsoft en ADO.NET y algunos desarrollados por otras empresas o terceros, contienen los mismos objetos, aunque los nombres

Page 46: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

de éstos, sus propiedades y métodos, pueden ser diferentes. Más adelante veremos algún ejemplo, y observará en la práctica cuáles son estas diferencias más destacables.

Otros proveedores de acceso a datos

Si bien el proveedor de acceso a datos es el mecanismo a través del cuál podemos establecer una comunicación nativa con una determinada fuente de datos, y dado que Microsoft proporciona los proveedores de acceso a datos más corrientes, es cierto que no los proporciona todos, si bien, con OLE DB y ODBC, podemos acceder a la inmensa totalidad de ellos.

Sin embargo, hay muchos motores de bases de datos de igual importancia como Oracle, MySql, AS/400, etc. En estos casos, si queremos utilizar un proveedor de acceso a datos nativo, deberemos acudir al fabricante o a empresas o iniciativas particulares para que nos proporcionen el conjunto de clases necesarias que nos permitan abordar esta acción.

El objeto Connection

Este objeto es el encargado de establecer una conexión física con una base de datos determinada. Para establecer la conexión con una determinada fuente de datos, no sólo debemos establecer la cadena de conexión correctamente, sino que además deberemos usar los parámetros de conexión y el proveedor de acceso a datos adecuado. Con este objeto, podremos además abrir y cerrar una conexión.

El objeto Command

Este objeto es el que representa una determinada sentencia SQL o un Stored Procedure. Aunque no es obligatorio su uso, en caso de necesitarlo, lo utilizaremos conjuntamente con el objeto DataAdapter que es el encargado de ejecutar la instrucción indicada.

El objeto DataAdapter

Este objeto es quizás el objeto más complejo y a la vez complicado de todos los que forman parte de un proveedor de acceso a datos en .NET. Cuando deseamos establecer una comunicación entre una fuente de datos y un DataSet, utilizamos como intermediario a un objeto DataAdapter. A su vez, un DataAdapter contiene 4 objetos que debemos conocer:

SelectCommand es el objeto encargado de realizar los trabajos de selección de datos con una fuente de datos dada. En sí, es el que se encarga de devolver y rellenar los datos de una fuente de datos a un DataSet.

DeleteCommand es el objeto encargado de realizar las acciones de borrado de datos.

InsertCommand es el objeto encargado de realizar las acciones de inserción de datos.

UpdateCommand es el objeto encargado de realizar las acciones de actualización de datos.

Los objetos DeleteCommand, InsertCommand y UpdateCommand son los objetos que se utilizan para manipular y transmitir datos de una fuente de datos determinada, al contrario del objeto SelectCommand que tan sólo interactúa con la fuente de datos para recuperar una porción o todos los datos indicados en el objeto Command anteriormente comentado.

Page 47: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

El objeto DataReaderEste objeto es el utilizado en una sola dirección de datos.Se trata de un objeto de acceso a datos muy rápido.Este objeto puede usar a su vez el objeto Command o el método ExecuteReader.

El paradigma de la conexión 

El paradigma de la conexión

Cuando abordamos un proyecto de acceso a fuentes de datos, siempre nos encontramos con una duda existencial. ¿Debemos crear una conexión con la base de datos al principio de nuestra aplicación y cerrarla cuando la aplicación se cierre?, ¿o debemos crear una conexión con la base de datos sólo cuando vayamos a trabajar con la fuente de datos?. ¿Y si estamos trabajando continuamente con una fuente de datos?, ¿cómo penalizarían todas estas acciones?.

Es difícil de asumir que acción tomar en cada caso, y es que dependiendo de lo que vayamos a realizar, a veces es más efectiva una acción que otra, y en otras ocasiones, no está del todo claro, ya que no existe en sí una regla clara que especifique qué acción tomar en un momento dado.

Lo que sí está claro es que el modelo de datos de ADO.NET que hemos visto, quedaría resumido en cuanto a la conectividad de la manera en la que se representa en la figura 1.

Visión general de ADO.NET respecto a la conectividad con bases de datosFigura 1

Page 48: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

El objeto DataSet nos ofrece la posibilidad de almacenar datos, tablas y bases de datos de una determinada fuente de datos. De esta manera, podemos trabajar con las aplicaciones estando desconectados de la fuente de datos.

Sin embargo, a veces necesitamos trabajar con la fuente de datos estando conectados a ella. El objeto DataReader nos ofrece precisamente la posibilidad de trabajar con fuentes de datos conectadas.

Por otro lado, el objeto DataReader tiene algunas particularidades que conviene conocer y que veremos a continuación.

Conociendo el objeto DataReader 

Conociendo el objeto DataReader

El objeto DataReader nos permite como hemos indicado anteriormente, establecer una conexión con una fuente de datos y trabajar con esta fuente de datos sin desconectarnos de ella, sin embargo, hay diferentes cualidades y particularidades que conviene conocer.

DataReader es de solo lectura

Lo que hemos dicho anteriormente, requiere sin embargo, que esta conexión se establezca en un modo de sólo lectura, al contrario de lo que se puede hacer con el objeto DataSet, con el que podemos interactuar con la fuente de datos en modo lectura y modo escritura.

DataReader se maneja en una sola dirección

El objeto DataReader sólo permite que nos desplacemos por los datos en una sola dirección, sin vuelta atrás. Por el contrario, el objeto DataSet nos permite movernos por los registros para adelante y para atrás.

Page 49: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Además, sólo podemos utilizar el objeto DataReader con conexiones establecidas en una sentencia SQL por ejemplo, pero no podemos variar esta. Para hacerlo, debemos entonces modificar la conexión con el comando establecido.

DataReader es rápido

Debido a su naturaleza y características, este objeto es bastante rápido a la hora de trabajar con datos.Como es lógico, consume además menos memoria y recursos que un objeto DataSet por ejemplo.Sin embargo, dependiendo de las necesidades con las que nos encontremos, puede que este método de acceso y trabajo no sea el más idóneo.

Analizando el flujo de trabajo de DataReader

Cuando trabajamos con fuentes de datos conectadas, trabajaremos con el objeto DataReader.Para trabajar con este objeto, utilizaremos los objetos siguientes del proveedor de acceso a datos:

Connection Command

DataReader

Un resumen gráfico de esto es lo que podemos ver en la figura 1.

El flujo de conectividad de DataReader

Acceso a datos

Lo primero que debe saber es que es necesario crear su base de datos en SQL con los siguientes tablas:

Page 50: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

AlumnoNotasAsignatura

Algo conocido para ustedes, por tanto no hay mucho que explicar de dichas tablas .

Configurando la fuente de datosTrabajar con fuentes de datos requiere como tarea inicial, que tengamos listo y preparado un origen de fuentes de datos válido.Para esta tarea, deberemos configurar la fuente de datos que vamos a utilizar, algo que vamos a aprender a hacer a continuación.

Configurando el origen de la fuente de datos

Iniciaremos una nueva aplicación Windows con Visual Studio 2005 y seleccionaremos el menú Datos > Mostrar orígenes de datos como se indica en la figura 1.

Menú para mostrar los orígenes de datos

En este punto, aparecerá una ventana como la que se muestra en la figura 2.

Page 51: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Ventana de orígenes de datosComo podemos apreciar, la ventana no tiene por defecto ningún origen de datos asignado, además, esta ventana inicialmente, no está anclada a ningún sitio del entorno.Para situarla en un lugar específico del entorno, haga clic sobre la ventana y arrástrela sobre la parte en la que desee situarla, como se indica por ejemplo, en la figura 3.

Page 52: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

La ventana orígenes de datos podemos situarla dónde deseemos dentro de Visual Studio 2005Figura 3En este punto, la ventana de orígenes de datos, quedará anclada en el entorno de desarrollo, como se muestra en la figura 4.

Page 53: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

La ventana orígenes de datos anclada en Visual Studio 2005Figura 4Cada uno, puede situar esta ventana dónde considere oportuno. En mi caso la he situado entre las ventanas del Explorador de soluciones y de Propiedades, pero podemos situarla dónde consideremos oportuno.Sobre la configuración del origen de datos, haga clic sobre la opción Agregar nuevo origen de datos... como se indica en la figura 5.

Opción para agregar un nuevo origen de datosFigura 5Aparecerá una ventana como la que se muestra en la figura 6 en la cuál indicaremos el lugar de dónde la aplicación obtendrá los datos, y que en nuestro caso será de una Base de datos.

Page 54: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Como tipo de origen de datos elegiremos una Base de datosFigura 6Una vez seleccionado la opción de Base de datos como tipo de origen de datos, presionaremos el botón Siguiente.En la siguiente ventana, elegiremos la conexión de la base de datos que vamos a utilizar, o presionaremos sobre el botón Nueva conexión... sino tenemos seleccionada la conexión que queremos utilizar.En la figura 7, podemos ver como hemos establecido la conexión con nuestra fuente de datos, que utilizaremos en nuestro ejemplo de creación de la aplicación de acceso a datos maestro detalle.

Page 55: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Ventana dónde elegimos la conexión de datosFigura 7A continuación, haremos clic en el botón Siguiente.En la nueva ventana que aparece ahora dentro del asistente para la creación del origen de datos, indicaremos el nombre de la cadena de conexión que crearemos. En nuestro caso, no modificaremos el nombre de la cadena de conexión, dejándola por defecto como se muestra en la figura 8.

Page 56: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Asignamos un nombre para el nombre de la cadena de conexiónFigura 8A continuación, haremos clic sobre el botón Siguiente.En este punto, el asistente se conecta a la base de datos para recuperar la información de la base de datos y mostrarla en la ventana del asistente como se muestra en la figura 9.

Page 57: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Ventana con los objetos de la base de datos seleccionadaFigura 9A continuación, despliegue el objeto Tablas y seleccione las tablas Alquileres y Socios como se indica en la figura 10.

Page 58: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Selección de los objetos de la base de datos seleccionadaFigura 10Una vez que hemos seleccionado los objetos de la base de datos, haremos clic sobre el botón Finalizar para que el asistente concluya las opciones añadidas al asistente.La ventana del origen de datos, quedará ahora configurado de una forma similar a la que se presenta en la figura 11.

Ventana de origen de datos con la configuración añadidaA partir de aquí, deberemos preparar las tablas del origen de datos para que se comporten como auténticos datos e informaciones maestro detalle.

Nota: Este tipo de conectividad por muy sencilla que sea no será utilizda por que el objetivo de éste módulo es programar nuestra aplicación a nuestro gusto y esto es sólo con asistente Ahora vamos a lo nuestro

Page 59: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Luego de haber creado nuestras tablas es necesario que creemos un formulario para tener acceso a los datos de la tabla, debemos tener una caja de texto para cada tabla, la tabla que vamos a utilizar es la tabla Alumnos, más o menos así:

El código es el siguiente:

OjoNo ir a la pestaña código ni tampoco agregar estas instrucciones<script runat ="server"></script>Ahora bien has doble sobre el fondo del formulario lo cual te llevará al espacio del nombre del formulario.ASPX.VB , escribe el siguiente código que servirá para el enlace a la base de datos y a la tabla que hemos creado previamente.

Imports System.DataImports System.Data.SqlClient

Partial Class autenticar Inherits System.Web.UI.Page Dim base As New SqlConnection("Data Source=LAB318;Initial Catalog=almanza;Integrated Security=True") Dim ada As New SqlDataAdapter Dim tabla As New DataSet Dim r As DataRow Dim i As Integer = 0 Dim info As String Dim cmd As New SqlCommand

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.base.Open() Me.ada = New SqlDataAdapter("SELECT * FROM alumnos", Me.base) Me.base.Close()

Me.ada.Fill(Me.tabla, "alumnos") Me.r = Me.tabla.Tables("alumnos").Rows(i)

Page 60: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Me.txtid.Text = Me.r("carnet") Me.txtnombre.Text = Me.r("nombre")

Me.txtapellido.Text = Me.r("apellido") Me.txtedad.Text = Me.r("edad")

Me.txtdir.Text = Me.r("direccion") End Sub

Private Sub bprimero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bprimero.Click i = 0

Me.r = Me.tabla.Tables("alumnos").Rows(i) Me.txtid.Text = Me.r("carnet") Me.txtnombre.Text = Me.r("nombre")

Me.txtapellido.Text = Me.r("apellido") Me.txtedad.Text = Me.r("edad")

Me.txtdir.Text = Me.r("direccion")

End Sub

Private Sub bultimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bultimo.Click i = Me.tabla.Tables("alumnos").Rows.Count - 1

Me.r = Me.tabla.Tables("alumnos").Rows(i) Me.txtid.Text = Me.r("carnet") Me.txtnombre.Text = Me.r("nombre")

Me.txtapellido.Text = Me.r("apellido") Me.txtedad.Text = Me.r("edad")

Me.txtdir.Text = Me.r("direccion")

End Sub

Private Sub bagregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bagregar.Click Me.info = ""

Me.txtid.Text = "" Me.txtnombre.Text=""

Me.txtapellido.Text ="" Me.txtedad.Text =""

Me.txtdir.Text =""

Private Sub bguardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bguardar.Click Me.cmd = New SqlCommand

If Me.info <> "" Then 'editando

With Me.cmd .Connection = Me.base .CommandType = CommandType.Text .CommandText = "UPDATE alumnos SET carnet = '" & Me.txtcarnet.Text & "', nombre = '" & Me.txtnombre.Text & "', apellido = '" & Me.txtapellido.Text & "', edad = '" & Me.txtedad.Text & "', direccion = '" & Me.txtdireccion.Text & "' WHERE carnet = '" & Me.info & "'"

Me.base.Open() .ExecuteNonQuery() Me.base.Close() End With

Page 61: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Me.base.Open() Me.ada = New SqlDataAdapter("SELECT * FROM alumnos", Me.base) Me.base.Close()

Me.ada.Fill(Me.tabla, "alumnos") Me.r = Me.tabla.Tables("alumnos").Rows(i)

Me.txtid.Text = Me.r("carnet") Me.txtnombre.Text = Me.r("nombre")

Me.txtapellido.Text = Me.r("apellido") Me.txtedad.Text = Me.r("edad")

Me.txtdir.Text = Me.r("direccion")

Me.info = 0

Else 'guardando

With cmd .Connection = Me.base .CommandType = CommandType.Text .CommandText = "INSERT INTO alumnos (carnet, nombre, apellido,edad,direccion)VALUES('" & Me.txtcarnet.Text & "', '" & Me.txtnombre.Text & "', '" & Me.txtapellido.Text & "', '" & Me.txtedad.Text & "','" & Me.txtdir.Text & "')"

Me.base.Open() Try .ExecuteNonQuery() Catch ex As Exception MsgBox("Error. Persona con el carnet " & Me.txtid.Text & " ya esta registrado en el sistema", MsgBoxStyle.Critical) base.Close() Exit Sub End Try

Me.base.Close()

MsgBox("Datos agregados correctamente", MsgBoxStyle.Exclamation)

Me.tabla.Clear()

Me.base.Open() Me.ada = New SqlDataAdapter("SELECT * FROM alumnos", Me.base) Me.base.Close()

Me.ada.Fill(Me.tabla, "alumnos") Me.r = Me.tabla.Tables("alumnos").Rows(i)

Me.txtid.Text = Me.r("carnet") Me.txtnombre.Text = Me.r("nombre")

Me.txtapellido.Text = Me.r("apellido") Me.txtedad.Text = Me.r("edad")

Me.txtdir.Text = Me.r("direccion")

End With End If End Sub Private Sub banterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles banterior.Click If i <> 0 Then i = i - 1

Page 62: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Me.r = Me.tabla.Tables("alumnos").Rows(i) Me.txtid.Text = Me.r("carnet") Me.txtnombre.Text = Me.r("nombre")

Me.txtapellido.Text = Me.r("apellido") Me.txtedad.Text = Me.r("edad")

Me.txtdir.Text = Me.r("direccion")

End If End SubPrivate Sub bsiguiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bsiguiente.Click If i <> Me.tabla.Tables("alumnos").Rows.Count - 1 Then i = i + 1

Me.r = Me.tabla.Tables("alumnos").Rows(i) Me.txtid.Text = Me.r("carnet") Me.txtnombre.Text = Me.r("nombre")

Me.txtapellido.Text = Me.r("apellido") Me.txtedad.Text = Me.r("edad")

Me.txtdir.Text = Me.r("direccion")

End If End SubPrivate Sub bborrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bborrar.Click If MsgBox("Si borra este registro no podra deshacer los cambios. ¿Desea continuar?", MsgBoxStyle.DefaultButton2 Or MsgBoxStyle.YesNo Or MsgBoxStyle.Information) = MsgBoxResult.No Then Exit Sub Me.cmd = New SqlCommand

With Me.cmd .Connection = Me.base .CommandType = CommandType.Text .CommandText = "DELETE FROM alumnos WHERE id = '" & Me.txtid.Text & "'"

Me.base.Open() .ExecuteNonQuery() Me.base.Close() End With

i = i - 1 Me.r = Me.tabla.Tables("alumnos").Rows(i)

Me.txtid.Text = Me.r("carnet") Me.txtnombre.Text = Me.r("nombre")

Me.txtapellido.Text = Me.r("apellido") Me.txtedad.Text = Me.r("edad")

Me.txtdir.Text = Me.r("direccion")

End Sub

End Class

Page 63: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Tema 6

AGREGAR GRÁFICOS A UNA APLICACIÓN WEB

Campos de gráficos o de imágenes, se han convertido en elementos importantes de cualquier base de datos.

Para manejar este elemento con ADO ASP.net existen dos maneras:

1.- Agregar un campo BLOB a la tabla y usar componentes asp net especializados en imagenes tanto para subirlas como para desplegar la imagen.

Este metodo provoca que la base de datos crezca mucho recordar que una imagen aun de tipo jpg ocupa mucho espacio.

2.- El segundo método es mas sencillo, y es el que vamos a usar, primero subir las imágenes ( de preferencia jpg ) a tu sitio y después agregar un objeto asp net IMAGE en el programa y además agregar un campo de texto llamado foto a la tabla y grabar la direccion http de la imagen en este campo, si están juntos el aspx y el jpg se puede usar solo imagen.jpg directamente.

Después solo cargar este objeto asp IMAGE en la pagina que se construirá que no es otra cosa que el programa (que carga al menos el primer registro de la tabla) con el despliegue del campo extra, como lo muestra el programa ejemplo.

Los pasos son los siguientes:

1. Subir las imágenes a tu sitioClic derecho sobre el nombre de tu sitio y elige la opción “Agregar elemento existente”, busca las imágenes (fotos) que deseas visualizar

Page 64: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

3. El siguiente paso es agregar además de las cajas de texto un objeto Image web

4. Paso siguiente: Agregar en la tabla el nombre de la imagen que se desea visualizar, se supone que para cada registro hay una imagen

Objeto Image

Page 65: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Programa

Imports System.DataImports System.Data.SqlClient

Partial Class _Default Inherits System.Web.UI.Page Dim base As New SqlConnection("Data Source=LAB318;Initial Catalog=almanza;Integrated Security=True") Dim ada As New SqlDataAdapter Dim tabla As New DataSet Dim r As DataRow Dim i As Integer = 0 Dim info As String Dim cmd As New SqlCommand Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.base.Open() Me.ada = New SqlDataAdapter("SELECT * FROM estudiante", Me.base) Me.base.Close()

Me.ada.Fill(Me.tabla, "estudiante") Me.r = Me.tabla.Tables("estudiante").Rows(i) Me.txtid.Text = Me.r("Ncarnet") Me.txtnombre.Text = Me.r("nombre") Me.txtedad.Text = Me.r("edad") Me.txtdireccion.Text = Me.r("direccion")

Page 66: net 2005 programación web aspx para sistemas expertos

Visual .NET 2005

Me.txtfoto.Text = Me.r("foto") ' cargando el objeto IMAGE con el valor que se tiene en el campo foto de la tabla Image1.ImageUrl = tabla.Tables("estudiante").Rows(i)(6).ToString()

End Sub

Protected Sub bsiguiente_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bsiguiente.Click If i <> Me.tabla.Tables("estudiante").Rows.Count - 1 Then i = i + 1 Me.r = Me.tabla.Tables("estudiante").Rows(i) Me.txtid.Text = Me.r("Ncarnet") Me.txtnombre.Text = Me.r("nombre") Me.txtedad.Text = Me.r("edad") Me.txtdireccion.Text = Me.r("direccion") Me.txtfoto.Text = Me.r("foto") ' cargando el objeto IMAGE con el valor que se tiene en el campo foto de la tabla Image1.ImageUrl = tabla.Tables("estudiante").Rows(i)(6).ToString()

End If

End SubEnd Class